Come installare un Lamp Stack su Ubuntu-Debian
1. Aggiornamento del sistema
Redattore per Q-Gin. Clicca su '// TUTTI_GLI_ARTICOLI' per esplorare le altre pubblicazioni scritte da // Zell.
Come installare un Lamp Stack su Ubuntu-Debian
- // 1._Aggiornamento_del_sistema
- // 2._Installazione_rapida_con_Tasksel
- // Installa_Tasksel:
- // Esegui_l’installazione_del_server_LAMP:
- // 3._Installazione_e_configurazione_di_Apache
- // Installa_Apache:
- // Ottimizzazione_KeepAlive:
- // Configurazione_del_modulo_prefork:
- // Riavvia_Apache:
- // 4._Configura_Virtual_Host
- // Crea_il_file_virtual_host:
- // Modifica_il_file:
- // Crea_le_cartelle_necessarie:
- // Abilita_il_sito:
- // Disabilita_il_default:
- // Ricarica_Apache:
- // 5._Installazione_di_MySQL
- // Accedi_al_prompt_MySQL:
- // Imposta_la_password_root_(se_non_già_fatto):
- // Crea_un_database_e_un_utente:
- // 6._Installazione_di_PHP
- // Modifica_php.ini_per_prestazioni_e_logging:
- // Crea_cartella_log_PHP:
- // Riavvia_Apache:
- // 7._Test_dello_Stack_LAMP
- // 8._Risoluzione_problemi
- // Apache_non_parte?
- // Vedi_la_pagina_“Congratulations”_o_“Index_of_/”?
- // ✅_Conclusione
- // SCRIPT_AUTOMATICO_BASH
- // Contenuto_dello_script:
Ecco la guida riscritta in italiano, in forma chiara e adatta a qualsiasi versione di Ubuntu, non solo alla 16.04. I comandi restano gli stessi anche sulle versioni più moderne (come Ubuntu 20.04, 22.04, ecc.), salvo diversità nella versione di PHP. Ti segnalerò dove fare attenzione.
Guida Generica all’Installazione di uno Stack LAMP su Ubuntu
Un LAMP stack è un pacchetto software open-source composto da Linux, Apache, MySQL e PHP, utilizzato per ospitare contenuti web in ambienti Linux. È una delle soluzioni più popolari per sviluppare e distribuire applicazioni web ad alte prestazioni.
Questa guida spiega come installare e testare uno stack LAMP su qualsiasi versione moderna di Ubuntu.
⚠️ Le istruzioni si riferiscono a un utente non root: usa sudo davanti ai comandi che richiedono privilegi amministrativi.
1. Aggiornamento del sistema
Prima di iniziare, assicurati di aver aggiornato il tuo sistema:
sudo apt update && sudo apt upgrade
2. Installazione rapida con Tasksel
Ubuntu include Tasksel, uno strumento che permette di installare pacchetti complessi in blocco, incluso LAMP.
Installa Tasksel:
sudo apt install tasksel
Esegui l’installazione del server LAMP:
sudo tasksel install lamp-server
Durante l’installazione ti verrà chiesta una password per l’utente root di MySQL.
3. Installazione e configurazione di Apache
Installa Apache:
sudo apt install apache2
Ottimizzazione KeepAlive:
Modifica /etc/apache2/apache2.conf e aggiungi queste righe:
KeepAlive On
MaxKeepAliveRequests 50
KeepAliveTimeout 5
Configurazione del modulo prefork:
sudo a2dismod mpm_event
sudo a2enmod mpm_prefork
Modifica /etc/apache2/mods-available/mpm_prefork.conf come segue (ottimizzato per 2GB di RAM):
<IfModule mpm_prefork_module>
StartServers 4
MinSpareServers 3
MaxSpareServers 40
MaxRequestWorkers 200
MaxConnectionsPerChild 10000
</IfModule>
Riavvia Apache:
sudo systemctl restart apache2
4. Configura Virtual Host
Sostituisci example.com con il tuo dominio.
Crea il file virtual host:
sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/example.com.conf
Modifica il file:
<Directory /var/www/html/example.com/public_html>
Require all granted
</Directory>
<VirtualHost *:80>
ServerName example.com
ServerAlias www.example.com
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html/example.com/public_html
ErrorLog /var/www/html/example.com/logs/error.log
CustomLog /var/www/html/example.com/logs/access.log combined
</VirtualHost>
Crea le cartelle necessarie:
sudo mkdir -p /var/www/html/example.com/{public_html,logs}
Abilita il sito:
sudo a2ensite example.com.conf
Disabilita il default:
sudo a2dissite 000-default.conf
Ricarica Apache:
sudo systemctl reload apache2
5. Installazione di MySQL
Installa il server MySQL:
sudo apt install mysql-server
Accedi al prompt MySQL:
mysql -u root -p
Imposta la password root (se non già fatto):
ALTER USER 'root'@'localhost' IDENTIFIED WITH 'mysql_native_password' BY 'password';
Crea un database e un utente:
CREATE DATABASE webdata;
GRANT ALL ON webdata.* TO 'webuser' IDENTIFIED BY 'password';
Esci da MySQL:
quit
6. Installazione di PHP
NB: Verifica la versione disponibile con
sudo apt search phpe adatta i comandi (es.php8.1ophp8.2al posto diphp7.0).
Installa PHP con supporto Apache e MySQL:
sudo apt install php libapache2-mod-php php-mysql
Moduli aggiuntivi consigliati:
sudo apt install php-curl php-json php-cgi
Per WordPress:
sudo apt install php-gd php-mbstring php-xml php-xmlrpc
Modifica php.ini per prestazioni e logging:
max_input_time = 30
error_reporting = E_COMPILE_ERROR | E_RECOVERABLE_ERROR | E_ERROR | E_CORE_ERROR
error_log = /var/log/php/error.log
Crea cartella log PHP:
sudo mkdir /var/log/php
sudo chown www-data /var/log/php
Riavvia Apache:
sudo systemctl restart apache2
7. Test dello Stack LAMP
Crea un file /var/www/html/example.com/public_html/phptest.php con questo contenuto:
<html>
<head><title>PHP Test</title></head>
<body>
<?php
echo '<p>Hello World</p>';
$servername = "localhost";
$username = "webuser";
$password = "password";
$conn = mysqli_connect($servername, $username, $password);
if (!$conn) {
die('<p>Connection failed: <p>' . mysqli_connect_error());
}
echo '<p>Connected successfully</p>';
?>
</body>
</html>
Vai su http://example.com/phptest.php: se tutto è a posto, vedrai “Connected successfully”.
8. Risoluzione problemi
Apache non parte?
systemctl status apache2
sudo systemctl restart apache2
Vedi la pagina “Congratulations” o “Index of /”?
Verifica che il DocumentRoot nel Virtual Host sia corretto e che esista un file index.php o index.html nella cartella.
✅ Conclusione
Hai installato correttamente uno stack LAMP su Ubuntu! Ora puoi iniziare a sviluppare o ospitare i tuoi siti web o CMS preferiti, come WordPress o Drupal. Se sei già un utente più esperto e sai lavorare in bash, ecco di seguito uno script bash automatico che esegue tutte le operazioni della guida con un semplice click.
SCRIPT AUTOMATICO BASH
Salva questo file come setup_lamp.sh, poi esegui con:
chmod +x setup_lamp.sh
./setup_lamp.sh
Contenuto dello script:
#!/bin/bash
# Configura questi valori:
DOMINIO="miosito.com"
DBNAME="webdata"
DBUSER="webuser"
DBPASS="password"
echo "🔄 Aggiornamento sistema..."
sudo apt update && sudo apt upgrade -y
echo "📦 Installazione Apache, MySQL e PHP..."
sudo apt install -y apache2 mysql-server php libapache2-mod-php php-mysql php-curl php-gd php-mbstring php-xml php-xmlrpc
echo "🔐 Configurazione sicura MySQL..."
sudo mysql_secure_installation
echo "🗄️ Creazione database MySQL..."
sudo mysql -e "CREATE DATABASE $DBNAME;"
sudo mysql -e "CREATE USER '$DBUSER'@'localhost' IDENTIFIED BY '$DBPASS';"
sudo mysql -e "GRANT ALL PRIVILEGES ON $DBNAME.* TO '$DBUSER'@'localhost';"
sudo mysql -e "FLUSH PRIVILEGES;"
echo "🌐 Configurazione virtual host Apache..."
sudo mkdir -p /var/www/html/$DOMINIO/{public_html,logs}
sudo chown -R $USER:$USER /var/www/html/$DOMINIO/public_html
sudo bash -c "cat > /etc/apache2/sites-available/$DOMINIO.conf <<EOF
<Directory /var/www/html/$DOMINIO/public_html>
Require all granted
</Directory>
<VirtualHost *:80>
ServerName $DOMINIO
ServerAlias www.$DOMINIO
ServerAdmin webmaster@$DOMINIO
DocumentRoot /var/www/html/$DOMINIO/public_html
ErrorLog /var/www/html/$DOMINIO/logs/error.log
CustomLog /var/www/html/$DOMINIO/logs/access.log combined
</VirtualHost>
EOF"
echo "✅ Abilitazione sito..."
sudo a2ensite $DOMINIO.conf
sudo a2dissite 000-default.conf
sudo systemctl reload apache2
echo "🧪 Creazione file test PHP..."
sudo bash -c "cat > /var/www/html/$DOMINIO/public_html/phptest.php <<EOF
<html>
<head><title>PHP Test</title></head>
<body>
<?php
echo '<p>Hello World</p>';
$servername = 'localhost';
$username = '$DBUSER';
$password = '$DBPASS';
$conn = mysqli_connect($servername, $username, $password);
if (!$conn) {
die('<p>Connection failed:</p>' . mysqli_connect_error());
}
echo '<p>Connected successfully</p>';
?>
</body>
</html>
EOF"
echo "✅ Setup completato. Visita: http://$DOMINIO/phptest.php"
