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.
294 lines
8.8 KiB
294 lines
8.8 KiB
#!/bin/bash
|
|
|
|
|
|
# Make Variables Available For Later Use
|
|
INSTALLLOG=/var/log/easyengine/install.log
|
|
|
|
# Capture Errors
|
|
OwnError()
|
|
{
|
|
echo -e "[ `date` ] \033[31m$@\e[0m" | tee -ai $INSTALLLOG
|
|
exit 101
|
|
}
|
|
|
|
GITCOMMIT ()
|
|
{
|
|
# Change Directory
|
|
cd $EEGITDIR || OwnError "Unable To Change Directory $EEGITDIR"
|
|
|
|
# Check .git
|
|
if [ ! -d .git ]
|
|
then
|
|
# Initialise Git
|
|
echo -e "\033[34mInitialise Git On $EEGITDIR...\e[0m"
|
|
git init &>> $INSTALLLOG || OwnError "Unable To Initialize Git On $EEGITDIR"
|
|
fi
|
|
|
|
# Check For Untracked Files
|
|
git status | grep clean &>> $INSTALLLOG
|
|
if [ $? -ne 0 ]
|
|
then
|
|
# Add Files In Git Version Control
|
|
git add . && git commit -am "$EEGITMESSAGE" &>> $INSTALLLOG \
|
|
|| OwnError "Unable To Git Commit On $EEGITDIR"
|
|
fi
|
|
}
|
|
|
|
EEUPDATE()
|
|
{
|
|
# Clone EasyEngine (ee) Stable Repository
|
|
rm -rf /tmp/easyengine
|
|
echo -e "\033[34mUpdating EasyEngine (ee), Please Wait...\e[0m" | tee -ai $INSTALLLOG
|
|
git clone -b stable git://github.com/rtCamp/easyengine.git /tmp/easyengine &>> $INSTALLLOG || OwnError "Unable To Clone Easy Engine"
|
|
|
|
# EasyEngine (ee) /etc Files
|
|
cp -a /tmp/easyengine/etc/bash_completion.d/ee /etc/bash_completion.d/ &>> $INSTALLLOG || OwnError "Unable To Copy EE Auto Complete File"
|
|
|
|
# EE /usr/share/easyengine Files
|
|
cp -a /tmp/easyengine/etc/nginx/* /usr/share/easyengine/nginx/ &>> $INSTALLLOG || OwnError "Unable To Copy Configuration Files "
|
|
cp -a /tmp/easyengine/usr/share/easyengine/* /usr/share/easyengine/ &>> $INSTALLLOG || OwnError "Unable To Copy Configuration Files "
|
|
|
|
# EE Command
|
|
cp -a /tmp/easyengine/usr/local/sbin/easyengine /usr/local/sbin/ &>> $INSTALLLOG || OwnError "Unable To Copy EasyEngine Command"
|
|
|
|
# EE Man Pages
|
|
cp -a /tmp/easyengine/man/ee.8 /usr/share/man/man8/ &>> $INSTALLLOG || OwnError "Unable To Copy EasyEngine Man Pages"
|
|
|
|
# Change Permission For EE
|
|
chmod 750 /usr/local/sbin/easyengine || OwnError "Unable To Change EasyEngine Command Permission"
|
|
|
|
# Create Symbolic Link If Not Exist
|
|
if [ ! -L /usr/local/sbin/ee ]
|
|
then
|
|
ln -s /usr/local/sbin/easyengine /usr/local/sbin/ee
|
|
fi
|
|
|
|
# Adjust FastCGI Cache Size 20% Of /var/run
|
|
VARRUNSIZE=$(df --block-size=M /var/run | awk '{print $4}' | tail -n1 |cut -d'M' -f1)
|
|
FCSIZE=$(expr $VARRUNSIZE \* 25 / 100)
|
|
|
|
# Change Size
|
|
sed -i "s/500m/$FCSIZE\m/" /usr/share/easyengine/nginx/conf.d/fastcgi.conf || OwnError "Unable To Change Fastcgi Cache Size"
|
|
|
|
# Git Config Settings
|
|
EEGITNAME=$(git config user.name)
|
|
EEGITEMAIL=$(git config user.email)
|
|
|
|
if [ -z "$EEGITNAME" ] || [ -z "$EEGITEMAIL" ]
|
|
then
|
|
echo
|
|
echo -e "\033[34mEasyEngine (ee) Required Your Name & Email Address To Track Changes You Made Under The Git\e[0m" | tee -ai $INSTALLLOG
|
|
echo -e "\033[34mEasyEngine (ee) Will Be Able To Send You Daily Reports & Alerts In Upcoming Version\e[0m" | tee -ai $INSTALLLOG
|
|
echo -e "\033[34mEasyEngine (ee) Will NEVER Send Your Information Across\e[0m" | tee -ai $INSTALLLOG
|
|
fi
|
|
# Check Git User Is Empty Or Not
|
|
if [ -z "$EEGITNAME" ]
|
|
then
|
|
read -p "Enter Your Name [$(whoami)]: " EEGITNAME
|
|
# If Enter Is Pressed
|
|
if [[ $EEGITNAME = "" ]]
|
|
then
|
|
EEGITNAME=$(whoami)
|
|
fi
|
|
git config --global user.name "$EEGITNAME" &>> $INSTALLLOG
|
|
fi
|
|
|
|
# Check Git User Is Empty Or Not
|
|
if [ -z "$EEGITEMAIL" ]
|
|
then
|
|
read -p "Enter Your Email [$(whoami)@$(hostname -f)]: " EEGITEMAIL
|
|
# If Enter Is Pressed
|
|
if [[ $EEGITEMAIL = "" ]]
|
|
then
|
|
EEGITEMAIL=$(whoami)@$(hostname -f)
|
|
fi
|
|
git config --global user.email $EEGITEMAIL &>> $INSTALLLOG
|
|
fi
|
|
}
|
|
|
|
MYSQLUSERPASS()
|
|
{
|
|
MYSQLUSER=root
|
|
MYSQLHOST=localhost
|
|
|
|
# Turn Off Echo For Passwords
|
|
stty -echo
|
|
read -p "Enter The MySQL Password For root User: " MYSQLPASS
|
|
stty echo
|
|
echo
|
|
}
|
|
|
|
MYSQLPASSCHECK()
|
|
{
|
|
while [ -n $(mysqladmin -h $MYSQLHOST -u $MYSQLUSER -p$MYSQLPASS ping 2> /dev/null | grep alive) &> /dev/null ]
|
|
do
|
|
# Verify MySQL Credentials
|
|
MYSQLUSERPASS
|
|
done
|
|
|
|
# Generate ~/.my.cnf
|
|
echo -e "[client]\nuser=root\npassword=$MYSQLPASS" > ~/.my.cnf
|
|
}
|
|
|
|
MYCNFCHECK()
|
|
{
|
|
# MySQL Root Password
|
|
if [ -f ~/.my.cnf ]
|
|
then
|
|
MYSQLUSER=root
|
|
MYSQLHOST=localhost
|
|
MYSQLPASS=$(cat ~/.my.cnf | grep pass | cut -d'=' -f2)
|
|
MYSQLPASSCHECK
|
|
else
|
|
# Turn Off Echo For Passwords
|
|
stty -echo
|
|
MYSQLUSER=root
|
|
MYSQLHOST=localhost
|
|
read -p "Enter The MySQL Password For root User: " MYSQLPASS
|
|
stty echo
|
|
echo
|
|
|
|
MYSQLPASSCHECK
|
|
fi
|
|
|
|
|
|
}
|
|
|
|
EE101()
|
|
{
|
|
# EasyEngine (ee) /etc Files
|
|
cp -a /tmp/easyengine/etc/easyengine/ee.conf /etc/easyengine/ &>> $INSTALLLOG || OwnError "Unable To Copy ee.conf File"
|
|
|
|
# Let Copy Some Missing Files & Chnage Nginx As Per Latest EasyEngine
|
|
(sed "/allow/,+2d" /usr/share/easyengine/nginx/common/acl.conf; grep -v ^# /etc/nginx/common/allowed_ip.conf ) > /etc/nginx/common/acl.conf
|
|
cp /usr/share/easyengine/nginx/common/locations.conf /etc/nginx/common
|
|
sed -i "s/fastcgi_cache_use_stale.*/fastcgi_cache_use_stale error timeout invalid_header updating http_500 http_503;\nfastcgi_cache_valid any 1h;/g" /etc/nginx/conf.d/fastcgi.conf
|
|
sed -i "s/log_format rt_cache.*/log_format rt_cache '\$remote_addr \$upstream_response_time \$upstream_cache_status [\$time_local] '/" /etc/nginx/nginx.conf
|
|
sed -i "s/.*\$body_bytes_sent'/\t\t'\$http_host \"\$request\" \$status \$body_bytes_sent '/" /etc/nginx/nginx.conf
|
|
|
|
# Check SSL Settings
|
|
grep ssl_ /etc/nginx/nginx.conf &>> $INSTALLLOG
|
|
if [ $? -ne 0 ]
|
|
then
|
|
sed -i "/client_max_body_size/a \ \n\t# SSL Settings\n\tssl_session_cache shared:SSL:20m;\n\tssl_session_timeout 10m;\n\tssl_prefer_server_ciphers on;\n\tssl_ciphers HIGH:\!aNULL:\!MD5:\!kEDH;\n\n" /etc/nginx/nginx.conf
|
|
fi
|
|
|
|
# Move PHP’s Session Storage To Memcache
|
|
sed -i "/extension/a \session.save_handler = memcache\nsession.save_path = \"tcp://localhost:11211\"" /etc/php5/mods-available/memcache.ini
|
|
}
|
|
|
|
EE110()
|
|
{
|
|
sed -i '/allow ;/d' /etc/nginx/common/acl.conf
|
|
}
|
|
|
|
HTTPAUTH()
|
|
{
|
|
# Get The htpasswd Details
|
|
HTPASSWDUSER=$(grep htpasswduser /etc/easyengine/ee.conf | awk '{print($3)}')
|
|
HTPASSWDPASS=$(grep htpasswdpass /etc/easyengine/ee.conf | awk '{print($3)}')
|
|
|
|
# Ask User To Provide HTTP AUTH Username & Password
|
|
if [ -z "$HTPASSWDUSER" ]
|
|
then
|
|
read -p "Enter The HTTP AUTH Username [easyengine]: " HTPASSWDUSER
|
|
# Turn Off Echo For Passwords
|
|
stty -echo
|
|
read -p "Enter The HTTP AUTH Password [easyengine]: " HTPASSWDPASS
|
|
stty echo
|
|
echo
|
|
fi
|
|
|
|
# If Enter Is Pressed, User Defaults
|
|
if [[ $HTPASSWDUSER = "" ]]
|
|
then
|
|
HTPASSWDUSER=easyengine
|
|
fi
|
|
|
|
if [[ $HTPASSWDPASS = "" ]]
|
|
then
|
|
HTPASSWDPASS=easyengine
|
|
fi
|
|
|
|
# Add HTTP Auth Details In EE Configuration File
|
|
sed -i "s/htpasswduser.*/htpasswduser = $HTPASSWDUSER/" /etc/easyengine/ee.conf
|
|
sed -i "s/htpasswdpass.*/htpasswdpass = $HTPASSWDPASS/" /etc/easyengine/ee.conf
|
|
|
|
# Generate htpasswd-ee file
|
|
printf "$HTPASSWDUSER:$(openssl passwd -crypt $HTPASSWDPASS 2> /dev/null)\n" > /etc/nginx/htpasswd-ee 2> /dev/null
|
|
}
|
|
|
|
RESTARTSERVICE()
|
|
{
|
|
echo -e "\033[34mRestarting Nginx & PHP5-FPM Configuration, Please Wait...\e[0m"
|
|
service php5-fpm restart &>> $INSTALLLOG || OwnError "Unable To Restart PHP5-FPM After Update"
|
|
(nginx -t && service nginx restart) &>> $INSTALLLOG || OwnError "Unable To Restart Nginx After Update"
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# Update EasyEngine (ee)
|
|
EECURRENTVERSION=$(ee version | awk '{print($3)}')
|
|
EELATESTVERSION=$(curl -sL https://api.github.com/repos/rtCamp/easyengine/releases | grep tag_name | awk '{print($2)}' | cut -d'"' -f2 | cut -c2- | head -n1)
|
|
echo EECURRENTVERSION = $EECURRENTVERSION EELATESTVERSION = $EELATESTVERSION &>> $INSTALLLOG
|
|
|
|
if [[ $EECURRENTVERSION < $EELATESTVERSION ]]
|
|
then
|
|
stty echo
|
|
read -p "Would You Like To Update EasyEngine To $EELATESTVERSION (y/n): " EEUPDATE
|
|
|
|
# Check User Choice
|
|
if [ "$EEUPDATE" = "y" ] || [ "$EEUPDATE" = "Y" ]
|
|
then
|
|
# Lets Start Update
|
|
echo &>> $INSTALLLOG
|
|
echo &>> $INSTALLLOG
|
|
echo -e "\033[34mEasyEngine (ee) Update Started [$(date)]\e[0m" | tee -ai $INSTALLLOG
|
|
|
|
# Before Update Take Nginx Conf In GIT
|
|
EEGITDIR=/etc/nginx
|
|
EEGITMESSAGE="Before Updating EasyEngine To $EELATESTVERSION"
|
|
GITCOMMIT
|
|
|
|
# Before Update Take PHP Conf In GIT
|
|
EEGITDIR=/etc/php5
|
|
GITCOMMIT
|
|
|
|
# Update EasyEngine (ee)
|
|
EEUPDATE
|
|
|
|
|
|
if [[ $EECURRENTVERSION = 1.0.0 ]] || [[ $EECURRENTVERSION = 1.0.1 ]]
|
|
then
|
|
EE101
|
|
HTTPAUTH
|
|
MYCNFCHECK
|
|
EE110
|
|
fi
|
|
|
|
if [[ $EECURRENTVERSION = 1.1.0 ]]
|
|
then
|
|
EE110
|
|
fi
|
|
fi
|
|
|
|
# Restart Nginx & PHP Services
|
|
RESTARTSERVICE
|
|
|
|
# Let's Take Conf In Git Version Control
|
|
EEGITDIR=/etc/nginx
|
|
EEGITMESSAGE="After Updating EasyEngine To $EELATESTVERSION"
|
|
GITCOMMIT
|
|
EEGITDIR=/etc/php5
|
|
GITCOMMIT
|
|
|
|
# Source EasyEngine (ee) Auto Complete To Take Effect
|
|
echo -e "\033[34mFor EasyEngine (ee) Auto Completion Run Following Command\e[0m" | tee -ai $INSTALLLOG
|
|
echo -e "\033[37msource /etc/bash_completion.d/ee\e[0m" | tee -ai $INSTALLLOG
|
|
echo
|
|
|
|
else
|
|
echo "EasyEngine Already Updated To The Latest Version"
|
|
fi
|
|
|