Server LAMP · 12 min read · Dec 26, 2025
Tutorial del server LAMP Ubuntu 18.04 (LTS) con Apache, PHP 7.2 e MySQL
LAMP è l’abbreviazione di Linux, Apache, MySQL, PHP. Questo tutorial mostra come installare un server web Apache su un server Ubuntu 18.04 LTS (Bionic Beaver) con PHP 7.2 (mod_php) e supporto per 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 devi 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 18.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 -s1. 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 semplicemente 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 così 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 questa funzione, quindi scelgo 'n' qui.... saltando.
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, root dovrebbe essere autorizzato a connettersi solo da
'localhost'. Questo assicura 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
- Eliminazione del database di test...
Successo.- Rimozione dei privilegi sul database di test...
Successo.Ricaricare le tabelle dei privilegi garantirà che tutte le modifiche
fatte finora abbiano effetto immediato.Ricaricare le tabelle dei privilegi ora? (Premi y|Y per Sì, qualsiasi altro tasto per No) : <-- y
Successo.Tutto fatto!La configurazione di MySQL è stata ora messa in sicurezza.
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] <-- y1.3 Testare il login di root MySQL/MariaDB
Testa il login su 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 MySQL/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 radice 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.2
Possiamo installare PHP 7.2 e il modulo PHP di Apache come segue:
apt-get -y install php7.2 libapache2-mod-php7.2Poi riavvia Apache:
systemctl restart apache24. Testare PHP e ottenere dettagli sulla tua installazione PHP
La radice 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 PHP, come la versione di PHP installata.
nano /var/www/html/info.phpPoi 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.2 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 PHP. MySQL non è elencato lì, il che significa che non abbiamo ancora supporto per MySQL / MariaDB in PHP.
5. Ottenere supporto MySQL / MariaDB in PHP
Per ottenere supporto MySQL in PHP, possiamo installare il pacchetto php7.2-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.2e
apt-cache search php-poiché non tutti i pacchetti PHP hanno il numero di versione 7.2 nel loro nome.
Scegli quelli di cui hai bisogno e installali in questo modo:
apt-get -y install php7.2-mysql php7.2-curl php7.2-gd php7.2-intl php-pear php-imagick php7.2-imap php-memcache php7.2-pspell php7.2-recode php7.2-sqlite3 php7.2-tidy php7.2-xmlrpc php7.2-xsl php7.2-mbstring php-gettextOra riavvia Apache2:
systemctl restart apache2
PHP 7.2 ha ora supporto 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 la memorizzazione nella cache e l’ottimizzazione del 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.2-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. Poi 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 “autofirmato”, questo 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 autofirmato /etc/ssl/certs/ssl-cert-snakeoil.pem con un certificato SSL ufficialmente firmato 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 python3-certbot-apache. Esegui il seguente comando:
apt-get -y install python3-certbot-apacheNel passaggio successivo, richiederemo un certificato SSL da Let’s Encrypt utilizzando il programma client certbot, durante questo processo, il server Let’s Encrypt cerca di connettersi al tuo server attraverso il nome di dominio che fornisci al comando certbot. È importante che questo nome di dominio punti già al tuo server in DNS affinché 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.
Poi crea il certificato SSL con questo comando:
certbot --apache -d example.comSostituisci example.com con il tuo nome di dominio qui di nuovo. Il comando avvierà una procedura guidata che ti chiederà 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.
Certbot ti chiederà ora se desideri condividere il tuo indirizzo email con l’Electronic Frontier Foundation. Scegli qui ciò che preferisci.
Poi scegli se vuoi 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 Let’s Encrypt sono validi per un breve periodo di 80 giorni solo. Pertanto, è necessario un cronjob per il rinnovo automatico dei certificati SSL che esegue il comando certbot –renew.
Questo cronjob viene impostato automaticamente quando installi certbot, il file cron è /etc/cron.d/certbot. Quindi non c’è nulla di più da fare qui. Se desideri sapere come appare il cronjob, esegui il comando:
/etc/cron.d/certbotIl risultato è:
root@server1:~# cat /etc/cron.d/certbot
# /etc/cron.d/certbot: voci crontab per il pacchetto certbot
#
# L'upstream raccomanda di tentare il rinnovo due volte al giorno
#
# Alla fine, questa sarà un'opportunità per convalidare i certificati
# non siano stati revocati, ecc. Il rinnovo avverrà solo se la scadenza
# è entro 30 giorni.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin0 */12 * * * root test -x /usr/bin/certbot -a \\! -d /run/systemd/system && perl -e 'sleep int(rand(43200))' && certbot -q renew9. 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à diverse domande ora, una delle quali è 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
MariaDB e MySQL abilitano 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.