LAMP

Lo script installa un server MAMP su Ubuntu Server 22.04

Bash
#!/bin/bash

# Esci se lo script non viene eseguito come root
if [ "$EUID" -ne 0 ]; then
  echo "Devi eseguire lo script come root"
  exit 1
fi

# Aggiorna il sistema
apt update

# ==================================================
# APACHE
# ==================================================
# Verifica se Apache è già installato, se non lo è installalo
if ! [ -x "$(command -v apache2)" ]; then
    apt install apache2 -y

    # Abilita Apache nel firewall
    ufw allow in "Apache"

        # Abilita mod_rewrite
        sudo a2enmod rewrite
        sudo systemctl restart apache2

fi

# ==================================================
# MYSQL
# ==================================================
# Verifica se MySQL è già installato, se non lo è installalo
if ! [ -x "$(command -v mysql)" ]; then
    apt install mysql-server -y

    # Richiedi all'utente di inserire la nuova password
    read -s -p "Inserisci la password per l'utente root di MySQL: " new_password
    echo

    # Esegui il comando ALTER USER all'interno di MySQL
    mysql -u root -p -e "ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '$new_password';"

    # Esegui mysql_secure_installation con sudo utilizzando la password indicata precedentemente
    mysql_secure_installation <<EOF
    $new_password
    n
    y
    y
    y
    y
EOF
fi

# ==================================================
# PHP
# ==================================================
# Verifica se PHP è già installato
if [ -x "$(command -v php)" ]; then
  php_version=$(php -r "echo PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;")
  echo "PHP versione $php_version già installata."
else
  apt install php libapache2-mod-php php-mysql -y
  php_version=$(php -r "echo PHP_MAJOR_VERSION.'.'.PHP_MINOR_VERSION;")
  echo "PHP versione $php_version installata."
fi

# Installa i pacchetti aggiuntivi in base alla versione di PHP
if [[ $php_version == "8.1" ]]; then
  apt install php8.1-curl php8.1-xml php8.1-imagick php8.1-mbstring php8.1-zip php8.1-intl php-fdomdocument php8.1-gd php8.1-intl -y
elif [[ $php_version == "8.0" ]]; then
  apt install php8.0-curl php8.0-xml php8.0-imagick php8.0-mbstring php8.0-zip php8.0-intl php-fdomdocument php8.0-gd php8.0-intl -y
elif [[ $php_version == "7.4" ]]; then
  apt install php7.4-curl php7.4-xml php7.4-imagick php7.4-mbstring php7.4-zip php7.4-intl php-fdomdocument php7.4-gd php7.4-intl -y
else
  echo "Versione di PHP non supportata. Installa manualmente i pacchetti aggiuntivi corrispondenti."
fi

# Da installare:
# apt install php8.1-curl php-fdomdocument php8.1-imagick php8.1-mbstring php8.1-zip php8.1-gd php8.1-intl

# ==================================================
# HISTORY
# ==================================================
# Rendi persistente history
if ! grep -q "HISTFILE" /etc/environment; then
  echo "HISTFILE=/home/$USER/.bash_history" | sudo tee -a /etc/environment
fi

# ==================================================
# WWW-DATA
# ==================================================
# Ottieni l'utente che ha eseguito il comando sudo
sudo_user=$SUDO_USER

# Aggiungi l'utente che ha eseguito il comando sudo al gruppo www-data
usermod -a -G www-data $sudo_user && exec "$SHELL"

# Aggiungi l'utente corrente anche al gruppo www-data nel caso in cui www-data sia un gruppo primario
usermod -a -G www-data -a $sudo_user && exec "$SHELL"