|
|
|
#!/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,"
|
|
|
|
}
|
|
|
|
|
|
|
|
# GET Information Function
|
|
|
|
GETINFO()
|
|
|
|
{
|
|
|
|
|
|
|
|
# Get The MySQL Username/Password
|
|
|
|
read -p "MySQL Host [localhost]: " TEMP
|
|
|
|
read -p "Enter The MySQL Username: " MYSQLUSER
|
|
|
|
|
|
|
|
# Turn Off Echo For Passwords
|
|
|
|
stty -echo
|
|
|
|
read -p "Enter The MySQL Password: " MYSQLPASS
|
|
|
|
stty echo
|
|
|
|
echo
|
|
|
|
|
|
|
|
read -p "Enter The MySQL Database Name For $DOMAIN: " WPDBNAME
|
|
|
|
|
|
|
|
# If Enter Is Pressed, Then Use localhost as MySQL Host
|
|
|
|
if [[ $TEMP = "" ]]
|
|
|
|
then
|
|
|
|
MYSQLHOST=localhost
|
|
|
|
else
|
|
|
|
MYSQLHOST=$TEMP
|
|
|
|
fi
|
|
|
|
|
|
|
|
# Create Database
|
|
|
|
mysql -u $MYSQLUSER -p$MYSQLPASS -e "create database \`$WPDBNAME\`" \
|
|
|
|
|| OwnError "Unable to create $WPDBNAME"
|
|
|
|
|
|
|
|
# Nginx User
|
|
|
|
NGINXUSER=$(grep user /etc/nginx/nginx.conf | cut -d' ' -f2 | cut -d';' -f1) \
|
|
|
|
|| OwnError "Unable to findout nginx user"
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
# 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
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# Easy Engine Site Settings
|
|
|
|
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.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 GETINFO Function For MySQL & Nginx Values
|
|
|
|
GETINFO
|
|
|
|
|
|
|
|
# Modify wp-config.php
|
|
|
|
cp -v /var/www/$DOMAIN/htdocs/wp-config-sample.php \
|
|
|
|
/var/www/$DOMAIN/htdocs/wp-config.php
|
|
|
|
|
|
|
|
|
|
|
|
sed -i "s/username_here/$MYSQLUSER/" \
|
|
|
|
/var/www/$DOMAIN/htdocs/wp-config.php
|
|
|
|
|
|
|
|
|
|
|
|
sed -i "s/password_here/$MYSQLPASS/" \
|
|
|
|
/var/www/$DOMAIN/htdocs/wp-config.php
|
|
|
|
|
|
|
|
sed -i "s/localhost/$MYSQLHOST/" \
|
|
|
|
/var/www/$DOMAIN/htdocs/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 wp-config.php
|
|
|
|
|
|
|
|
|
|
|
|
# Change Ownership
|
|
|
|
echo -e "\033[34m Changing ownership \e[0m"
|
|
|
|
chown -R $NGINXUSER:$NGINXUSER /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
|