// Q-GIN 6.00
--:--:-- | 11.AGO.2026
Guide Informatiche 04 NOVEMBRE 2017 6 MIN LETTURA

Come installare un Lamp Stack su Ubuntu-Debian

1. Aggiornamento del sistema

AUTORE

Redattore per Q-Gin. Clicca su '// TUTTI_GLI_ARTICOLI' per esplorare le altre pubblicazioni scritte da // Zell.

// NESSUN_LINK_SOCIAL
// TUTTI_GLI_ARTICOLI
LAMP
// Q-GIN image-1-1
// SCHEDA_GIOCO

Come installare un Lamp Stack su Ubuntu-Debian

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 php e adatta i comandi (es. php8.1 o php8.2 al posto di php7.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"
// CONDIVIDI_ARTICOLO
// UNISCITI_ALLA_COMMUNITY

Ti è piaciuto questo articolo?

Non perderti i nostri prossimi contenuti. Unisciti al nostro canale Telegram o seguici sui social per restare sempre aggiornato!