#!/bin/bash # Checking Permissions Permission=$(id -u) if [ $Permission -ne 0 ] then echo -e "\033[31m Root Privilege Required... \e[0m" echo -e "\033[31m Uses: sudo $0 \e[0m" exit 100 fi # Capture Errors OwnError() { echo -e "[ $0 ][ `date` ] \033[31m $@ \e[0m" | tee -ai $ERRORLOG exit 101 } # Make Variables Available For Later Use LOGDIR=/var/log/easyengine MAINLOG=/var/log/easyengine/main.log ERRORLOG=/var/log/easyengine/error.log # Help Function EngineHelp() { echo echo "Usage: `basename $0` [OPTION] [ARGUMENTS]..." echo "Admin tools for Nginx based wordpress sites management." echo echo "OPTIONS:" echo " `basename $0` [system] [install|remove|purge] [nginx|php|mysql|postfix|--all]" echo echo " `basename $0` [site] [read] [all|active|sitename]" echo " `basename $0` [site] [create] [sitename] [--with-wordpress]" echo " `basename $0` [site] [update] [sitename] []" echo " `basename $0` [site] [delete] [sitename] [--with-data]" #echo " `basename $0` [site] [read|craete|update|delete] [sitename]" echo echo " `basename $0` [config] [set|get] [memory|timeout]" echo echo "Exit status:" echo " 0 if OK," echo " 100 sudo privilege required," echo " 101 command failed to execute," } # Pre Checks To Avoid Later Screw Ups # Checking Logs Directory if [ ! -d $LOGDIR ] then echo -e "\033[34m Creating easyengine log directory... \e[0m" mkdir -p $LOGDIR || OwnError "Unable to create log directory $LOGDIR" #else #echo -e "\033[34m Easyengine log directory found... \e[0m" fi # Checking Tee if [ ! -x /usr/bin/tee ] then echo -e "\033[31m Tee command not found !! \e[0m" echo -e "\033[34m Installing tee \e[0m" sudo apt-get -y install coreutils || OwnError "Unable to install tee" fi # Checking Wget if [ ! -x /usr/bin/wget ] then echo -e "\033[31m Wget command not found !! \e[0m" echo -e "\033[34m Installing wget \e[0m" sudo apt-get -y install wget || OwnError "Unable to install wget" fi # Checking Tar if [ ! -x /bin/tar ] then echo -e "\033[31m Tar command not found !! \e[0m" echo -e "\033[34m Installing tar \e[0m" sudo apt-get -y install tar || OwnError "Unable to install tar" fi # Checking Name Servers if [[ -z $(cat /etc/resolv.conf | grep -v ^#) ]] then echo -e "\033[31m No nameservers detected !! \e[0m" | tee -ai $ERRORLOG echo -e "\033[31m Please configure /etc/resolv.conf \e[0m" | tee -ai $ERRORLOG exit 100 fi # Pre Checks End # Easy Engine System Settings if [ "$1" = "system" ] then # Easy Engine Install if [ "$2" = "install" ] then if [ "$3" = "nginx" ] then # 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" # Add Nginx Launchpad Repository echo -e "\033[34m Adding nginx launchpad repository... \e[0m" sudo add-apt-repository ppa:nginx/stable \ || OwnError "Unable to add nginx launchpad repository" # Update The APT Cache echo -e "\033[34m Updating apt cache... \e[0m" sudo apt-get update || OwnError "Unable to update apt cache" # Install Nginx echo -e "\033[34m Installing nginx... \e[0m" sudo apt-get -y install nginx || OwnError "Unable to install nginx" elif [ "$3" = "php" ] then # 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" # 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" # Update The APT Cache echo -e "\033[34m Updating apt cache... \e[0m" sudo apt-get update || OwnError "Unable to update apt cache" # 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" elif [ "$3" = "mysql" ] then # Update The APT Cache echo -e "\033[34m Updating apt cache... \e[0m" sudo apt-get update || OwnError "Unable to update apt cache" # Install MySQL echo -e "\033[34m Installing mysql... \e[0m" sudo apt-get -y install mysql-server mysqltuner \ || OwnError "Unable to install mysql" elif [ "$3" = "postfix" ] then # Update The APT Cache echo -e "\033[34m Updating apt cache... \e[0m" sudo apt-get update || OwnError "Unable to update apt cache" # Install Postfix echo -e "\033[34m Installing postfix... \e[0m" sudo apt-get -y install postfix || OwnError "Unable to install postfix" elif [ "$3" = "--all" ] then # 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" # Add Nginx Launchpad Repository echo -e "\033[34m Adding nginx launchpad repository... \e[0m" sudo add-apt-repository ppa:nginx/stable \ || OwnError "Unable to add nginx launchpad repository" # 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" # Update The APT Cache echo -e "\033[34m Updating apt cache... \e[0m" sudo apt-get update || OwnError "Unable to update apt cache" # Install Nginx PHP5 MySQL Postfix echo -e "\033[34m Installing nginx php5 mysql postfix... \e[0m" sudo apt-get -y install nginx 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 postfix \ || OwnError "Unable to install nginx php5 mysql postfix" else EngineHelp fi #fi # Easy Engine Remove elif [ "$2" = "remove" ] then if [ "$3" = "nginx" ] then # Remove Nginx echo -e "\033[34m Removing nginx... \e[0m" sudo apt-get -y remove nginx || OwnError "Unable to remove nginx" elif [ "$3" = "php" ] then # 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" elif [ "$3" = "mysql" ] then # Remove MySQL echo -e "\033[34m Removing mysql... \e[0m" sudo apt-get -y remove mysql-server mysqltuner \ || OwnError "Unable to remove mysql" elif [ "$3" = "postfix" ] then # Remove Postfix echo -e "\033[34m Removing postfix... \e[0m" sudo apt-get -y remove postfix || OwnError "Unable to remove postfix" elif [ "$3" = "--all" ] then # Remove All echo -e "\033[34m Removing nginx php5 mysql postfix... \e[0m" sudo apt-get -y remove nginx 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 postfix \ || OwnError "Unable to remove nginx php5 mysql postfix" else EngineHelp fi #fi # Easy Engine Purge elif [ "$2" = "purge" ] then if [ "$3" = "nginx" ] then # Purge Nginx echo -e "\033[34m Purge nginx... \e[0m" sudo apt-get -y remove --purge nginx || OwnError "Unable to purge nginx" elif [ "$3" = "php" ] then # Purge PHP5 echo -e "\033[34m Purge php5... \e[0m" sudo apt-get -y remove --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" elif [ "$3" = "mysql" ] then # Purge MySQL echo -e "\033[34m Purge mysql... \e[0m" sudo apt-get -y remove --purge mysql-server mysqltuner \ || OwnError "Unable to purge mysql" elif [ "$3" = "postfix" ] then # Purge Postfix echo -e "\033[34m Purge postfix... \e[0m" sudo apt-get -y remove --purge postfix || OwnError "Unable to purge postfix" elif [ "$3" = "--all" ] then # Purge All echo -e "\033[34m Purge nginx php5 mysql postfix... \e[0m" sudo apt-get -y remove --purge nginx 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 postfix \ || OwnError "Unable to purge nginx php5 mysql postfix" else EngineHelp fi #fi # Easy Engine Help else EngineHelp fi elif [ "$1" = "site" ] then # Easy Engine Read if [ "$2" = "read" ] then if [ "$3" = "all" ] then # Display The List Of All Sites ls /etc/nginx/sites-available/ \ || OwnError "Unable to display the list of websites" elif [ "$3" = "active" ] then # Display The List Of Active Sites ls /etc/nginx/sites-enabled/ \ || OwnError "Unable to display the list of active 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 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:// & www. Domain=$(echo $3 | sed "s'http://''" | sed "s'www.''") # Creating Site echo -e "\033[34m Creating $Domain, please wait... \e[0m" sed "s/example.com/$Domain/g" ../conf/nginx/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 and logs directory \e[0m" mkdir -p /var/www/$Domain/{htdocs,logs} \ || OwnError "Unable to create htdocs and logs directory" # Creating Symbolic Links For Logs echo -e "\033[34m Creating symbolic link for logs \e[0m" ln -s /var/log/nginx/$Domain.{accss.log,error.log} /var/www/$Domain/logs/ \ || 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 # Modify wp-config.php # Change Ownership echo -e "\033[34m Changing ownership \e[0m" chown -R www-data:www-data /var/www/$Domain/ fi else EngineHelp fi # Easy Engine Update elif [ "$2" = "update" ] then echo "Update" # Easy Engine Delete elif [ "$2" = "delete" ] then echo "Delete" # Easy Engine Help else EngineHelp fi #echo "Under Developments !!" elif [ "$1" = "config" ] then echo "Under Developments !!" else EngineHelp fi