123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739 |
- #!/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
- }
- #############################################
- ######## 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}"
- 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 [[ $(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
-
- # Remove tools-site
- [[ $(conf_read mysql-tool-pma) == "true" ]] && stack -pma -purge=force
- sudo rm -rf /var/www/html
- sudo rm -rf /var/www/$(conf_read tools-port)
- conf_delete tools-site -commented
-
- [[ $(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
- purge_autoremove="true"
-
- sudo systemctl stop nginx
- sudo apt -y purge nginx
-
- # 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
-
- # 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
-
- [ -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
- linux_purge
-
- 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/$(conf_read tools-port)/htdocs ]]; then
- sudo rm -rf /var/www/$(conf_read tools-port)/htdocs/status
- sudo rm -rf /var/www/$(conf_read tools-port)/htdocs/ping
- sudo rm -rf /var/www/$(conf_read tools-port)/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 is not installed, hence can not be deleted! ${end}"
- echo "${gre}MySQL-Client has been deleted successfully! ${end}"
- elif [[ $(conf_read mysql) != "true" ]]; then
- echo "${dim}MySQL 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 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
- mysqlver=$(conf_read mysql-ver)
- 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
- else
- if [[ $mysql == "keep-data" ]]; then
- echo "mariadb-server-${mysqlver} mariadb-server-${mysqlver}/postrm_remove_databases boolean false" | debconf-set-selections
- else
- echo "mariadb-server-${mysqlver} mariadb-server-${mysqlver}/postrm_remove_databases boolean true" | debconf-set-selections
- fi
- sudo apt -y purge mariadb-server mariadb-common mysql-common
- 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 data was not removed.${end}"
- fi
-
- conf_write mysql purged
- echo ""
- echo "${gre}MySQL 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
- sudo snap remove certbot
- [[ -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
-
- [[ -z $(conf_read bkp-source-tmp) ]] && sudo snap remove duplicity || 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/$(conf_read tools-port)/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 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
- 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
-
- # REMOVE: when a new LTS is released and jammy supports more than one version.
- if [[ $(lsb_release -c | cut -d':' -f 2 | xargs) == "jammy" ]]; then
- echo "${red}[Disabled] MariaDB 10.6 is the only LTS version supported in Ubuntu 22.04!${end}"
- exit 1
- fi
-
- 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 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
|