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 su

1. 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-client

I 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_installation

Ti verranno poste queste domande:

Securing the MySQL server deployment.
Enter password for user root: <-- Inserisci la password di root di MySQL
VALIDATE 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-client

Ora impostiamo una password di root per MariaDB.

mysql_secure_installation

Ti 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] <-- y

Testa il login a MariaDB con il comando “mysql”

mysql -u root -p

e inserisci la password di root di MariaDB che hai impostato sopra. Il risultato dovrebbe essere simile allo screenshot qui sotto:

Login a MariaDB su Ubuntu 16.04.

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 apache2

Ora 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.0

Quindi riavvia Apache:

systemctl restart apache2

4. 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.php

Quindi cambia il proprietario del file info.php all’utente e al gruppo www-data.

chown www-data:www-data /var/www/html/info.php

Ora chiamiamo quel file in un browser (ad es. http://192.168.1.100/info.php):

Output di PHPINFO da PHP 7.

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.0

Scegli 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-gettext

Ora riavvia Apache2:

systemctl restart apache2

PHP con supporto per MySQL / MariaDB.

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-apcu

Non preoccuparti se mostra che Opcache è già installato.

Ora riavvia Apache:

systemctl restart apache2

Ora 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ì:

APCu installato in PHP.

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.php

7. 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-ssl

che 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 apache2

Ora testa la connessione SSL aprendo https://192.168.1.100 in un browser.

Accetta avviso SSL in Firefox

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.

Pagina predefinita di Apache in modalità https.

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-apache

Nel 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.conf

e aggiungi la riga:

ServerName example.com

Subito 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.com

Sostituisci 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 -e

per aprire il crontab di root in un editor. Inserisci la seguente riga alla fine del file:

0 1 * * * /usr/bin/letsencrypt renew &> /dev/null

salva 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 phpmyadmin

IMPORTANTE: 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 root

Crea 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;  
exit

Dopo, puoi accedere a phpMyAdmin all’indirizzo http://192.168.1.100/phpmyadmin/:

Login a phpmyadmin

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

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.