diff --git a/setup/easyengine b/setup/easyengine new file mode 100755 index 00000000..e13d5231 --- /dev/null +++ b/setup/easyengine @@ -0,0 +1,1419 @@ +#!/bin/bash + + +# Help Function +EngineHelp() +{ + echo + echo "Usage: `basename $0` [OPTION] [ARGUMENT]..." + + echo + echo "OPTION:" + echo " `basename $0` [system] [install|remove|purge] [nginx|php|mysql|pma|postfix|--all]" + + echo + echo " `basename $0` [site] [read] [available|enabled|sitename]" + echo " `basename $0` [site] [create] [sitename] [--with-wordpress]" + echo " `basename $0` [site] [update] [sitename] [singlesite] [w3total|wpsuper|fastcgi]" + echo " `basename $0` [site] [update] [sitename] [multisite] [subdomain|subdirectory] [basic|w3total|wpsuper|fastcgi]" + echo " `basename $0` [site] [delete] [sitename] [--database|--webroot|--all]" + + echo + echo " `basename $0` [config] [set|get] [memory|timeout]" + + echo + echo " `basename $0` [update] " + + echo + echo "Exit status:" + echo " 0 if OK," + echo " 100 sudo privilege required," + echo " 101 command failed to execute," +} + + +# Make Variables Available For Later Use +LOGDIR=/var/log/easyengine +ERRORLOG=/var/log/easyengine/error.log + + +# Capture Errors +OwnError() +{ + echo -e "[ `date` ] \033[31m $@ \e[0m" | tee -ai $ERRORLOG + exit 101 +} + +# Install Package Functions +PYTHONSOFTWARE() +{ + # Install Python Software Properties + echo -e "\033[34m Installing Python Software Properties... \e[0m" + sudo apt-get -y install python-software-properties \ + || OwnError "Unable To Install Python Software Properties" +} + +NGINXREPO() +{ + # Add Nginx Launchpad Repository + echo -e "\033[34m Adding Brianmercer Nginx Launchpad Repository... \e[0m" + sudo add-apt-repository ppa:brianmercer/nginx \ + || OwnError "Unable To Add Nginx Launchpad Repository" +} + +PHPREPO() +{ + # Add PHP Launchpad Repository + echo -e "\033[34m Adding PHP5 Launchpad Repository... \e[0m" + sudo add-apt-repository ppa:ondrej/php5 \ + || OwnError "Unable To Add PHP5 Launchpad Repository" +} + +GPGKEY() +{ + if [ -f ~/.gpgkeyfix ] + then + # Fix GPG Key Problems + echo -e "\033[34m Checking GPG Keys For Brianmercer Nginx Repository... \e[0m" + sudo apt-get update > /dev/null 2> /tmp/keymissing \ + || OwnError "Unable To Fix GPG Keys For Brianmercer Nginx Repository " + + for key in $(grep "NO_PUBKEY" /tmp/keymissing |sed "s/.*NO_PUBKEY //") + do + echo -e "\033[34m Processing key: $key \e[0m" + gpg --keyserver subkeys.pgp.net --recv $key && sudo gpg --export --armor $key | apt-key add - + done + fi +} + +UPDATEAPT() +{ + # Update The APT Cache + echo -e "\033[34m Updating APT Cache... \e[0m" + sudo apt-get update || OwnError "Unable To Update APT Cache" +} + +INSTALLNGINX() +{ + # Install Nginx + echo -e "\033[34m Installing Nginx... \e[0m" + sudo apt-get -y install nginx-custom || OwnError "Unable To Install Nginx" +} + +COMMONNGINX() +{ + # Personal Settings For Nginx + echo -e "\033[34m Updating Nginx Configuration Files... \e[0m" + # Check Directory Exist + if [ ! -d /etc/nginx/conf.d ] + then + mkdir /etc/nginx/conf.d || OwnError "Unable To Create /etc/nginx/conf.d" + fi + + if [ ! -d /etc/nginx/common ] + then + mkdir /etc/nginx/common || OwnError "Unable To Create /etc/nginx/common" + fi + + # Update Nginx Configuration Files + cp -v /usr/share/easyengine/nginx/conf.d/* /etc/nginx/conf.d/ \ + || OwnError "Unable To Copy Nginx Configuration Files" + + # Update Nginx Common Files + cp -v /usr/share/easyengine/nginx/common/* /etc/nginx/common/ \ + || OwnError "Unable To Copy Nginx Common Files" +} + +EEGITINIT() +{ + # Initialise Git + echo -e "\033[34m Initialise Git On $EEGITDIR... \e[0m" + cd $EEGITDIR + git init + git add . + git commit -am "Initialise Git On $EEGITDIR" +} + +INSTALLPHP() +{ + # Install PHP5 + echo -e "\033[34m Installing PHP5... \e[0m" + sudo apt-get -y install php5-common php5-mysql php5-xmlrpc \ + php5-cgi php5-curl php5-gd php5-cli php5-fpm php-apc php-pear \ + php5-dev php5-imap php5-mcrypt || OwnError "Unable To Install PHP5" +} + +CHANGEPHPSOCKET() +{ + # Change PHP Fastcgi Socket + sed -i "s'listen = /var/run/php5-fpm.sock'listen = 127.0.0.1:9000'" /etc/php5/fpm/pool.d/www.conf +} + +INSTALLMYSQL() +{ + # Install MySQL + echo -e "\033[34m Installing MySQL... \e[0m" + sudo apt-get -y install mysql-server mysqltuner \ + || OwnError "Unable To Install MySQL" +} + +INSTALLPMA() +{ + # Check PMA Directory Exist + #if [ ! -d /var/www/pma ] + #then + # mkdir -p /var/www/pma || OwnError "Unable To Create /var/www/pma Directory" + #fi + + # Download PMA + #wget -O /var/www/pma/pma.tar.gz -c http://downloads.sourceforge.net/project/phpmyadmin/phpMyAdmin/4.0.3/phpMyAdmin-4.0.3-all-languages.tar.gz \ + #|| OwnError "Unable To Download PMA" + + # Extract PMA + #cd /var/www/pma + #tar --strip-components=1 -zxvf pma.tar.gz + + # Call NGINXUSERINFO Function For NGINX User Details + #NGINXUSERINFO + + # Change Ownership + #echo -e "\033[34m Changing Ownership \e[0m" + #chown -R $NGINXUSER:$NGINXUSER /var/www/pma + + # Install PMA + echo -e "\033[34m Installing PMA... \e[0m" + sudo apt-get -y install phpmyadmin \ + || OwnError "Unable To Install PMA" +} + +INSTALLPOSTFIX() +{ + # Install Postfix + echo -e "\033[34m Installing Postfix... \e[0m" + sudo apt-get -y install postfix || OwnError "Unable To Install Postfix" +} + +INSTALLALL() +{ + # Install Nginx PHP5 MySQL Postfix + echo -e "\033[34m Installing Nginx PHP5 MySQL Postfix... \e[0m" + sudo apt-get -y install nginx-custom php5-common php5-mysql php5-xmlrpc \ + php5-cgi php5-curl php5-gd php5-cli php5-fpm php-apc php-pear \ + php5-dev php5-imap php5-mcrypt mysql-server mysqltuner phpmyadmin postfix \ + || OwnError "Unable To Install Nginx PHP5 MySQL Postfix" +} + +WP-CLI() +{ + # Install WP-CLI + if [ ! -d /root/wp-cli ] + then + echo -e "\033[31m WP Command Not Found ! \e[0m" + echo -e "\033[34m Installing WP-CLI, Please Wait... \e[0m" + git clone git://github.com/wp-cli/wp-cli.git /root/wp-cli + sudo /root/wp-cli/utils/dev-build || OwnError "Unable To Build WP-CLI" + fi +} + + +# Remove Package Functions +REMOVENGINX() +{ + # Remove Nginx + echo -e "\033[34m Removing Nginx... \e[0m" + sudo apt-get -y remove nginx-custom || OwnError "Unable To Remove Nginx" +} + +REMOVEPHP() +{ + # Remove PHP5 + echo -e "\033[34m Removing PHP5... \e[0m" + sudo apt-get -y remove php5-common php5-mysql php5-xmlrpc \ + php5-cgi php5-curl php5-gd php5-cli php5-fpm php-apc php-pear \ + php5-dev php5-imap php5-mcrypt || OwnError "Unable To Remove PHP5" +} + +REMOVEMYSQL() +{ + # Remove MySQL + echo -e "\033[34m Removing MySQL... \e[0m" + sudo apt-get -y remove mysql-server mysqltuner \ + || OwnError "Unable To Remove MySQL" +} + +REMOVEPMA() +{ + # Remove PMA + echo -e "\033[34m Installing PMA... \e[0m" + sudo apt-get -y remove phpmyadmin \ + || OwnError "Unable To Remove PMA" +} + +REMOVEPOSTFIX() +{ + # Remove Postfix + echo -e "\033[34m Removing Postfix... \e[0m" + sudo apt-get -y remove postfix || OwnError "Unable To Remove Postfix" +} + +REMOVEALL() +{ + # Remove Nginx PHP5 MySQL Postfix + echo -e "\033[34m Removing Nginx PHP5 MySQL Postfix... \e[0m" + sudo apt-get -y remove nginx-custom php5-common php5-mysql php5-xmlrpc \ + php5-cgi php5-curl php5-gd php5-cli php5-fpm php-apc php-pear \ + php5-dev php5-imap php5-mcrypt mysql-server mysqltuner phpmyadmin postfix \ + || OwnError "Unable To Remove Nginx PHP5 MySQL Postfix" +} + +REMOVEWPCLI() +{ + # Remove WP-CLI + echo -e "\033[34m Removing WP-CLI... \e[0m" + sudo rm -rf /root/wp-cli || OwnError "Unable To Remove WP-CLI" +} + +AUTOREMOVE() +{ + # Remove Unwanted Packages + echo -e "\033[34m Removing Unwanted Packages... \e[0m" + sudo apt-get -y autoremove || OwnError "Unable To Auto Remove" +} + + +# Purge Package Functions +PURGENGINX() +{ + # Purge Nginx + echo -e "\033[34m Purge Nginx... \e[0m" + sudo apt-get -y purge nginx-custom || OwnError "Unable To Purge Nginx" +} + +PURGEPHP() +{ + # Purge PHP5 + echo -e "\033[34m Purge PHP5... \e[0m" + sudo apt-get -y purge php5-common php5-mysql php5-xmlrpc \ + php5-cgi php5-curl php5-gd php5-cli php5-fpm php-apc php-pear \ + php5-dev php5-imap php5-mcrypt || OwnError "Unable To Purge PHP5" +} + +PURGEMYSQL() +{ + # Purge MySQL + echo -e "\033[34m Purge MySQL... \e[0m" + sudo apt-get -y purge mysql-server mysqltuner \ + || OwnError "Unable To Purge MySQL" +} + +PURGEPMA() +{ + # Purge PMA + echo -e "\033[34m Installing PMA... \e[0m" + sudo apt-get -y purge phpmyadmin \ + || OwnError "Unable To Purge PMA" +} + +PURGEPOSTFIX() +{ + # Purge Postfix + echo -e "\033[34m Purge Postfix... \e[0m" + sudo apt-get -y purge postfix || OwnError "Unable To Purge Postfix" +} + +PURGEALL() +{ + # Purge Nginx PHP5 MySQL Postfix + echo -e "\033[34m Removing Nginx PHP5 MySQL Postfix... \e[0m" + sudo apt-get -y purge nginx-custom php5-common php5-mysql php5-xmlrpc \ + php5-cgi php5-curl php5-gd php5-cli php5-fpm php-apc php-pear \ + php5-dev php5-imap php5-mcrypt mysql-server mysqltuner phpmyadmin postfix \ + || OwnError "Unable To Purge Nginx PHP5 MySQL Postfix" +} + + +# GET Information Function +MYSQLINFO() +{ + # Get The MySQL Username/Password + read -p "MySQL Host [localhost]: " MYSQLHOST + + if [ -f ~/.my.cnf ] + then + MYSQLUSER=$(cat ~/.my.cnf | grep user | cut -d'=' -f2) + MYSQLPASS=$(cat ~/.my.cnf | grep pass | cut -d'=' -f2) + else + read -p "Enter The MySQL Username: " MYSQLUSER + + # Turn Off Echo For Passwords + stty -echo + read -p "Enter The MySQL Password: " MYSQLPASS + stty echo + echo + fi + + read -p "Enter The MySQL Database Name [$DOMAIN]: " WPDBNAME + + # If Enter Is Pressed, Then Use localhost as MySQL Host + if [[ $MYSQLHOST = "" ]] + then + MYSQLHOST=localhost + #echo $MYSQLHOST + fi + + # If Enter Is Pressed, Then Use $DOMAIN As Database Name + if [[ $WPDBNAME = "" ]] + then + WPDBNAME=$DOMAIN + #echo $WPDBNAME + fi + + # Create Database + mysql -u $MYSQLUSER -p$MYSQLPASS -e "create database \`$WPDBNAME\`" \ + || OwnError "Unable To Create $WPDBNAME Database" +} + +NGINXUSERINFO() +{ + # Nginx User + NGINXUSER=$(grep user /etc/nginx/nginx.conf | cut -d' ' -f2 | cut -d';' -f1) \ + || OwnError "Unable To Findout Nginx Username" +} + +NGINXRELOAD() +{ + # Test & Reload Nginx + echo -e "\033[34m Reloading Nginx Configuration, Please Wait... \e[0m" + nginx -t && service nginx reload || OwnError "Unable To Reload Nginx" +} + +PHPRELOAD() +{ + # Reload PHP + echo -e "\033[34m Reloading PHP5-FPM Configuration, Please Wait... \e[0m" + service php5-fpm reload || OwnError "Unable To Reload PHP5-FPM" +} + +PHPSTART() +{ + # Check PHP5-FPM IS Running + service php5-fpm status + + if [ $? -ne 0 ] + then + echo -e "\033[34m Restarting PHP5-FPM, Please Wait... \e[0m" + service php5-fpm start || OwnError "Unable To Restart PHP5-FPM" + fi +} + + + +# Easy Engine System Settings +if [ "$1" = "system" ] +then + + # Easy Engine Install + if [ "$2" = "install" ] + then + + if [ "$3" = "nginx" ] + then + + # Install Python Software Properties + PYTHONSOFTWARE + + # Add Nginx Launchpad Repository + NGINXREPO + + # Fix GPG Key Problems + GPGKEY + + # Update The APT Cache + UPDATEAPT + + # Install Nginx + INSTALLNGINX + + # Personal Settings For Nginx + COMMONNGINX + + # Reload Nginx To Take Effect Of COMMONNGINX Functions + NGINXRELOAD + + # Initialise Git + EEGITDIR=/etc/nginx/ + EEGITINIT + + # Display Success Message + echo -e "\033[34m Nginx Successfully Installed \e[0m" + + elif [ "$3" = "php" ] + then + + # Install Python Software Properties + PYTHONSOFTWARE + + # Add PHP Launchpad Repository + PHPREPO + + # Fix GPG Key Problems + GPGKEY + + # Update The APT Cache + UPDATEAPT + + # Install PHP5 + INSTALLPHP + + # Change PHP Fastcgi Socket + CHANGEPHPSOCKET + + ## Reload PHP To Take Effect Of CHANGEPHPSOCKET Functions + PHPRELOAD + + # Install WP-CLI + WP-CLI + + # Initialise Git + EEGITDIR=/etc/php5/ + EEGITINIT + + # Display Success Message + echo -e "\033[34m PHP5 Successfully Installed \e[0m" + + elif [ "$3" = "mysql" ] + then + + # Update The APT Cache + UPDATEAPT + + # Install MySQL + INSTALLMYSQL + + # Initialise Git + EEGITDIR=/etc/mysql/ + EEGITINIT + + # Display Success Message + echo -e "\033[34m MySQL Successfully Installed \e[0m" + + elif [ "$3" = "pma" ] + then + + # Update The APT Cache + UPDATEAPT + + # Install PMA + INSTALLPMA + + # Initialise Git + EEGITDIR=/etc/phpmyadmin/ + EEGITINIT + + # Display Success Message + echo -e "\033[34m PMA Successfully Installed \e[0m" + + elif [ "$3" = "postfix" ] + then + + # Update The APT Cache + UPDATEAPT + + # Install Postfix + INSTALLPOSTFIX + + # Initialise Git + EEGITDIR=/etc/postfix/ + EEGITINIT + + # Display Success Message + echo -e "\033[34m Postfix Successfully Installed \e[0m" + + elif [ "$3" = "--all" ] + then + + # Install Python Software Properties + PYTHONSOFTWARE + + # Add Nginx Launchpad Repository + NGINXREPO + + # Add PHP Launchpad Repository + PHPREPO + + # Fix GPG Key Problems + GPGKEY + + # Update The APT Cache + UPDATEAPT + + # Install Nginx PHP5 MySQL PMA Postfix + INSTALLALL + + # Personal Settings For Nginx + COMMONNGINX + + # Reload Nginx To Take Effect Of COMMONNGINX Functions + NGINXRELOAD + + # Change PHP Fastcgi Socket + CHANGEPHPSOCKET + + ## Reload PHP To Take Effect Of CHANGEPHPSOCKET Functions + PHPRELOAD + + # Install WP-CLI + WP-CLI + + # Initialise Git + EEGITDIR=/etc/nginx/ + EEGITINIT + + # Initialise Git + EEGITDIR=/etc/php5/ + EEGITINIT + + # Initialise Git + EEGITDIR=/etc/mysql/ + EEGITINIT + + # Initialise Git + EEGITDIR=/etc/phpmyadmin/ + EEGITINIT + + # Initialise Git + EEGITDIR=/etc/postfix/ + EEGITINIT + + # Display Success Message + echo -e "\033[34m Nginx PHP5 MySQL PMA Postfix Successfully Installed \e[0m" + + else + EngineHelp + fi + + + # Easy Engine Remove + elif [ "$2" = "remove" ] + then + + if [ "$3" = "nginx" ] + then + + # Remove Nginx + REMOVENGINX + + # Remove Unwanted Packages + AUTOREMOVE + + # Display Success Message + echo -e "\033[34m Nginx Successfully Removed \e[0m" + + elif [ "$3" = "php" ] + then + + # Remove PHP5 + REMOVEPHP + REMOVEWPCLI + + # Remove Unwanted Packages + AUTOREMOVE + + # Display Success Message + echo -e "\033[34m PHP5 Successfully Removed \e[0m" + + elif [ "$3" = "mysql" ] + then + + # Remove MySQL + REMOVEMYSQL + + # Remove Unwanted Packages + AUTOREMOVE + + # Display Success Message + echo -e "\033[34m MySQL Successfully Removed \e[0m" + + elif [ "$3" = "pma" ] + then + + # Remove PMA + REMOVEPMA + + # Remove Unwanted Packages + AUTOREMOVE + + # Display Success Message + echo -e "\033[34m PMA Successfully Removed \e[0m" + + elif [ "$3" = "postfix" ] + then + + # Remove Postfix + REMOVEPOSTFIX + + # Remove Unwanted Packages + AUTOREMOVE + + # Display Success Message + echo -e "\033[34m Postfix Successfully Removed \e[0m" + + elif [ "$3" = "--all" ] + then + + # Remove Nginx PHP5 MySQL Postfix + REMOVEALL + + # Remove Unwanted Packages + AUTOREMOVE + + # Display Success Message + echo -e "\033[34m Nginx PHP5 MySQL PMA Postfix Successfully Removed \e[0m" + + else + EngineHelp + fi + + + # Easy Engine Purge + elif [ "$2" = "purge" ] + then + + if [ "$3" = "nginx" ] + then + + # Purge Nginx + PURGENGINX + + # Remove Unwanted Packages + AUTOREMOVE + + # Display Success Message + echo -e "\033[34m Nginx Successfully Purged \e[0m" + + elif [ "$3" = "php" ] + then + + # Purge PHP5 + PURGEPHP + REMOVEWPCLI + + # Remove Unwanted Packages + AUTOREMOVE + + # Display Success Message + echo -e "\033[34m PHP5 Successfully Purged \e[0m" + + elif [ "$3" = "mysql" ] + then + + # Purge MySQL + PURGEMYSQL + + # Remove Unwanted Packages + AUTOREMOVE + + # Display Success Message + echo -e "\033[34m MySQL Successfully Purged \e[0m" + + elif [ "$3" = "pma" ] + then + + # Purge PMA + PURGEPMA + + # Remove Unwanted Packages + AUTOREMOVE + + # Display Success Message + echo -e "\033[34m PMA Successfully Purged \e[0m" + + elif [ "$3" = "postfix" ] + then + + # Purge Postfix + PURGEPOSTFIX + + # Remove Unwanted Packages + AUTOREMOVE + + # Display Success Message + echo -e "\033[34m Postfix Successfully Purged \e[0m" + + elif [ "$3" = "--all" ] + then + + # Purge Nginx PHP5 MySQL Postfix + PURGEALL + + # Remove Unwanted Packages + AUTOREMOVE + + # Display Success Message + echo -e "\033[34m Nginx PHP5 MySQL PMA Postfix Successfully Purged \e[0m" + + else + EngineHelp + fi + + + # Easy Engine Help + else + EngineHelp + fi + + + +# Easy Engine Site Settings +elif [ "$1" = "site" ] +then + + # Easy Engine Read + if [ "$2" = "read" ] + then + + if [ "$3" = "available" ] + then + + # Display The List Of Available Sites + echo -e "\033[34m List Of Available Websites \e[0m" + ls /etc/nginx/sites-available/ \ + || OwnError "Unable To Display The List Of Available Websites" + + elif [ "$3" = "enabled" ] + then + + # Display The List Of Enabled Sites + echo -e "\033[34m List Of Enabled Websites \e[0m" + ls /etc/nginx/sites-enabled/ \ + || OwnError "Unable To Display The List Of Enabled Websites" + + elif [ "$3" != "all" ] && [ "$3" != "active" ] && [ -n "$3" ] + then + + # Check The Website Is Exist + ls /etc/nginx/sites-available/$3 &> /dev/null \ + || OwnError "The $3 Is Not Found In Available Websites List" + if [ $? -eq 0 ] + then + + # Display The Specific Site Configuration + echo -e "\033[34m Display The $3 Configuration Settings \e[0m" + cat /etc/nginx/sites-available/$3 \ + || OwnError "Unable To Display The $3 Configuration Settings" + fi + + else + EngineHelp + + fi + + + # Easy Engine Create + elif [ "$2" = "create" ] + then + + if [ -n "$3" ] + then + + # Remove http:// https:// & www. + DOMAIN=$(echo $3 | tr 'A-Z' 'a-z' | sed "s'http://''" | sed "s'https://''" | sed "s'www.''") + + # Creating Site + echo -e "\033[34m Creating $DOMAIN, Please Wait... \e[0m" + sed "s/example.com/$DOMAIN/g" \ + /usr/share/easyengine/nginx/singlesite/basic.conf \ + > /etc/nginx/sites-available/$DOMAIN \ + || OwnError "Unable To Create Configuration File For $DOMAIN" + + # Creating Symbolic Link + echo -e "\033[34m Creating Symbolic Link \e[0m" + ln -s /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/ \ + || OwnError "Unable To Create Symbolic Link For $DOMAIN" + + # Creating Htdocs & Logs Directory + echo -e "\033[34m Creating htdocs & logs Directory \e[0m" + (mkdir -p /var/www/$DOMAIN/htdocs; mkdir -p /var/www/$DOMAIN/logs) \ + || OwnError "Unable To Create htdocs & logs Directory" + + # Creating Symbolic Links For Logs + echo -e "\033[34m Creating Symbolic Link For Logs \e[0m" + ln -s /var/log/nginx/$DOMAIN.access.log /var/www/$DOMAIN/logs/access.log \ + && ln -s /var/log/nginx/$DOMAIN.error.log /var/www/$DOMAIN/logs/error.log \ + || OwnError "Unable To Create Symbolic Link For $DOMAIN Logs" + + + if [ "$4" = "--with-wordpress" ] + then + + # Download Latest Wordpress + echo -e "\033[34m Downloading WordPress \e[0m" + wget -cO /var/www/$DOMAIN/htdocs/latest.tar.gz \ + http://wordpress.org/latest.tar.gz + + # Extracting Wordpress + tar --strip-components=1 -zxf /var/www/$DOMAIN/htdocs/latest.tar.gz \ + -C /var/www/$DOMAIN/htdocs/ + + # Removing Wordpress Archive + rm /var/www/$DOMAIN/htdocs/latest.tar.gz + + # Call MYSQLINFO Function For MySQL Values + MYSQLINFO + + # Modify wp-config.php & Move Outside The Webroot + cp -v /var/www/$DOMAIN/htdocs/wp-config-sample.php \ + /var/www/$DOMAIN/wp-config.php + + sed -i "s/database_name_here/$WPDBNAME/" \ + /var/www/$DOMAIN/wp-config.php + + sed -i "s/username_here/$MYSQLUSER/" \ + /var/www/$DOMAIN/wp-config.php + + sed -i "s/password_here/$MYSQLPASS/" \ + /var/www/$DOMAIN/wp-config.php + + sed -i "s/localhost/$MYSQLHOST/" \ + /var/www/$DOMAIN/wp-config.php + + printf '%s\n' "g/put your unique phrase here/d" \ + a "$(curl -L https://api.wordpress.org/secret-key/1.1/salt/)" . w \ + | ed -s /var/www/$DOMAIN/wp-config.php + + fi + + # Call NGINXUSERINFO Function For NGINX User Details + NGINXUSERINFO + + # Change Ownership + echo -e "\033[34m Changing Ownership \e[0m" + #echo $NGINXUSER $DOMAIN + chown -R $NGINXUSER:$NGINXUSER /var/www/$DOMAIN/ + + # Reload Nginx Configuration + NGINXRELOAD + + # Start PHP-FPM If Not Running + PHPSTART + + # Display Success Message + echo -e "\033[34m http://$DOMAIN Domain Successfully Created \e[0m" + + else + EngineHelp + fi + + + # Easy Engine Update + elif [ "$2" = "update" ] + then + + if [ -n "$3" ] + then + + # Remove http:// https:// & www. + DOMAIN=$(echo $3 | tr 'A-Z' 'a-z' | sed "s'http://''" | sed "s'https://''" | sed "s'www.''") + + # Make Backup Directory For Storing Older Nginx Configurations + if [ ! -d /etc/nginx/sites-available/backups/ ] + then + mkdir -p /etc/nginx/sites-available/backups/ + fi + + if [ "$4" = "singlesite" ] + then + + if [ "$5" = "w3total" ] + then + + # Taking Backup + mv /etc/nginx/sites-available/$DOMAIN \ + /etc/nginx/sites-available/backups/$DOMAIN.$(date +%d%m%Y.%H%M%S) + + # Updating Site + echo -e "\033[34m Updating $DOMAIN For W3TotalCache, Please Wait... \e[0m" + sed "s/example.com/$DOMAIN/g" \ + /usr/share/easyengine/nginx/singlesite/w3-total-cache.conf \ + > /etc/nginx/sites-available/$DOMAIN \ + || OwnError "Unable To Update Configuration File For $DOMAIN" + + # Installing W3 Total Cache + cd /var/www/$DOMAIN/htdocs/ + wp plugin install w3-total-cache || OwnError "Unable To Install W3 Total Cache Plugin" + + # Activate W3 Total Cache + wp plugin activate w3-total-cache || OwnError "Unable To Activate W3 Total Cache Plugin" + + # Call NGINXUSERINFO Function For NGINX User Details + NGINXUSERINFO + + # Give Ownership To $NGINXUSER + chown -R $NGINXUSER:$NGINXUSER /var/www/$DOMAIN/ + + # Display W3 Total Cache URL For Settings + echo -e "\033[34m Please Configure W3 Total Cache Settings \e[0m" + echo -e "\033[34m W3 Total Cache: http://$DOMAIN/wp-admin/admin.php?page=w3tc_general \e[0m" + + # Reload Nginx Configuration + NGINXRELOAD + + # Display Success Message + echo -e "\033[34m Nginx Configuration For $DOMAIN Is Successfully Updated \e[0m" + + elif [ "$5" = "wpsuper" ] + then + + # Taking Backup + mv /etc/nginx/sites-available/$DOMAIN \ + /etc/nginx/sites-available/backups/$DOMAIN.$(date +%d%m%Y.%H%M%S) + + # Updating Site + echo -e "\033[34m Updating $DOMAIN For WPSuperCache, Please Wait... \e[0m" + sed "s/example.com/$DOMAIN/g" \ + /usr/share/easyengine/nginx/singlesite/wp-super-cache.conf \ + > /etc/nginx/sites-available/$DOMAIN \ + || OwnError "Unable To Update Configuration File For $DOMAIN" + + # Installing WP Super Cache + cd /var/www/$DOMAIN/htdocs/ + wp plugin install wp-super-cache || OwnError "Unable To Install WP Super Cache Plugin" + + # Activate WP Super Cache + wp plugin activate wp-super-cache || OwnError "Unable To Activate WP Super Cache Plugin" + + # Call NGINXUSERINFO Function For NGINX User Details + NGINXUSERINFO + + # Give Ownership To $NGINXUSER + chown -R $NGINXUSER:$NGINXUSER /var/www/$DOMAIN/ + + # Display W3 Total Cache URL For Settings + echo -e "\033[34m Please Configure WP Super Cache Settings \e[0m" + echo -ne "\033[34m WP Super Cache:\e[0m" + echo -e "\033[34m http://$DOMAIN/wp-admin/options-general.php?page=wpsupercache \e[0m" + + # Reload Nginx Configuration + NGINXRELOAD + + # Display Success Message + echo -e "\033[34m Nginx Configuration For $DOMAIN Is Successfully Updated \e[0m" + + elif [ "$5" = "fastcgi" ] + then + + # Taking Backup + mv /etc/nginx/sites-available/$DOMAIN \ + /etc/nginx/sites-available/backups/$DOMAIN.$(date +%d%m%Y.%H%M%S) + + # Updating Site + echo -e "\033[34m Updating $DOMAIN For Fastcgi Cache, Please Wait... \e[0m" + sed "s/example.com/$DOMAIN/g" \ + /usr/share/easyengine/nginx/singlesite/fastcgi-cache.conf \ + > /etc/nginx/sites-available/$DOMAIN \ + || OwnError "Unable To Update Configuration File For $DOMAIN" + + # Installing Nginx Helper + cd /var/www/$DOMAIN/htdocs/ + wp plugin install nginx-helper || OwnError "Unable To Install Nginx Helper" + + # Activate Nginx Helper + wp plugin activate nginx-helper || OwnError "Unable To Activate Nginx Helper Plugin" + + # Call NGINXUSERINFO Function For NGINX User Details + NGINXUSERINFO + + # Give Ownership To $NGINXUSER + chown -R $NGINXUSER:$NGINXUSER /var/www/$DOMAIN/ + + # Display W3 Total Cache URL For Settings + echo -e "\033[34m Please Configure Nginx Helper Settings \e[0m" + echo -e "\033[34m Nginx Helper: http://$DOMAIN/wp-admin/options-general.php?page=nginx \e[0m" + + # Reload Nginx Configuration + NGINXRELOAD + + # Display Success Message + echo -e "\033[34m Nginx Configuration For $DOMAIN Is Successfully Updated \e[0m" + + else + EngineHelp + fi + + + elif [ "$4" = "multisite" ] + then + + # Presetup For WordPress MU + sed -i "/WP_DEBUG/a \define('WP_ALLOW_MULTISITE', true);" /var/www/$DOMAIN/wp-config.php + sed -i "/WP_ALLOW_MULTISITE/a \define('WPMU_ACCEL_REDIRECT', true);" /var/www/$DOMAIN/wp-config.php + + if [ "$5" = "subdomain" ] + then + + # Configure Network Setup + echo -e "\033[34m Please Open Following URL & Click On Sub-Domains & Install \e[0m" + echo -e "\033[34m Configure Network Setup: http://$DOMAIN/wp-admin/network.php \e[0m" + echo -e "\033[34m Press Enter, Once You Setup Network: \e[0m" + read + + # Add Rules In wp-config.php gile + sed -i "/WPMU_ACCEL_REDIRECT/a \define('MULTISITE', true);\n\ + define('SUBDOMAIN_INSTALL', true);\n\ + \$base = '/';\n\ + define('DOMAIN_CURRENT_SITE', '$DOMAIN');\n\ + define('PATH_CURRENT_SITE', '/');\n\ + define('SITE_ID_CURRENT_SITE', 1);\n\ + define('BLOG_ID_CURRENT_SITE', 1);\n" /var/www/$DOMAIN/wp-config.php + + # Make Blogs.Dir + mkdir /var/www/$DOMAIN/htdocs/wp-content/blogs.dir + + # Call NGINXUSERINFO Function For NGINX User Details + NGINXUSERINFO + + # Give Ownership To NGINXUSER + chown -R $NGINXUSER:$NGINXUSER /var/www/$DOMAIN/htdocs/wp-content/blogs.dir + + if [ "$6" = "basic" ] + then + + # Installing Nginx Helper + cd /var/www/$DOMAIN/htdocs/ + wp plugin install nginx-helper || OwnError "Unable To Install Nginx Helper" + + # Activate Nginx Helper + wp plugin activate nginx-helper || OwnError "Unable To Activate Nginx Helper Plugin" + + # Call NGINXUSERINFO Function For NGINX User Details + NGINXUSERINFO + + # Give Ownership To $NGINXUSER + chown -R $NGINXUSER:$NGINXUSER /var/www/$DOMAIN/ + + # Display W3 Total Cache URL For Settings + echo -e "\033[34m Please Configure Nginx Helper Settings \e[0m" + echo -e "\033[34m Please Open Following URL & Click Enable Map \e[0m" + echo -ne "\033[34m Nginx Helper:\e[0m" + echo -e "\033[34m http://$DOMAIN/wp-admin/options-general.php?page=nginx \e[0m" + echo -e "\033[34m Press Enter, Once You Setup Nginx Helper Plugin: \e[0m" + read + + # Taking Backup + mv /etc/nginx/sites-available/$DOMAIN \ + /etc/nginx/sites-available/backups/$DOMAIN.$(date +%d%m%Y.%H%M%S) + + # Updating Site + echo -e "\033[34m Updating $DOMAIN For Basic WPMU, Please Wait... \e[0m" + sed "s/example.com/$DOMAIN/g" \ + /usr/share/easyengine/nginx/multisite/subdomain/basic.conf \ + > /etc/nginx/sites-available/$DOMAIN \ + || OwnError "Unable To Update Configuration File For $DOMAIN" + + # Reload Nginx Configuration + NGINXRELOAD + + # Display Success Message + echo -e "\033[34m Nginx Configuration For $DOMAIN Is Successfully Updated \e[0m" + + + elif [ "$6" = "w3total" ] + then + + # Taking Backup + mv /etc/nginx/sites-available/$DOMAIN \ + /etc/nginx/sites-available/backups/$DOMAIN.$(date +%d%m%Y.%H%M%S) + + # Updating Site + echo -e "\033[34m Updating $DOMAIN For W3TotalCache, Please Wait... \e[0m" + sed "s/example.com/$DOMAIN/g" \ + /usr/share/easyengine/nginx/multisite/subdomain/w3-total-cache.conf \ + > /etc/nginx/sites-available/$DOMAIN \ + || OwnError "Unable To Update Configuration File For $DOMAIN" + + # Reload Nginx Configuration + NGINXRELOAD + + # Display Success Message + echo -e "\033[34m Nginx Configuration For $DOMAIN Is Successfully Updated \e[0m" + + + elif [ "$6" = "wpsuper" ] + then + + # Taking Backup + mv /etc/nginx/sites-available/$DOMAIN \ + /etc/nginx/sites-available/backups/$DOMAIN.$(date +%d%m%Y.%H%M%S) + + # Updating Site + echo -e "\033[34m Updating $DOMAIN For WPSuperCache, Please Wait... \e[0m" + sed "s/example.com/$DOMAIN/g" \ + /usr/share/easyengine/nginx/multisite/subdomain/wp-super-cache.conf \ + > /etc/nginx/sites-available/$DOMAIN \ + || OwnError "Unable To Update Configuration File For $DOMAIN" + + # Reload Nginx Configuration + NGINXRELOAD + + # Display Success Message + echo -e "\033[34m Nginx Configuration For $DOMAIN Is Successfully Updated \e[0m" + + + elif [ "$6" = "fastcgi" ] + then + + # Taking Backup + mv /etc/nginx/sites-available/$DOMAIN \ + /etc/nginx/sites-available/backups/$DOMAIN.$(date +%d%m%Y.%H%M%S) + + # Updating Site + echo -e "\033[34m Updating $DOMAIN For Fastcgi Cache, Please Wait... \e[0m" + sed "s/example.com/$DOMAIN/g" \ + /usr/share/easyengine/nginx/multisite/subdomain/fastcgi-cache.conf \ + > /etc/nginx/sites-available/$DOMAIN \ + || OwnError "Unable To Update Configuration File For $DOMAIN" + + # Reload Nginx Configuration + NGINXRELOAD + + # Display Success Message + echo -e "\033[34m Nginx Configuration For $DOMAIN Is Successfully Updated \e[0m" + + else + EngineHelp + fi + + + elif [ "$5" = "subdirectory" ] + then + # Configure Network Setup + echo -e "\033[34m Please Open Following URL & Click On Sub-Directories & Install \e[0m" + echo -e "\033[34m Configure Network Setup: http://$DOMAIN/wp-admin/network.php \e[0m" + echo -e "\033[34m Press Enter, Once You Setup Network: \e[0m" + read + + # Add Rules In wp-config.php gile + sed -i "/WPMU_ACCEL_REDIRECT/a \define('MULTISITE', true);\n\ + define('SUBDOMAIN_INSTALL', false);\n\ + \$base = '/';\n\ + define('DOMAIN_CURRENT_SITE', '$DOMAIN');\n\ + define('PATH_CURRENT_SITE', '/');\n\ + define('SITE_ID_CURRENT_SITE', 1);\n\ + define('BLOG_ID_CURRENT_SITE', 1);\n" /var/www/$DOMAIN/wp-config.php + + # Make Blogs.Dir + mkdir /var/www/$DOMAIN/htdocs/wp-content/blogs.dir + + # Call NGINXUSERINFO Function For NGINX User Details + NGINXUSERINFO + + # Give Ownership To NGINXUSER + chown -R $NGINXUSER:$NGINXUSER /var/www/$DOMAIN/htdocs/wp-content/blogs.dir + + if [ "$6" = "basic" ] + then + + # Taking Backup + mv /etc/nginx/sites-available/$DOMAIN \ + /etc/nginx/sites-available/backups/$DOMAIN.$(date +%d%m%Y.%H%M%S) + + # Updating Site + echo -e "\033[34m Updating $DOMAIN For Basic WPMU, Please Wait... \e[0m" + sed "s/example.com/$DOMAIN/g" \ + /usr/share/easyengine/nginx/multisite/subdir/basic.conf \ + > /etc/nginx/sites-available/$DOMAIN \ + || OwnError "Unable To Update Configuration File For $DOMAIN" + + # Reload Nginx Configuration + NGINXRELOAD + + # Display Success Message + echo -e "\033[34m Nginx Configuration For $DOMAIN Is Successfully Updated \e[0m" + + + elif [ "$6" = "w3total" ] + then + + # Taking Backup + mv /etc/nginx/sites-available/$DOMAIN \ + /etc/nginx/sites-available/backups/$DOMAIN.$(date +%d%m%Y.%H%M%S) + + # Updating Site + echo -e "\033[34m Updating $DOMAIN For W3TotalCache, Please Wait... \e[0m" + sed "s/example.com/$DOMAIN/g" \ + /usr/share/easyengine/nginx/multisite/subdir/w3-total-cache.conf \ + > /etc/nginx/sites-available/$DOMAIN \ + || OwnError "Unable To Update Configuration File For $DOMAIN" + + # Reload Nginx Configuration + NGINXRELOAD + + # Display Success Message + echo -e "\033[34m Nginx Configuration For $DOMAIN Is Successfully Updated \e[0m" + + + elif [ "$6" = "wpsuper" ] + then + + # Taking Backup + mv /etc/nginx/sites-available/$DOMAIN \ + /etc/nginx/sites-available/backups/$DOMAIN.$(date +%d%m%Y.%H%M%S) + + # Updating Site + echo -e "\033[34m Updating $DOMAIN For WPSuperCache, Please Wait... \e[0m" + sed "s/example.com/$DOMAIN/g" \ + /usr/share/easyengine/nginx/multisite/subdir/wp-super-cache.conf \ + > /etc/nginx/sites-available/$DOMAIN \ + || OwnError "Unable To Update Configuration File For $DOMAIN" + + # Reload Nginx Configuration + NGINXRELOAD + + # Display Success Message + echo -e "\033[34m Nginx Configuration For $DOMAIN Is Successfully Updated \e[0m" + + + elif [ "$6" = "fastcgi" ] + then + + # Taking Backup + mv /etc/nginx/sites-available/$DOMAIN \ + /etc/nginx/sites-available/backups/$DOMAIN.$(date +%d%m%Y.%H%M%S) + + # Updating Site + echo -e "\033[34m Updating $DOMAIN For Fastcgi Cache, Please Wait... \e[0m" + sed "s/example.com/$DOMAIN/g" \ + /usr/share/easyengine/nginx/multisite/subdir/fastcgi-cache.conf \ + > /etc/nginx/sites-available/$DOMAIN \ + || OwnError "Unable To Update Configuration File For $DOMAIN" + + # Reload Nginx Configuration + NGINXRELOAD + + # Display Success Message + echo -e "\033[34m Nginx Configuration For $DOMAIN Is Successfully Updated \e[0m" + + else + EngineHelp + fi + + else + EngineHelp + fi + + else + EngineHelp + fi + + + else + EngineHelp + fi + + + # Easy Engine Delete + elif [ "$2" = "delete" ] + then + + if [ -n "$3" ] + then + + # Remove http:// & www. + DOMAIN=$(echo $3 | sed "s'http://''" | sed "s'www.''") + + # Delete Site + echo -e "\033[34m Deleting $DOMAIN, Please Wait... \e[0m" + rm /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/$DOMAIN + + # Remove Symbolic Links For Logs Files + echo -e "\033[34m Remove Symbolic Link For $DOMAIN Logs... \e[0m" + rm /var/www/$DOMAIN/logs/{access,error}.log + + if [ "$4" = "--database" ] + then + + # Get The Database Details + MYSQLUSER=$(grep DB_USER /var/www/$DOMAIN/wp-config.php \ + | cut -d"'" -f4) + + MYSQLPASS=$(grep DB_PASSWORD /var/www/$DOMAIN/wp-config.php \ + | cut -d"'" -f4) + + WPDBNAME=$(grep DB_NAME /var/www/$DOMAIN/wp-config.php \ + | cut -d"'" -f4) + + # Remove Database + echo -e "\033[34m Removing Database $WPDBNAME... \e[0m" + mysql -u $MYSQLUSER -p$MYSQLPASS -e "drop database \`$WPDBNAME\`" \ + || OwnError "Unable To Drop $WPDBNAME Database" + + elif [ "$4" = "--webroot" ] + then + + # Remove Webroot For $DOMAIN + echo -e "\033[34m Removing /var/www/$DOMAIN Directory... \e[0m" + rm -rf /var/www/$DOMAIN/ + + elif [ "$4" = "--all" ] + then + + # Get The Database Details + MYSQLUSER=$(grep DB_USER /var/www/$DOMAIN/wp-config.php \ + | cut -d"'" -f4) + + MYSQLPASS=$(grep DB_PASSWORD /var/www/$DOMAIN/wp-config.php \ + | cut -d"'" -f4) + + WPDBNAME=$(grep DB_NAME /var/www/$DOMAIN/wp-config.php \ + | cut -d"'" -f4) + + # Remove Database + echo -e "\033[34m Removing Database $WPDBNAME... \e[0m" + mysql -u $MYSQLUSER -p$MYSQLPASS -e "drop database \`$WPDBNAME\`" \ + || OwnError "Unable To Drop $WPDBNAME Database" + + # Remove Webroot For $DOMAIN + echo -e "\033[34m Removing /var/www/$DOMAIN Directory... \e[0m" + rm -rf /var/www/$DOMAIN + + else + EngineHelp + + fi + + # Reload Nginx Configuration + NGINXRELOAD + + # Display Success Message + echo -e "\033[34m http://$DOMAIN Successfully Deleted \e[0m" + + else + EngineHelp + fi + + + # Easy Engine Help + else + EngineHelp + fi + + + +# Easy Engine Config Settings +elif [ "$1" = "config" ] +then + + echo "Under Developments !!" + +# Easy Engine Update +elif [ "$1" = "update" ] +then + + echo -e "\033[34m Updating Easy Engine, Please wait... \e[0m" + #curl -L http://goo.gl/FvARq | sudo bash + curl -L rt.cx/ee | sudo bash + +# Easy Engine Help +else + EngineHelp +fi