webinoly/usr/stack
Cristhian Martínez Ochoa 1042833c3d stack
- Fixed - PHP install asking for Nginx when PHP is already installed.
- Fixed - When mysql-client alone an error is displayed when check connection for external db.
2023-05-28 11:49:31 -07:00

761 lines
25 KiB
Bash

#!/bin/bash
# Server Stack Manager
# Syntax: stack <option> <arguments>
# Options: -html, -nginx, -php, -lemp, -mysql, -info, -purge-server-all, -php-ver, -mysql-ver, -letsencrypt, -backups, -postfix, -redis, -memcached, -pma
# Arguments: -purge, -build
source /opt/webinoly/lib/install
check_for_parameters $@
api-events_update sts
# Build parameter validation!
[[ $build =~ ^(light|basic)$ ]] || unset build
# FORCE - Unattended Purge
clear_force_flag() {
[[ $(conf_read force-flag) == "true" ]] && conf_delete force-flag
}
if [[ ${purge,,} == "force" || ${purge_server_all,,} == "force" || ${php,,} == "force" ]]; then
conf_write force-flag true
force="1"
fi
purge_mysql_client() {
[[ $(conf_read db-engine) == "mysql" ]] && sudo apt -y purge mysql-client || sudo apt -y purge mariadb-client
if [[ $(conf_read db-engine) == "mysql" ]]; then
sudo rm -rf /etc/apt/trusted.gpg.d/mysql_release_signing_key.asc
sudo rm -rf /etc/apt/sources.list.d/mysql.list
# APT-KEY deprecated in 22.04
elif [[ $(lsb_release -c | cut -d':' -f 2 | xargs) =~ ^(bionic|focal)$ ]]; then
echo | sudo add-apt-repository --remove "http://mirrors.syringanetworks.net/mariadb/repo/$(conf_read mysql-ver)/ubuntu"
sudo apt-key del 0xF1656F24C74CD1D8
else
sudo rm -rf /etc/apt/trusted.gpg.d/mariadb_release_signing_key.asc
sudo rm -rf /etc/apt/sources.list.d/mariadb.list
fi
conf_write mysql-client purged
}
purge_nginx_tools() {
# Remove additional tools
[[ $(conf_read login-www-data) == "true" ]] && webinoly -login-www-data=off
[[ $(conf_read nginx-tool-ssl) == "true" ]] && stack -letsencrypt -purge=force
[[ $(conf_read nginx-tool-bkp) == "true" ]] && stack -backups -purge=force
[[ $(conf_read mysql-tool-pma) == "true" ]] && stack -pma -purge=force
[[ -d /var/www ]] && sudo rm -rf /var/www/*
[[ -n $(conf_read tools-site) ]] && conf_delete tools-site -commented
[[ -n $(conf_read default-response) ]] && conf_delete default-response -commented
[[ -n $(conf_read default-site) ]] && conf_delete default-site
}
#############################################
######## Delete/Purge some stack ########
#############################################
if [[ -n $purge && ( -n $html || -n $nginx ) ]]; then
api-events_update pn1
if [[ $(conf_read nginx) != "true" ]]; then
echo "${dim}Nginx is not installed, hence can not be deleted! ${end}"
purge_nginx_tools # In case of nginx purged with keep-data before.
# Just in case, nginx purged with keep-data before can preserve some remanent data, for instance!
if [[ -d /etc/nginx ]]; then
sudo apt -y purge nginx
echo "${gre}${dim}Nginx remanent data found and removed!${end}"
fi
clear_force_flag
else
if [[ $(conf_read force-flag) != "true" ]]; then
echo ""
echo "${red}¡ C A U T I O N ! You are about to remove NGINX from your server!"
[[ $(conf_read mysql-tool-pma) == "true" ]] && echo "phpMyAdmin will be removed too because depends on Nginx."
echo ""
echo " ${blu}Are you sure [y/N]? ${end}"
while read -r -n 1 -s answer; do
answer=${answer:-n}
[[ $answer = [YyNn] ]] && break
done
fi
if [[ $answer == [Yy] || $(conf_read force-flag) == "true" ]]; then
if [[ $nginx == "keep-data" ]]; then
answer="N"
elif [[ $(conf_read force-flag) == "true" && $force == 1 ]]; then
answer="Y"
else
echo ""
echo "${blu}Do you want to delete your sites data directory (/var/www) [Y/n]? ${end}"
while read -r -n 1 -s answer; do
answer=${answer:-y}
[[ $answer = [YyNn] ]] && break
done
fi
if [[ $answer == [Yy] ]]; then
api-events_update pn2
site -delete-all=force
fi
purge_autoremove="true"
sudo systemctl stop nginx
if [[ $nginx != "keep-data" ]]; then
purge_nginx_tools
sudo apt -y purge nginx
else
sudo apt -y remove nginx
echo "${blu}Nginx data (including your sites) and configuration was NOT removed.${end}"
fi
# APT-KEY deprecated in 22.04
if [[ $(lsb_release -c | cut -d':' -f 2 | xargs) =~ ^(bionic|focal)$ ]]; then
if [[ $(conf_read nginx-ppa) == "mainline" ]]; then
echo | sudo add-apt-repository --remove "deb https://nginx.org/packages/mainline/ubuntu/ $(check_osname) nginx"
else
echo | sudo add-apt-repository --remove "deb https://nginx.org/packages/ubuntu/ $(check_osname) nginx"
fi
sudo apt-key del 7BD9BF62
else
sudo rm -rf /usr/share/keyrings/nginx-archive-keyring.gpg
sudo rm -rf /etc/apt/sources.list.d/nginx.list
fi
[ -L $CURRENT_HOME/www ] && sudo rm $CURRENT_HOME/www
[ -L $CURRENT_HOME/sites-available ] && sudo rm $CURRENT_HOME/sites-available
# Remove sources
sudo rm -rf /opt/webinoly/templates/source/default
sudo rm -rf /opt/webinoly/templates/source/nginx.conf
api-events_update pn6
conf_write nginx purged
conf_write nginx-optim purged
conf_delete server-version
echo ""
echo "${gre}Nginx has been deleted successfully! ${end}"
echo ""
else
echo ""
echo " ${gre}Action aborted!!! ${end}"
echo ""
fi
echo ""
fi
elif [[ -n $purge && -n $php ]]; then
api-events_update pp1
if [[ $(conf_read php) != "true" ]]; then
echo "${dim}PHP is not installed, hence can not be deleted! ${end}"
clear_force_flag
else
if [[ $(conf_read force-flag) != "true" ]]; then
echo ""
echo "${red}¡ C A U T I O N ! You are about to remove PHP from your server!"
echo "This action will also remove phpMyAdmin if its installed because depends on PHP. ${end}"
echo ""
echo " ${blu}Are you sure [y/N]? ${end}"
while read -r -n 1 -s answer; do
answer=${answer:-n}
[[ $answer = [YyNn] ]] && break
done
fi
if [[ $answer == [Yy] || $(conf_read force-flag) == "true" ]]; then
[[ $(conf_read mysql-tool-pma) == "true" ]] && stack -pma -purge=force
[[ $(conf_read smtp) == "true" ]] && webinoly -smtp -purge
[[ $(conf_read php-tool-postfix) == "true" ]] && stack -postfix -purge=force
[[ $(conf_read php-tool-redis) == "true" ]] && stack -redis -purge=force
[[ $(conf_read php-tool-memcached) == "true" ]] && stack -memcached -purge=force
purge_autoremove="true"
ver=$(conf_read php-ver)
sudo systemctl stop php${ver}-fpm
sudo apt -y purge php${ver}-common php${ver}-cli php${ver}-fpm php${ver}-curl php${ver}-gd php${ver}-imap php${ver}-readline php${ver}-mysql php${ver}-mbstring php${ver}-bcmath php${ver}-mysql php${ver}-opcache php${ver}-zip php${ver}-xml php${ver}-soap php${ver}-imagick php${ver}-msgpack php${ver}-igbinary php${ver}-intl php-pear graphviz ghostscript
# For old packages - before ondrej split modules
sudo apt -y purge php-imagick php-msgpack
# APT-KEY deprecated in 22.04
if [[ $(lsb_release -c | cut -d':' -f 2 | xargs) =~ ^(bionic|focal)$ ]]; then
echo | sudo add-apt-repository --remove 'ppa:ondrej/php'
sudo apt-key del E5267A6C #ondrej
else
sudo rm -rf /usr/share/keyrings/php-archive-keyring.gpg
sudo rm -rf /etc/apt/sources.list.d/php.list
fi
# Remove sources
sudo rm -rf /etc/php
sudo rm -rf /opt/webinoly/templates/source/php.ini
sudo rm -rf /opt/webinoly/templates/source/www.conf
sudo rm -rf /opt/webinoly/templates/source/php-fpm.conf
sudo rm -rf /opt/webinoly/templates/source/main.cf
# Remove tools-site
if [[ -d /var/www/$ADMIN_TOOLS_SITE/htdocs ]]; then
sudo rm -rf /var/www/$ADMIN_TOOLS_SITE/htdocs/status
sudo rm -rf /var/www/$ADMIN_TOOLS_SITE/htdocs/ping
sudo rm -rf /var/www/$ADMIN_TOOLS_SITE/htdocs/php
fi
conf_write php purged
conf_write php-optim purged
echo ""
echo "${gre}PHP has been deleted successfully! ${end}"
echo ""
else
echo ""
echo " ${gre}Action aborted!!! ${end}"
echo ""
fi
echo ""
api-events_update pp8
fi
elif [[ -n $purge && -n $mysql ]]; then
api-events_update pm1
if [[ $(conf_read mysql) != "true" && $(conf_read mysql-client) == "true" ]]; then
purge_mysql_client
echo "${dim}MySQL/MariaDB is not installed, hence can not be deleted! ${end}"
echo "${gre}MySQL/MariaDB Client has been deleted successfully! ${end}"
elif [[ $(conf_read mysql) != "true" ]]; then
echo "${dim}MySQL/MariaDB is not installed, hence can not be deleted! ${end}"
else
if [[ $(conf_read force-flag) != "true" ]]; then
echo ""
echo "${red}¡ C A U T I O N ! You are about to remove MySQL/MariaDB from your server! ${end}"
[[ $mysql == "keep-data" ]] && echo "${blu}${bol}The keep-data option is enabled, it is recommended to make a backup of all the databases before removing and reinstalling MySQL (MariaDB).${end}"
echo ""
echo " ${blu}Are you sure [y/N]? ${end}"
while read -r -n 1 -s answer; do
answer=${answer:-n}
[[ $answer = [YyNn] ]] && break
done
fi
if [[ $answer == [Yy] || $(conf_read force-flag) == "true" ]]; then
[[ $(conf_read mysql-tool-pma) == "true" ]] && stack -pma -purge=force
sudo systemctl stop mysql
sudo rm -rf /etc/mysql/*.conf.d/* # Prevent warnings when purging packages
# Purge is better, instead of remove even when keep-data is enabled, it prevents warnings during reinstallation.
if [[ $(conf_read db-engine) == "mysql" ]]; then
if [[ $mysql == "keep-data" ]]; then
echo "mysql-community-server mysql-community-server/remove-data-dir boolean false" | debconf-set-selections
else
echo "mysql-community-server mysql-community-server/remove-data-dir boolean true" | debconf-set-selections
fi
sudo apt -y purge mysql-server mysql-common mysql-common
sudo rm -rf /usr/share/keyrings/mysql-archive-keyring.gpg
sudo rm -rf /etc/apt/sources.list.d/mysql.list
else
mysqlver=$(conf_read mysql-ver)
# In 10.11 debconf variables changed!
[[ ${mysqlver//.} -lt 1011 ]] && mariadebconf="mariadb-server-${mysqlver}" || mariadebconf="mariadb-server"
if [[ $mysql == "keep-data" ]]; then
echo "$mariadebconf $mariadebconf/postrm_remove_databases boolean false" | debconf-set-selections
else
echo "$mariadebconf $mariadebconf/postrm_remove_databases boolean true" | debconf-set-selections
fi
sudo apt -y purge mariadb-server mariadb-common mysql-common
sudo rm -rf /usr/share/keyrings/mariadb-archive-keyring.gpg
sudo rm -rf /etc/apt/sources.list.d/mariadb.list
fi
purge_mysql_client
purge_autoremove="true"
if [[ $mysql != "keep-data" ]]; then
sudo rm -rf /etc/mysql
sudo rm -rf /var/lib/mysql
sudo rm -rf /usr/share/mysql
conf_delete mysql-root
conf_delete mysql-admin
else
echo "${blu}MySQL/MariaDB data was not removed.${end}"
fi
conf_write mysql purged
echo ""
echo "${gre}MySQL/MariaDB has been deleted successfully! ${end}"
echo ""
else
echo ""
echo " ${gre}Action aborted!!! ${end}"
echo ""
fi
echo ""
api-events_update pm4
fi
elif [[ -n $purge && -n $letsencrypt ]]; then
api-events_update pn3
if [[ $(conf_read nginx-tool-ssl) != "true" ]]; then
echo "${dim}Let's Encrypt is not installed, hence can not be deleted! ${end}"
clear_force_flag
else
if [[ $(conf_read force-flag) != "true" ]]; then
echo ""
echo "${red}¡ C A U T I O N ! You are about to remove Let's Encrypt from your server! ${end}"
echo ""
echo " ${blu}Are you sure [y/N]? ${end} "
while read -r -n 1 -s answer; do
answer=${answer:-n}
[[ $answer = [YyNn] ]] && break
done
fi
if [[ $answer == [Yy] || $(conf_read force-flag) == "true" ]]; then
# Remove SSL Cron
if [[ -f /var/spool/cron/crontabs/root ]]; then
sudo sed -i '/MAILTO=/d' /var/spool/cron/crontabs/root
sudo sed -i '/certbot renew/d' /var/spool/cron/crontabs/root
fi
# To remove a snap without generating a snapshot, use the additional --purge argument
sudo snap remove certbot --purge
[[ -L /usr/bin/certbot ]] && sudo rm -rf /usr/bin/certbot
conf_write nginx-tool-ssl purged
echo ""
echo "${gre}Let's Encrypt has been deleted successfully! ${end}"
echo ""
else
echo ""
echo " ${gre}Action aborted!!! ${end}"
echo ""
fi
echo ""
api-events_update pn4
fi
elif [[ -n $purge && -n $backups ]]; then
api-events_update pn5
if [[ $(conf_read nginx-tool-bkp) != "true" ]]; then
echo "${dim}BackUp packages are not installed, hence can not be deleted! ${end}"
clear_force_flag
else
if [[ $(conf_read force-flag) != "true" ]]; then
echo ""
echo "${red}¡ C A U T I O N ! You are about to remove BackUp packages from your server! ${end}"
echo ""
echo " ${blu}Are you sure [y/N]? ${end} "
while read -r -n 1 -s answer; do
answer=${answer:-n}
[[ $answer = [YyNn] ]] && break
done
fi
if [[ $answer == [Yy] || $(conf_read force-flag) == "true" ]]; then
# Remove duply profiles
if [[ -d $HOME/.duply ]]; then
sudo rm -rf $HOME/.duply
echo "${gre}${dim}Backup (duply) profiles deleted!${end}"
fi
sudo pip3 uninstall -y duplicity 2>&1 | grep -v "pip as the 'root' user"
sudo apt -y purge python3-boto3
sudo rm -rf /usr/bin/duply
purge_autoremove="true"
conf_write nginx-tool-bkp purged
echo ""
echo "${gre}BackUp packages have been deleted successfully! ${end}"
echo ""
else
echo ""
echo " ${gre}Action aborted!!! ${end}"
echo ""
fi
echo ""
api-events_update pn6
fi
elif [[ -n $purge && -n $postfix ]]; then
api-events_update pp2
if [[ $(conf_read php-tool-postfix) != "true" ]]; then
echo "${dim}Postfix is not installed, hence can not be deleted! ${end}"
clear_force_flag
else
if [[ $(conf_read force-flag) != "true" ]]; then
echo ""
echo "${red}¡ C A U T I O N ! You are about to remove Postfix from your server! ${end}"
echo ""
echo " ${blu}Are you sure [y/N]? ${end} "
while read -r -n 1 -s answer; do
answer=${answer:-n}
[[ $answer = [YyNn] ]] && break
done
fi
if [[ $answer == [Yy] || $(conf_read force-flag) == "true" ]]; then
sudo apt -y purge postfix
purge_autoremove="true"
conf_write php-tool-postfix purged
echo ""
echo "${gre}Postfix has been deleted successfully! ${end}"
echo ""
else
echo ""
echo " ${gre}Action aborted!!! ${end}"
echo ""
fi
echo ""
api-events_update pp3
fi
elif [[ -n $purge && -n $redis ]]; then
api-events_update pp4
if [[ $(conf_read php-tool-redis) != "true" ]]; then
echo "${dim}Redis is not installed, hence can not be deleted! ${end}"
clear_force_flag
else
if [[ $(conf_read force-flag) != "true" ]]; then
echo ""
echo "${red}¡ C A U T I O N ! You are about to remove Redis from your server! ${end}"
echo ""
echo " ${blu}Are you sure [y/N]? ${end} "
while read -r -n 1 -s answer; do
answer=${answer:-n}
[[ $answer = [YyNn] ]] && break
done
fi
if [[ $answer == [Yy] || $(conf_read force-flag) == "true" ]]; then
ver=$(conf_read php-ver)
sudo apt -y purge redis-server php${ver}-redis
purge_autoremove="true"
# For old packages - before ondrej split modules
sudo apt -y purge php-redis
# APT-KEY deprecated in 22.04
if [[ $(lsb_release -c | cut -d':' -f 2 | xargs) =~ ^(bionic|focal)$ ]]; then
echo | sudo add-apt-repository --remove 'ppa:redislabs/redis'
sudo apt-key del 3FA6E3CA
else
sudo rm -rf /usr/share/keyrings/redis-archive-keyring.gpg
sudo rm -rf /etc/apt/sources.list.d/redis.list
fi
sudo systemctl restart php${ver}-fpm
conf_write php-tool-redis purged
echo ""
echo "${gre}Redis has been deleted successfully! ${end}"
echo ""
else
echo ""
echo " ${gre}Action aborted!!! ${end}"
echo ""
fi
echo ""
api-events_update pp5
fi
elif [[ -n $purge && -n $memcached ]]; then
api-events_update pp6
if [[ $(conf_read php-tool-memcached) != "true" ]]; then
echo "${dim}Memcached is not installed, hence can not be deleted! ${end}"
clear_force_flag
else
if [[ $(conf_read force-flag) != "true" ]]; then
echo ""
echo "${red}¡ C A U T I O N ! You are about to remove Memcached from your server! ${end}"
echo ""
echo " ${blu}Are you sure [y/N]? ${end} "
while read -r -n 1 -s answer; do
answer=${answer:-n}
[[ $answer = [YyNn] ]] && break
done
fi
if [[ $answer == [Yy] || $(conf_read force-flag) == "true" ]]; then
ver=$(conf_read php-ver)
sudo apt -y purge php${ver}-memcached php${ver}-memcache memcached
purge_autoremove="true"
# For old packages - before ondrej split modules
sudo apt -y purge php-memcached php-memcache
sudo systemctl restart php${ver}-fpm
conf_write php-tool-memcached purged
echo ""
echo "${gre}Memcached has been deleted successfully! ${end}"
echo ""
else
echo ""
echo " ${gre}Action aborted!!! ${end}"
echo ""
fi
echo ""
api-events_update pp7
fi
elif [[ -n $purge && -n $pma ]]; then
api-events_update pm2
if [[ $(conf_read mysql-tool-pma) != "true" ]]; then
echo "${dim}phpMyAdmin is not installed, hence can not be deleted! ${end}"
clear_force_flag
else
if [[ $(conf_read force-flag) != "true" ]]; then
echo ""
echo "${red}¡ C A U T I O N ! You are about to remove phpMyAdmin from your server! ${end}"
echo ""
echo " ${blu}Are you sure [y/N]? ${end} "
while read -r -n 1 -s answer; do
answer=${answer:-n}
[[ $answer = [YyNn] ]] && break
done
fi
if [[ $answer == [Yy] || $(conf_read force-flag) == "true" ]]; then
sudo rm -rf /var/www/$ADMIN_TOOLS_SITE/htdocs/pma
conf_write mysql-tool-pma purged
echo ""
echo "${gre}phpMyAdmin has been deleted successfully! ${end}"
echo ""
else
echo ""
echo " ${gre}Action aborted!!! ${end}"
echo ""
fi
echo ""
api-events_update pm3
fi
######################################
######## Purge-Server-All ########
######################################
elif [[ -n $purge && -n $lemp ]]; then
echo "${red}If you want to remove Webinoly Stack completely from your server use the '-purge-server-all' option or remove each package individually. ${end}"
exit 1
elif [[ -n $purge_server_all ]]; then
api-events_update st2
echo ""
echo "${red}¡ C A U T I O N ! You are about to remove Webinoly Stack completely from your server!"
echo "This action will remove Nginx, PHP, MySQL/MariaDB and all the additional tools."
echo "${end}"
if [[ $(conf_read force-flag) != "true" && $force != 1 ]]; then
echo " ${blu}Are you sure [y/N]? ${end}"
while read -r -n 1 -s answer; do
answer=${answer:-n}
[[ $answer = [YyNn] ]] && break
done
else
answer="Y"
fi
if [[ $answer == [Yy] ]]; then
if [[ $(conf_read mysql) == true ]]; then
# Usually comes by default with Ubuntu. Not removed: dirmngr
sudo apt -y purge apt-transport-https
fi
stack -nginx -purge=force
stack -mysql -purge=force
stack -php -purge=force
# Backups can be installed alone (without nginx)
[[ $(conf_read nginx-tool-bkp) == "true" ]] && stack -backups -purge=force
# Remove remanent packages and things!
[[ -d /etc/datadog-agent ]] && webinoly -datadog -purge
[[ -f /etc/ssl/certs/webinoly-blackhole.crt.pem ]] && sudo rm -rf /etc/ssl/certs/webinoly-blackhole.crt.pem
[[ -f /etc/ssl/private/webinoly-blackhole.key.pem ]] && sudo rm -rf /etc/ssl/private/webinoly-blackhole.key.pem
[[ -f /etc/ssl/dhparam.pem ]] && sudo rm -rf /etc/ssl/dhparam.pem
[[ -f $HOME/.aws/credentials ]] && sudo rm -rf $HOME/.aws/credentials
[[ -f /etc/needrestart/conf.d/webinoly.conf ]] && sudo rm -rf /etc/needrestart/conf.d/webinoly.conf
if [[ $(conf_read pre-packs) == true ]]; then
# Usually comes by default with Ubuntu. Not removed: software-properties-common, zip
sudo apt -y purge pwgen unzip
linux_purge
conf_write pre-packs purged
fi
purge_autoremove="true"
[[ $(conf_read swap-owner) == "webinoly" ]] && swap_delete
echo "${gre}"
echo "****************************************************************************"
echo "*** ${bol}Webinoly Stack have been completely removed from your server${end}${gre} ***"
echo "**** ${dim}We are sad because you decided to remove Webinoly!!${end}${gre} ****"
echo "****************************************************************************"
echo "${end}"
else
echo ""
echo " ${gre} Action aborted!!! ${end}"
echo ""
fi
##################################################
###### Install packages: Stack Builder! ######
##################################################
elif [[ -n $html || -n $nginx ]]; then
stack_builder nginx false false $build
elif [[ -n $php ]]; then
if [[ $(conf_read php) != "true" && $(conf_read nginx) != "true" && $(conf_read force-flag) != "true" && $php != "nginx" ]]; then
echo ""
echo "${blu}Nginx is not installed, do you want to install it too [y/N]?${end} "
while read -r -n 1 -s answer; do
answer=${answer:-n}
[[ $answer = [YyNn] ]] && break
done
fi
[[ $answer = [Yy] || $php == "nginx" ]] && stack_builder nginx php false $build || stack_builder false php false $build
elif [[ -n $mysql ]]; then
[[ $(conf_read php) != "true" || $(conf_read nginx) != "true" ]] && build=light
[[ $mysql == "client" ]] && stack_builder false false mysql-client || stack_builder false false mysql $build
elif [[ -n $lemp ]]; then
api-events_update st1
stack_builder nginx php mysql $build
elif [[ -n $letsencrypt ]]; then
[[ $(conf_read nginx-tool-ssl) != "true" ]] && stack_builder false false false letsencrypt || echo "${dim}Let's Encrypt is already installed!${end}"
elif [[ -n $backups ]]; then
[[ $(conf_read nginx-tool-bkp) != "true" ]] && stack_builder false false false backups || echo "${dim}BackUp packages are already installed!${end}"
elif [[ -n $postfix ]]; then
[[ $(conf_read php-tool-postfix) != "true" ]] && stack_builder false false false postfix || echo "${dim}Postfix is already installed!${end}"
elif [[ -n $redis ]]; then
[[ $(conf_read php-tool-redis) != "true" ]] && stack_builder false false false redis || echo "${dim}Redis is already installed!${end}"
elif [[ -n $memcached ]]; then
[[ $(conf_read php-tool-memcached) != "true" ]] && stack_builder false false false memcached || echo "${dim}Memcached is already installed!${end}"
elif [[ -n $pma ]]; then
[[ $(conf_read mysql-tool-pma) != "true" ]] && stack_builder false false false pma || echo "${dim}phpMyAdmin is already installed!${end}"
##########################################
###### Change PHP/MySQL Version ######
##########################################
elif [[ -n $php_ver ]]; then
api-events_update st3
if [[ $php_ver != true && $(check_php_version $php_ver) == "true" ]]; then
echo "${blu}New PHP version: '$php_ver' ${end}"
if [[ $(conf_read php) == "true" && $(conf_read php-ver) == $php_ver ]]; then
echo "${gre}PHP $php_ver is currently installed!${end}"
elif [[ $(conf_read php) == "true" ]]; then
[[ $(conf_read mysql-tool-pma) == "true" ]] && pmaflag="true"
smtp_backup
# We need to know what packages are installed before remove them
[[ $(conf_read php-tool-postfix) == "true" ]] && php_profile_pf="true"
[[ $(conf_read php-tool-redis) == "true" ]] && php_profile_rd="true"
[[ $(conf_read php-tool-memcached) == "true" ]] && php_profile_mc="true"
sudo stack -php -purge=force
conf_write php-ver $php_ver
conf_write force-flag true # force flag prevent to be questioned (Unattended) when nginx is not installed.
if [[ $php_profile_pf == "true" && $php_profile_rd == "true" && $php_profile_mc == "true" ]]; then
sudo stack -php
else
sudo stack -php -build=light
[[ $php_profile_pf == "true" ]] && sudo stack -postfix
[[ $php_profile_rd == "true" ]] && sudo stack -redis
[[ $php_profile_mc == "true" ]] && sudo stack -memcached
fi
smtp_backup_recovery
[[ $pmaflag == "true" ]] && sudo stack -pma
elif [[ $(conf_read php) != "true" ]]; then
conf_write php-ver $php_ver
echo "${gre}PHP is not already installed but this version will be installed next time! ${end}"
fi
clear_force_flag
else
echo "${red}[ERROR] Please, enter a valid PHP version!${end}"
exit 1
fi
elif [[ -n $mysql_ver ]]; then
api-events_update st4
if [[ $mysql_ver != true && $(check_mysql_version $mysql_ver) == "true" ]]; then
echo "${blu}New MySQL (MariaDB) version: '$mysql_ver' ${end}"
if [[ $(conf_read mysql) == "true" && $(conf_read mysql-ver) == $mysql_ver ]]; then
echo "${gre}MySQL (MariaDB) $mysql_ver is currently installed!${end}"
elif [[ $(conf_read mysql) == "true" ]]; then
# Downgrades are not allowed - https://mariadb.com/kb/en/downgrading-between-major-versions-of-mariadb/
current_mysql_ver="$(conf_read mysql-ver)"
if [[ -n $current_mysql_ver && ${current_mysql_ver//.} -gt ${mysql_ver//.} ]]; then
echo "${red}[ERROR] Downgrading MySQL/MariaDB is not supported!${end}"
exit 1
fi
[[ $(conf_read mysql-tool-pma) == "true" ]] && pmaflag="true"
sudo stack -mysql=keep-data -purge=force
conf_write mysql-ver $mysql_ver
[[ $pmaflag == "true" ]] && sudo stack -mysql -block-password-display || sudo stack -mysql -build=light -block-password-display
elif [[ $(conf_read mysql) != "true" ]]; then
conf_write mysql-ver $mysql_ver
echo "${gre}MySQL (MariaDB) is not already installed but this version will be installed next time! ${end}"
fi
else
echo "${red}[ERROR] Please, enter a valid MySQL (MariaDB) version!${end}"
exit 1
fi
elif [[ -n $help || -n $h || -n $H || $empty_param == "true" ]]; then
help_message
else
echo "${red}[ERROR] Please, enter a valid option! ${end}"
exit 1
fi
# Clear FORCE flag in config file
if [[ $force == 1 ]]; then
clear_force_flag
force="0"
fi
# Remove all unnecessary packages!
[[ $purge_autoremove == "true" ]] && sudo apt -yqq autoremove &> /dev/null
api-events_update ste