
MariaDB 10.11 support added (removed 10.4 and 10.5). Better check for dbnames and dbusers.
761 lines
25 KiB
Bash
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 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
|