You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

486 lines
12 KiB

#!/bin/bash
# Make Variables Available For Later Use
LOGDIR=/var/log/easyengine
MAINLOG=/var/log/easyengine/main.log
ERRORLOG=/var/log/easyengine/error.log
# Capture Errors
OwnError()
{
echo -e "[ `date` ] \033[31m $@ \e[0m" | tee -ai $ERRORLOG
12 years ago
exit 101
}
# Help Function
EngineHelp()
{
echo
echo "Usage: `basename $0` [OPTION] [ARGUMENT]..."
echo
echo "OPTION:"
12 years ago
echo " `basename $0` [system] [install|remove|purge] [nginx|php|mysql|postfix|--all]"
echo
echo " `basename $0` [site] [read] [all|active|sitename]"
12 years ago
echo " `basename $0` [site] [create] [sitename] [--with-wordpress]"
echo " `basename $0` [site] [update] [sitename] []"
echo " `basename $0` [site] [delete] [sitename] [--with-data]"
echo
12 years ago
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\`" \
12 years ago
|| OwnError "Unable To Create $WPDBNAME Database"
# Nginx User
NGINXUSER=$(grep user /etc/nginx/nginx.conf | cut -d' ' -f2 | cut -d';' -f1) \
12 years ago
|| OwnError "Unable To Findout Nginx Username"
}
NGINXRELOAD()
{
# Test & Reload Nginx
12 years ago
echo -e "\033[34m Reloading Nginx, Please wait... \e[0m"
nginx -t && service nginx reload || OwnError "Unable To Reload Nginx"
}
# Easy Engine System Settings
if [ "$1" = "system" ]
then
# Easy Engine Install
if [ "$2" = "install" ]
then
if [ "$3" = "nginx" ]
then
# Install Python Software Properties
12 years ago
echo -e "\033[34m Installing Python Software Properties... \e[0m"
sudo apt-get -y install python-software-properties \
12 years ago
|| OwnError "Unable To Install Python Software Properties"
# Add Nginx Launchpad Repository
12 years ago
echo -e "\033[34m Adding Nginx Launchpad Repository... \e[0m"
sudo add-apt-repository ppa:nginx/stable \
12 years ago
|| OwnError "Unable To Add Nginx Launchpad Repository"
# Update The APT Cache
12 years ago
echo -e "\033[34m Updating APT Cache... \e[0m"
sudo apt-get update || OwnError "Unable To Update APT Cache"
# Install Nginx
12 years ago
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
12 years ago
echo -e "\033[34m Installing Python Software Properties... \e[0m"
sudo apt-get -y install python-software-properties \
12 years ago
|| OwnError "Unable To Install Python Software Properties"
# Add PHP Launchpad Repository
12 years ago
echo -e "\033[34m Adding PHP5 Launchpad Repository... \e[0m"
sudo add-apt-repository ppa:ondrej/php5 \
12 years ago
|| OwnError "Unable To Add PHP5 Launchpad Repository"
# Update The APT Cache
12 years ago
echo -e "\033[34m Updating APT Cache... \e[0m"
sudo apt-get update || OwnError "Unable To Update APT Cache"
# Install PHP5
12 years ago
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 \
12 years ago
php5-dev php5-imap php5-mcrypt || OwnError "Unable To Install PHP5"
elif [ "$3" = "mysql" ]
then
# Update The APT Cache
12 years ago
echo -e "\033[34m Updating APT Cache... \e[0m"
sudo apt-get update || OwnError "Unable To Update APT Cache"
# Install MySQL
12 years ago
echo -e "\033[34m Installing MySQL... \e[0m"
sudo apt-get -y install mysql-server mysqltuner \
12 years ago
|| OwnError "Unable To Install MySQL"
elif [ "$3" = "postfix" ]
then
# Update The APT Cache
12 years ago
echo -e "\033[34m Updating APT Cache... \e[0m"
sudo apt-get update || OwnError "Unable To Update APT Cache"
# Install Postfix
12 years ago
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
12 years ago
echo -e "\033[34m Installing Python Software Properties... \e[0m"
sudo apt-get -y install python-software-properties \
12 years ago
|| OwnError "Unable To Install Python Software Properties"
# Add Nginx Launchpad Repository
12 years ago
echo -e "\033[34m Adding Nginx Launchpad Repository... \e[0m"
sudo add-apt-repository ppa:nginx/stable \
12 years ago
|| OwnError "Unable To Add Nginx Launchpad Repository"
# Add PHP Launchpad Repository
12 years ago
echo -e "\033[34m Adding PHP5 Launchpad Repository... \e[0m"
sudo add-apt-repository ppa:ondrej/php5 \
12 years ago
|| OwnError "Unable To Add PHP5 Launchpad Repository"
# Update The APT Cache
12 years ago
echo -e "\033[34m Updating APT Cache... \e[0m"
sudo apt-get update || OwnError "Unable To Update APT Cache"
# Install Nginx PHP5 MySQL Postfix
12 years ago
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 \
12 years ago
|| OwnError "Unable To Install Nginx PHP5 MySQL Postfix"
else
EngineHelp
fi
# Easy Engine Remove
elif [ "$2" = "remove" ]
then
if [ "$3" = "nginx" ]
then
# Remove Nginx
12 years ago
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
12 years ago
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 \
12 years ago
php5-dev php5-imap php5-mcrypt || OwnError "Unable To Remove PHP5"
elif [ "$3" = "mysql" ]
then
# Remove MySQL
12 years ago
echo -e "\033[34m Removing MySQL... \e[0m"
sudo apt-get -y remove mysql-server mysqltuner \
12 years ago
|| OwnError "Unable To Remove MySQL"
elif [ "$3" = "postfix" ]
then
# Remove Postfix
12 years ago
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
12 years ago
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 \
12 years ago
|| OwnError "Unable To Remove Nginx PHP5 MySQL Postfix"
else
EngineHelp
fi
# Easy Engine Purge
elif [ "$2" = "purge" ]
then
if [ "$3" = "nginx" ]
then
# Purge Nginx
12 years ago
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
12 years ago
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 \
12 years ago
php5-dev php5-imap php5-mcrypt || OwnError "Unable To Purge PHP5"
elif [ "$3" = "mysql" ]
then
# Purge MySQL
12 years ago
echo -e "\033[34m Purge MySQL... \e[0m"
sudo apt-get -y remove --purge mysql-server mysqltuner \
12 years ago
|| OwnError "Unable To Purge MySQL"
elif [ "$3" = "postfix" ]
then
# Purge Postfix
12 years ago
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
12 years ago
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 \
12 years ago
|| OwnError "Unable To Purge Nginx PHP5 MySQL Postfix"
else
EngineHelp
fi
12 years ago
# Easy Engine Help
else
EngineHelp
fi
12 years ago
# Easy Engine Site Settings
elif [ "$1" = "site" ]
then
12 years ago
# Easy Engine Read
if [ "$2" = "read" ]
then
if [ "$3" = "all" ]
then
# Display The List Of All Sites
ls /etc/nginx/sites-available/ \
12 years ago
|| OwnError "Unable To Display The List Of Websites"
elif [ "$3" = "active" ]
then
# Display The List Of Active Sites
ls /etc/nginx/sites-enabled/ \
12 years ago
|| 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 \
12 years ago
|| 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 \
12 years ago
|| OwnError "Unable To Display The $3 Configuration Settings"
fi
else
EngineHelp
fi
12 years ago
# 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
12 years ago
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 \
12 years ago
|| OwnError "Unable To Create Configuration File For $DOMAIN"
# Creating Symbolic Link
12 years ago
echo -e "\033[34m Creating Symbolic Link \e[0m"
ln -s /etc/nginx/sites-available/$DOMAIN /etc/nginx/sites-enabled/ \
12 years ago
|| OwnError "Unable To Create Symbolic Link For $DOMAIN"
# Creating Htdocs & Logs Directory
12 years ago
echo -e "\033[34m Creating htdocs & logs Directory \e[0m"
mkdir -p /var/www/$DOMAIN/{htdocs,logs} \
12 years ago
|| OwnError "Unable To Create htdocs & logs Directory"
# Creating Symbolic Links For Logs
12 years ago
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 \
12 years ago
|| OwnError "Unable To Create Symbolic Link For $DOMAIN Logs"
if [ "$4" = "--with-wordpress" ]
then
# Download Latest Wordpress
12 years ago
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
12 years ago
echo -e "\033[34m Changing Ownership \e[0m"
chown -R $NGINXUSER:$NGINXUSER /var/www/$DOMAIN/
fi
# Reload Nginx Configuration
NGINXRELOAD
else
EngineHelp
fi
12 years ago
# Easy Engine Update
elif [ "$2" = "update" ]
then
if [ -n "$3" ]
then
# Remove http:// & www.
DOMAIN=$(echo $3 | sed "s'http://''" | sed "s'www.''")
if [ "$4" = "" ]
then
# Updating Site
echo Updating
else
EngineHelp
fi
else
EnginHelp
fi
12 years ago
# Easy Engine Delete
elif [ "$2" = "delete" ]
then
echo "Delete"
12 years ago
# Easy Engine Help
else
EngineHelp
12 years ago
fi
#echo "Under Developments !!"
# Easy Engine Config Settings
elif [ "$1" = "config" ]
then
12 years ago
echo "Under Developments !!"
# Easy Engine Help
else
EngineHelp
fi