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.
187 lines
6.9 KiB
187 lines
6.9 KiB
#!/bin/bash
|
|
|
|
# Define variables
|
|
readonly EE_UPDATE_LOG=/var/log/easyengine/update.log
|
|
|
|
# Define echo function
|
|
# Blue color
|
|
function ee_lib_echo()
|
|
{
|
|
echo $(tput setaf 4)$@$(tput sgr0)
|
|
}
|
|
|
|
# White color
|
|
function ee_lib_echo_info()
|
|
{
|
|
echo $(tput setaf 7)$@$(tput sgr0)
|
|
}
|
|
|
|
# Red color
|
|
function ee_lib_echo_fail()
|
|
{
|
|
echo $(tput setaf 1)$@$(tput sgr0)
|
|
}
|
|
|
|
# Capture errors
|
|
function ee_lib_error()
|
|
{
|
|
echo "[ `date` ] $(tput setaf 1)$@$(tput sgr0)" | tee -ai $EE_ERROR_LOG
|
|
exit $2
|
|
}
|
|
|
|
# Initialize Git
|
|
function ee_lib_git()
|
|
{
|
|
for ee_git_dir in ${@:1:$(($#-1))}; do
|
|
# Change directory
|
|
cd $ee_git_dir || ee_lib_error "Unable to change directory $ee_git_dir, exit status = " $?
|
|
|
|
# Check .git
|
|
if [ ! -d .git ]; then
|
|
# ee_lib_echo "Initialize Git on ${ee_git_dir}"
|
|
git init &>> $EE_COMMAND_LOG \
|
|
|| ee_lib_error "Unable to initialize Git on $ee_git_dir, exit status = " $?
|
|
fi
|
|
|
|
# Check for untracked files
|
|
if [ $(git status -s | wc -l) -ne 0 ]; then
|
|
# Add files in Git version control
|
|
ee_lib_echo "Git commit on $ee_git_dir, please wait..."
|
|
git add --all && git commit -am "${@: -1}" &>> $EE_COMMAND_LOG \
|
|
|| ee_lib_error "Unable to Git commit on $ee_git_dir, exit status = " $?
|
|
fi
|
|
done
|
|
}
|
|
|
|
# Update EasyEngine (ee)
|
|
EE_CURRENT_VERSION=$(ee version | awk '{print($3)}')
|
|
EE_LATEST_VERSION=$(curl -sL https://api.github.com/repos/rtCamp/easyengine/releases | grep tag_name | awk '{print($2)}' | cut -d'"' -f2 | cut -c2- | head -n1)
|
|
echo EE_CURRENT_VERSION = $EE_CURRENT_VERSION EE_LATEST_VERSION = $EE_LATEST_VERSION &>> $EE_UPDATE_LOG
|
|
|
|
if [[ $EE_CURRENT_VERSION < $EE_LATEST_VERSION ]]; then
|
|
read -p "Update EasyEngine to $EE_LATEST_VERSION (y/n): " EE_ANS
|
|
|
|
if [ "$EE_ANS" = "y" ] || [ "$EE_ANS" = "Y" ]; then
|
|
ee_lib_echo "EasyEngine (ee) update started [$(date)]" | tee -ai $EE_UPDATE_LOG
|
|
|
|
# Git backup
|
|
ee_lib_git /etc/nginx/ /etc/php5/ /etc/mysql/ /etc/postfix /etc/easyengine "EasyEngine version $EE_CURRENT_VERSION"
|
|
|
|
# Remove old version of EasyEngine (ee)
|
|
rm -rf /tmp/easyengine &>> /dev/null
|
|
|
|
# Let's clone EasyEngine (ee)
|
|
ee_lib_echo "Cloning EasyEngine (ee) stable branch, please wait..." | tee -ai $EE_UPDATE_LOG
|
|
git clone -b stable https://github.com/rtCamp/easyengine.git /tmp/easyengine &>> $EE_UPDATE_LOG \
|
|
|| ee_lib_error "Unable to clone EasyEngine (ee) stable branch, exit status = " $?
|
|
|
|
# Setup EasyEngine (ee)
|
|
if [ ! -d /etc/easyengine ]; then
|
|
mkdir -p /etc/easyengine \
|
|
|| ee_lib_error "Unable to create /etc/easyengine directory, exit status = " $?
|
|
fi
|
|
|
|
if [ ! -d /usr/share/easyengine/ ]
|
|
then
|
|
mkdir -p /usr/share/easyengine/ \
|
|
|| ee_lib_error "Unable to create /usr/share/easyengine/ directory, exit status = " $?
|
|
fi
|
|
|
|
if [ ! -d /usr/local/lib/easyengine ]
|
|
then
|
|
mkdir -p /usr/local/lib/easyengine \
|
|
|| ee_lib_error "Unable to create /usr/local/lib/easyengine directory, exit status = " $?
|
|
fi
|
|
|
|
# Setup EasyEngine (ee)
|
|
# EasyEngine (ee) auto completion file
|
|
cp -av /tmp/easyengine/config/bash_completion.d/ee /etc/bash_completion.d/ \
|
|
|| ee_lib_error "Unable to copy EasyEngine (ee) auto completion file, exit status = " $?
|
|
|
|
# Templates
|
|
cp -a /tmp/easyengine/config/nginx /tmp/easyengine/templates/* /usr/share/easyengine/ \
|
|
|| ee_lib_error "Unable to copy NGINX sample files, exit status = " $?
|
|
|
|
# NGINX COMMON
|
|
rsync -avz --exclude acl.conf /usr/share/easyengine/nginx/common/* /etc/nginx/common/ \
|
|
|| ee_lib_error "Unable to rsync NGINX common files, exit status = " $?
|
|
|
|
# EasyEngine (ee) library and modules
|
|
cp -av /tmp/easyengine/src/* /usr/local/lib/easyengine \
|
|
|| ee_lib_error "Unable to copy src files, exit status = " $?
|
|
|
|
# EasyEngine (ee) command
|
|
cp -av /tmp/easyengine/bin/easyengine /usr/local/sbin/ \
|
|
|| ee_lib_error "Unable to copy EasyEngine (ee) command, exit status = " $?
|
|
|
|
# Change permission of EasyEngine (ee) command
|
|
chmod 750 /usr/local/sbin/easyengine || ee_lib_error "Unable to change permission of EasyEngine (ee) command, exit status = " $?
|
|
|
|
# Create symbolic link
|
|
if [ ! -L /usr/local/sbin/ee ]; then
|
|
ln -s /usr/local/sbin/easyengine /usr/local/sbin/ee
|
|
fi
|
|
|
|
# EasyEngine (ee) man page
|
|
cp -av /tmp/easyengine/docs/man/ee.8 /usr/share/man/man8/ &>> $EE_UPDATE_LOG \
|
|
|| ee_lib_error "Unable to copy EasyEngine (ee) man page, exit status = " $?
|
|
|
|
|
|
|
|
if [[ $EE_CURRENT_VERSION < 2.0.0 ]]; then
|
|
|
|
# Lets used our code
|
|
# Include library
|
|
for ee_include in $(find /usr/local/lib/easyengine/ -iname "*.sh"); do
|
|
source $ee_include
|
|
done
|
|
|
|
# EasyEngine (ee) config file
|
|
cp /etc/easyengine/ee.conf /etc/easyengine/ee.bak
|
|
cp -av /tmp/easyengine/config/easyengine/ee.conf /etc/easyengine/ \
|
|
|| ee_lib_error "Unable to copy EasyEngine (ee) config file, exit status = " $?
|
|
|
|
# Get old value from ee.bak file
|
|
local ee_stack_ip=$(grep ip_address /etc/easyengine/ee.bak | cut -d'=' -f2)
|
|
local ee_auth_user=$(grep htpasswduser /etc/easyengine/ee.bak | cut -d'=' -f2)
|
|
local ee_auth_pass=$(grep htpasswdpass /etc/easyengine/ee.bak | cut -d'=' -f2)
|
|
local ee_mysql_host=$(grep mysqlhost /etc/easyengine/ee.bak | cut -d'=' -f2)
|
|
local ee_wp_user=$(grep wpadminuser /etc/easyengine/ee.bak | cut -d'=' -f2)
|
|
local ee_wp_pass=$(grep wpadminpass /etc/easyengine/ee.bak | cut -d'=' -f2)
|
|
local ee_wp_email=$(grep wpadminemail /etc/easyengine/ee.bak | cut -d'=' -f2)
|
|
|
|
# Update value in ee.conf file
|
|
$EE_CONFIG_SET stack.ip-address "$ee_stack_ip" && \
|
|
$EE_CONFIG_SET auth.user "$ee_auth_user" && \
|
|
$EE_CONFIG_SET auth.password "$ee_auth_pass" && \
|
|
$EE_CONFIG_SET mysql.host "$ee_mysql_host" && \
|
|
$EE_CONFIG_SET wordpress.user "$ee_wp_user" && \
|
|
$EE_CONFIG_SET wordpress.password "$ee_wp_pass" && \
|
|
$EE_CONFIG_SET wordpress.email "$ee_wp_email" \
|
|
|| ee_lib_error "Unable to update ee.conf file, exit status = " $?
|
|
|
|
# # NGINX conf.d
|
|
cp -v /usr/share/easyengine/nginx/conf.d/fastcgi.conf /etc/nginx/conf.d/ \
|
|
|| ee_lib_error "Unable to copy fastcgi.conf file, exit status = " $?
|
|
|
|
grep debug /etc/nginx/conf.d/upstream.conf &>> $EE_UPDATE_LOG
|
|
if [ $? -ne 0 ]; then
|
|
cp -v /usr/share/easyengine/nginx/conf.d/upstream.conf /etc/nginx/conf.d/ \
|
|
|| ee_lib_error "Unable to copy upstream.conf file, exit status = " $?
|
|
fi
|
|
# Install required packages
|
|
if [ "$EE_LINUX_DISTRO" == "Ubuntu" ]; then
|
|
ee_lib_package_check graphviz python-software-properties software-properties-common
|
|
elif [ "$EE_LINUX_DISTRO" == "Debian" ]; then
|
|
ee_lib_package_check graphviz python-software-properties
|
|
fi
|
|
|
|
if [ ! -x /usr/bin/tee ] || [ ! -x /bin/ed ] || [ ! -x /usr/bin/bc ] || [ ! -x /usr/bin/wget ] || [ ! -x /usr/bin/curl ] || [ ! -x /bin/tar ] || [ ! -x /usr/bin/git ] || [ -n "$EE_PACKAGE_NAME" ]; then
|
|
ee_lib_echo "Installing required packages, please wait..." | tee -ai $EE_UPDATE_LOG
|
|
apt-get -y install coreutils ed bc wget curl tar git-core $EE_PACKAGE_NAME | tee -ai $EE_UPDATE_LOG\
|
|
|| ee_lib_error "Unable to install required packages, exit status = " $?
|
|
fi
|
|
fi
|
|
|
|
fi
|
|
fi
|