Server LAMP · 12 min read · Dec 28, 2025
Tutorial del server LAMP Ubuntu 16.04 (LTS) con Apache, PHP 7 e MySQL
LAMP è l’acronimo di Linux, Apache, MySQL, PHP. Questo tutorial mostra come installare un server web Apache su un server Ubuntu 16.04 LTS (Xenial Xerus) con supporto per PHP 7 (mod_php) e MySQL / MariaDB e come configurare un certificato SSL con Let’s Encrypt. Inoltre, installerò PHPMyAdmin per semplificare l’amministrazione di MySQL. Una configurazione LAMP è una base perfetta per sistemi CMS popolari come Joomla, Wordpress o Drupal.
Nota preliminare
In questo tutorial, utilizzerò il nome host server1.example.com con l’indirizzo IP 192.168.1.100. Queste impostazioni potrebbero differire per te, quindi dovrai sostituirle dove appropriato.
Ti consiglio di utilizzare una configurazione di server Ubuntu minimale come base per il tutorial, che può essere un’immagine di server virtuale o root con un’installazione minima di Ubuntu 16.04 da una società di hosting web oppure puoi utilizzare il nostro tutorial sul server minimale per installare un server da zero.
Eseguo tutti i passaggi di questo tutorial con privilegi di root, quindi assicurati di essere connesso come root:
sudo su1. Installazione del database MySQL o MariaDB
Attualmente ci sono due sistemi di database MySQL ampiamente utilizzati, il classico server “MySQL” sviluppato da Oracle e disponibile nella versione 5.7 ora e il fork di MySQL chiamato MariaDB sviluppato dall’originale sviluppatore di MySQL Monty Widenius.
Ti mostrerò come installare entrambe le alternative qui sotto. Segui solo il capitolo 1.1 o 1.2 ma non entrambi. Userò MySQL 5.7 per l’immagine della macchina virtuale che può essere scaricata da Howtoforge.
1.1 Installare MySQL 5.7
Per installare MySQL 5.7, esegui questo comando:
apt-get -y install mysql-server mysql-clientI pacchetti mysql-server e mysql-client sono chiamati ‘meta-pacchetti’, installano sempre l’ultima versione di MySQL disponibile da Ubuntu. L’ultima versione è attualmente MySQL 5.7.
Abbiamo già impostato la password di root per MySQL durante l’installazione, ma vorrei rimuovere l’utente anonimo e il database di test per motivi di sicurezza. Esegui il comando mysql_secure_installation qui sotto per ottenere ciò.
mysql_secure_installationTi verranno poste queste domande:
Securing the MySQL server deployment.Enter password for user root: <-- Inserisci la password di root di MySQLVALIDATE PASSWORD PLUGIN può essere utilizzato per testare le password
e migliorare la sicurezza. Controlla la forza della password
e consente agli utenti di impostare solo quelle password che sono
sufficientemente sicure. Vuoi configurare il plugin VALIDATE PASSWORD?Premi y|Y per Sì, qualsiasi altro tasto per No:
Utilizzando la password esistente per root.
Cambiare la password per root? ((Premi y|Y per Sì, qualsiasi altro tasto per No) : <-- Scegli 'y' qui se desideri abilitare la convalida della password, non ho bisogno di quella funzione, quindi scelgo 'n' qui.... skipping.
Per impostazione predefinita, un'installazione di MySQL ha un utente anonimo,
che consente a chiunque di accedere a MySQL senza dover avere
un account utente creato per loro. Questo è inteso solo per
testare e per rendere l'installazione un po' più fluida.
Dovresti rimuoverli prima di passare a un ambiente di produzione.Rimuovere gli utenti anonimi? (Premi y|Y per Sì, qualsiasi altro tasto per No) : <-- y
Successo.
Normalmente, a root dovrebbe essere consentito connettersi solo da
'localhost'. Questo garantisce che qualcuno non possa indovinare la
password di root dalla rete.Disallow root login remotely? (Premi y|Y per Sì, qualsiasi altro tasto per No) : <-- y
Successo.Per impostazione predefinita, MySQL viene fornito con un database chiamato 'test' che
chiunque può accedere. Questo è anche inteso solo per testare,
e dovrebbe essere rimosso prima di passare a un ambiente di produzione.
Rimuovere il database di test e l'accesso ad esso? (Premi y|Y per Sì, qualsiasi altro tasto per No) : <-- y
- Dropping test database...
Successo.- Rimozione dei privilegi sul database di test...
Successo.Ricaricare le tabelle dei privilegi garantirà che tutte le modifiche
fatte finora abbiano effetto immediato.Reload privilege tables now? (Premi y|Y per Sì, qualsiasi altro tasto per No) : <-- y
Successo.Tutto fatto!La configurazione di MySQL è stata ora protetta.
1.2 Installare MariaDB 10
Esegui il seguente comando per installare il server e il client MariaDB:
apt-get -y install mariadb-server mariadb-clientOra impostiamo una password di root per MariaDB.
mysql_secure_installationTi verranno poste queste domande:
Enter current password for root (enter for none): <-- premi invio
Set root password? [Y/n] <-- y
New password: <-- Inserisci qui la nuova password di root di MariaDB
Re-enter new password: <-- Ripeti la password
Remove anonymous users? [Y/n] <-- y
Disallow root login remotely? [Y/n] <-- y
Reload privilege tables now? [Y/n] <-- yTesta il login a MariaDB con il comando “mysql”
mysql -u root -pe inserisci la password di root di MariaDB che hai impostato sopra. Il risultato dovrebbe essere simile allo screenshot qui sotto:

Per uscire dalla shell di MariaDB, inserisci il comando “quit” e premi invio.
2. Installare il server web Apache
Apache 2 è disponibile come pacchetto Ubuntu, quindi possiamo installarlo in questo modo:
apt-get -y install apache2Ora indirizza il tuo browser a http://192.168.1.100, e dovresti vedere la pagina predefinita di Apache2 (Funziona!):

La root del documento del vhost predefinito di Apache è /var/www/html su Ubuntu e il file di configurazione principale è /etc/apache2/apache2.conf. Il sistema di configurazione è completamente documentato in /usr/share/doc/apache2/README.Debian.gz.
3. Installare PHP 7
Possiamo installare PHP 7 e il modulo PHP di Apache come segue:
apt-get -y install php7.0 libapache2-mod-php7.0Quindi riavvia Apache:
systemctl restart apache24. Testare PHP e ottenere dettagli sulla tua installazione di PHP
La root del documento del sito web predefinito è /var/www/html. Ora creeremo un piccolo file PHP (info.php) in quella directory e lo chiameremo in un browser. Il file mostrerà molti dettagli utili sulla nostra installazione di PHP, come la versione di PHP installata.
nano /var/www/html/info.phpQuindi cambia il proprietario del file info.php all’utente e al gruppo www-data.
chown www-data:www-data /var/www/html/info.phpOra chiamiamo quel file in un browser (ad es. http://192.168.1.100/info.php):

Come puoi vedere, PHP 7.0 sta funzionando, e sta funzionando attraverso il gestore Apache 2.0, come mostrato nella riga Server API. Se scorri ulteriormente verso il basso, vedrai tutti i moduli che sono già abilitati in PHP5. MySQL non è elencato lì, il che significa che non abbiamo ancora supporto per MySQL / MariaDB in PHP.
5. Ottenere supporto per MySQL / MariaDB in PHP
Per ottenere supporto per MySQL in PHP, possiamo installare il pacchetto php7.0-mysql. È una buona idea installare anche alcuni altri moduli PHP poiché potresti averne bisogno per le tue applicazioni. Puoi cercare i moduli PHP disponibili in questo modo:
apt-cache search php7.0Scegli quelli di cui hai bisogno e installali in questo modo:
apt-get -y install php7.0-mysql php7.0-curl php7.0-gd php7.0-intl php-pear php-imagick php7.0-imap php7.0-mcrypt php-memcache php7.0-pspell php7.0-recode php7.0-sqlite3 php7.0-tidy php7.0-xmlrpc php7.0-xsl php7.0-mbstring php-gettextOra riavvia Apache2:
systemctl restart apache2
PHP 7 ha ora supporto per MySQL / MariaDB come mostrato in phpinfo() sopra.
6. Installare l’Opcache + APCu PHP cache per velocizzare PHP
PHP 7 viene fornito con un cache opcode integrato per memorizzare nella cache e ottimizzare il codice intermedio PHP, si chiama ‘opcache’ ed è disponibile nel pacchetto php7.0-opcache. È fortemente consigliato avere un Opcache installato per velocizzare la tua pagina PHP. Oltre a opcache, installerò APCu che è un wrapper di compatibilità per opcache per fornire le funzioni della cache APC, un sistema di caching spesso utilizzato nelle versioni PHP 5.x e molti sistemi CMS lo utilizzano ancora.
Opcache e APCu possono essere installati come segue:
apt-get -y install php7.0-opcache php-apcuNon preoccuparti se mostra che Opcache è già installato.
Ora riavvia Apache:
systemctl restart apache2Ora ricarica http://192.168.1.100/info.php nel tuo browser e scorri di nuovo verso il basso nella sezione dei moduli. Dovresti ora trovare molti nuovi moduli lì:

Per favore, non dimenticare di eliminare il file info.php quando non ne hai più bisogno poiché fornisce dettagli sensibili del tuo server. Esegui il seguente comando per eliminare il file.
rm -f /var/www/html/info.php7. Abilitare il sito SSL in Apache
SSL/TLS è uno strato di sicurezza per crittografare la connessione tra il browser web e il tuo server. La maggior parte dei browser web inizia a mostrare i siti come non sicuri oggi quando la connessione tra il server e il browser web non è crittografata con SSL. In questo capitolo, ti mostrerò come proteggere il tuo sito web con SSL.
Esegui i seguenti comandi sul tuo server per abilitare il supporto SSL (https://). Esegui:
a2enmod ssl
a2ensite default-sslche abilita il modulo SSL e aggiunge un symlink nella cartella /etc/apache2/sites-enabled al file /etc/apache2/sites-available/default-ssl.conf per includerlo nella configurazione attiva di Apache. Quindi riavvia Apache per abilitare la nuova configurazione:
systemctl restart apache2Ora testa la connessione SSL aprendo https://192.168.1.100 in un browser.

Riceverai un avviso SSL poiché il certificato SSL del server è un certificato SSL “self-signed”, il che significa che il browser non si fida di questo certificato per impostazione predefinita e devi prima accettare l’avviso di sicurezza. Dopo aver accettato l’avviso, vedrai la pagina predefinita di Apache.

Il lucchetto verde chiuso davanti all’URL nel browser mostra che la connessione è crittografata.
Ci sono due modi per eliminare l’avviso SSL, o sostituire il certificato SSL self-signed /etc/ssl/certs/ssl-cert-snakeoil.pem con un certificato SSL firmato ufficialmente che acquisti da un’autorità SSL o ottieni un certificato SSL gratuito da Let’s Encrypt, che descriverò nel capitolo 8.
8. Ottenere un certificato SSL gratuito da Let’s Encrypt
Il primo passo per proteggere il sito web con un certificato SSL Let’s Encrypt è installare il pacchetto python-letsencrypt-apache. Esegui il seguente comando:
apt-get -y install python-letsencrypt-apacheNel passaggio successivo, richiederemo un certificato SSL da Let’s Encrypt, durante questo processo, il server Let’s Encrypt cerca di connettersi al tuo server tramite il nome di dominio che fornisci al comando letsencrypt. È importante che questo nome di dominio punti già al tuo server in DNS in modo che il sito web sia raggiungibile con il suo nome di dominio sulla porta 80 (http) già. Se il sito web non è raggiungibile da Internet, la creazione del certificato SSL Let’s Encrypt fallirà.
Prima di poter iniziare a creare il certificato SSL, imposta il nome di dominio nel file di configurazione del vhost. Apri il file vhost predefinito con un editor:
nano /etc/apache2/sites-available/000-default.confe aggiungi la riga:
ServerName example.comSubito sotto la riga ‘DocumentRoot’. Sostituisci example.com con il nome di dominio del tuo sito web.
Quindi crea il certificato SSL con questo comando:
letsencrypt --apache -d example.comSostituisci example.com con il tuo nome di dominio qui di nuovo. Il comando avvierà una procedura guidata che ti farà diverse domande.
Inserisci l’indirizzo email dove l’amministratore responsabile di questo sito web può essere contattato.

Accetta i termini e le condizioni dell’autorità SSL Let’s Encrypt.

Scegli se desideri reindirizzare automaticamente le richieste non SSL a https://. Selezionerò sì qui per evitare problemi di contenuto duplicato quando il sito web è disponibile sia come http:// che come versione https://.

Il certificato SSL è stato emesso con successo.

Quando accedi al sito web ora con un browser, verrai reindirizzato automaticamente a SSL e il lucchetto verde davanti alla barra degli URL nel browser mostra che stiamo utilizzando un certificato SSL di fiducia ora.

8.1 Rinnovo automatico di Let’s Encrypt
I certificati SSL di Let’s Encrypt sono validi per un breve periodo di soli 80 giorni. Pertanto, ora configureremo un cronjob per rinnovare automaticamente il certificato SSL quando necessario. Il comando è ‘letsencrypt renew’.
Imposta un cronjob per il rinnovo automatico di LE. Esegui:
crontab -eper aprire il crontab di root in un editor. Inserisci la seguente riga alla fine del file:
0 1 * * * /usr/bin/letsencrypt renew &> /dev/nullsalva il file, questo attiverà il cronjob. Questo cronjob chiamerà il comando di rinnovo di Let’s Encrypt ogni notte alle 1 del mattino. Il comando rinnoverà il certificato SSL solo quando necessario (30 giorni prima della scadenza), non c’è problema a eseguirlo ogni notte.
9. Installare phpMyAdmin
phpMyAdmin è un’interfaccia web attraverso la quale puoi gestire i tuoi database MySQL. È una buona idea installarlo:
apt-get -y install phpmyadminIMPORTANTE: L’installer apt ti farà ora diverse domande, una di queste è selezionare il tipo di server web. Un errore comune è che il tipo di server web è solo evidenziato ma non selezionato. Per selezionare un elemento in un menu apt devi premere la barra spaziatrice sulla tastiera dopo aver navigato all’elemento con i tasti tab o cursore. Semplicemente evidenziarlo non è sufficiente!
Vedrai le seguenti domande:
Web server to configure automatically: <-- Seleziona l'opzione: apache2
Configure database for phpmyadmin with dbconfig-common? <-- Sì
MySQL application password for phpmyadmin: <-- Premi invio, apt creerà automaticamente una password casuale.9.1 Accesso root a PHPMyAdmin con MariaDB
Il seguente passaggio è richiesto solo per le installazioni di MariaDB, se utilizzi MySQL 5.7, salta questo passaggio.
MariaDB abilita un plugin chiamato “unix_socket” per l’utente root per impostazione predefinita, questo plugin impedisce che l’utente root possa accedere a PHPMyAdmin e che le connessioni TCP a MySQL funzionino per l’utente root. Per ottenere un utente con privilegi per creare altri utenti e database in PHPMyAdmin, creerò un nuovo utente MySQL con il nome “admin” con gli stessi privilegi dell’utente root.
Accedi al database MySQL come utente root nella shell:
mysql -u rootCrea un nuovo utente con il nome “admin” e la password “howtoforge”. Sostituisci la password “howtoforge” con una password sicura nei comandi qui sotto!
CREATE USER 'admin'@'localhost' IDENTIFIED BY 'howtoforge';
GRANT ALL PRIVILEGES ON *.* TO 'admin'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exitDopo, puoi accedere a phpMyAdmin all’indirizzo http://192.168.1.100/phpmyadmin/:


10 Download dell’immagine della macchina virtuale di questo tutorial
Questo tutorial è disponibile come immagine di macchina virtuale pronta all’uso in formato ovf/ova compatibile con VMWare e Virtualbox. L’immagine della macchina virtuale utilizza i seguenti dettagli di accesso:
Accesso SSH / Shell
Nome utente: administrator
Password: howtoforge
Questo utente ha diritti sudo.
Accesso MySQL
Nome utente: root
Password: howtoforge
L’IP della VM è 192.168.1.100, può essere cambiato nel file /etc/network/interfaces. Si prega di cambiare tutte le password sopra per proteggere la macchina virtuale.
11 Link
- Apache: http://httpd.apache.org/
- PHP: http://www.php.net/
- MySQL: http://www.mysql.com/
- MariaDB: https://mariadb.com/
- Ubuntu: http://www.ubuntu.com/
- phpMyAdmin: http://www.phpmyadmin.net/
Ricevi i nuovi post nella tua casella di posta.
Nessuno spam. Disiscriviti in qualsiasi momento.