#!/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 } EEUPDATE() { # Clone EasyEngine (ee) Stable Repository rm -rf /tmp/easyengine 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" cp -a /tmp/easyengine/etc/easyengine/ee.conf /etc/easyengine/ &>> $INSTALLLOG || OwnError "Unable To Copy ee.conf 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/* /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 /usr/local/sbin/eeupdate || 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 } 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 } EE101() { # Let Copy Some Missing Files (sed "/allow/,+2d" /usr/share/easyengine/nginx/common/acl.conf; grep -v ^# /etc/nginx/common/allowed_ip.conf ) > /etc/nginx/common/acl.conf cp -v /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 "/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 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 # 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 } # 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-) 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 # Update EasyEngine (ee) EEUPDATE HTTPAUTH if [[ $EECURRENTVERSION = 1.0.1 ]] then EE101 fi fi # Source EasyEngine (ee) Auto Complete To Take Effect echo 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