LOMP su Ubuntu 22.04: cosa stai installando e perché
LOMP, in questo contesto, indica uno stack Linux con Apache, MariaDB e PHP su Ubuntu 22.04 LTS. È una base classica per siti PHP, CMS, pannelli e applicazioni web tradizionali. La scelta di Apache resta sensata quando ti servono .htaccess, compatibilità diffusa e una gestione semplice dei virtual host.
Su Ubuntu 22.04 il punto non è solo “installare i pacchetti”, ma farlo in modo pulito: repository aggiornati, servizi attivi, PHP coerente con Apache, database inizializzato e test finale sulla pagina PHP. Se salti i controlli, ti ritrovi con errori 403, pagina bianca o problemi di permessi che poi costano tempo.
Obiettivo pratico: arrivare a un server che risponde su HTTP, esegue PHP e ha un database pronto all’uso, con una verifica ripetibile e un rollback minimo se qualcosa va storto.
Prerequisiti operativi
Prima di toccare il sistema, verifica di avere accesso SSH con un utente sudo e una finestra di manutenzione se il server è già in produzione. Se stai lavorando su una macchina esistente, il rischio principale è sovrascrivere configurazioni già in uso o introdurre cambiamenti di versione non compatibili con l’applicazione.
- Accesso come utente con privilegi sudo.
- Connessione Internet e DNS funzionanti.
- Spazio disco sufficiente in
/e in/var. - Eventuale backup delle configurazioni Apache e PHP se il server è già in uso.
Se il server è appena creato, il percorso è lineare. Se invece è un host condiviso o già operativo, conviene prima fotografare lo stato: versioni, virtual host attivi, moduli caricati, database esistenti.
Verifiche iniziali prima dell’installazione
Questa parte serve a evitare troubleshooting inutile dopo. Non cambia nulla sul sistema, ma ti dice se il nodo è sano prima di installare lo stack.
lsb_release -aAtteso: Ubuntu 22.04.x. Se non lo è, i percorsi e i pacchetti possono cambiare.
df -hAtteso: spazio libero ragionevole su / e almeno qualche GB su /var. Se sei sotto pressione disco, correggi prima di installare pacchetti e database.
sudo systemctl status apache2 --no-pagerSe Apache è già presente, controlla se è attivo o se esiste una configurazione precedente da preservare. Se il servizio non esiste, procedi con installazione pulita.
Installare Apache, MariaDB e PHP
La sequenza minima per uno stack LOMP su Ubuntu 22.04 è semplice: aggiorni i pacchetti, installi Apache, MariaDB e PHP con i moduli base. Conviene farlo in un unico passaggio per ridurre il numero di riavvii e mantenere il sistema coerente.
sudo apt updateAtteso: nessun errore sui repository. Se compaiono warning o repository rotti, sistemali prima di andare avanti.
sudo apt install apache2 mariadb-server php libapache2-mod-php php-cli php-mysql php-curl php-xml php-mbstring php-zip php-gdQuesti pacchetti coprono il caso standard: Apache come web server, MariaDB come database e PHP con moduli comuni per CMS e applicazioni web. Se la tua applicazione ha esigenze specifiche, aggiungi solo i moduli necessari, non tutto il catalogo.
Durante l’installazione, i servizi dovrebbero essere avviati automaticamente. Se non succede, passa ai controlli successivi.
Controllare che i servizi siano attivi
Dopo l’installazione, verifica subito lo stato dei servizi. Questa è la prima barriera contro errori banali come pacchetti installati ma servizi fermi.
sudo systemctl status apache2 --no-pagerAtteso: active (running).
sudo systemctl status mariadb --no-pagerAtteso: active (running).
Se uno dei due è in errore, guarda i log prima di fare modifiche:
sudo journalctl -u apache2 -n 50 --no-pagersudo journalctl -u mariadb -n 50 --no-pagerQui cerchi errori di configurazione, porte già occupate, permessi mancanti o inizializzazione fallita. Non forzare cambiamenti finché non hai un messaggio chiaro.
Configurazione base di Apache
Su Ubuntu, Apache parte con una pagina di default e ascolta sulla porta 80. Il controllo essenziale è che risponda localmente e che il sito di default sia servito correttamente.
curl -I http://localhostAtteso: risposta HTTP/1.1 200 OK o comunque un codice valido, con header Apache.
Se vuoi vedere la configurazione attiva:
apachectl -SQuesto comando mostra virtual host, file di configurazione e binding sulle porte. È utile soprattutto se stai installando lo stack su una macchina che aveva già altri siti.
Se ti serve abilitare moduli comuni, puoi farlo in modo selettivo. Per esempio, rewrite è spesso richiesto da CMS e framework:
sudo a2enmod rewriteDopo l’abilitazione, ricarica Apache:
sudo systemctl reload apache2Se il reload fallisce, non insistere: controlla la sintassi e i log.
sudo apachectl configtestAtteso: Syntax OK. Se non lo è, la configurazione va corretta prima di procedere.
Verificare PHP con Apache
Ubuntu 22.04 installa PHP in modo compatibile con Apache tramite il modulo libapache2-mod-php. Il test più rapido è creare una pagina PHP temporanea e leggerla via browser o via curl.
echo '<?php phpinfo(); ?>' | sudo tee /var/www/html/info.phpPoi verifica localmente:
curl http://localhost/info.phpAtteso: output HTML con la pagina di phpinfo(). Se vedi il codice PHP in chiaro, PHP non è agganciato ad Apache. Se vedi errore 403 o 404, il problema è nel document root o nei permessi.
Dopo il test, elimina il file perché phpinfo() espone dettagli utili agli attaccanti:
sudo rm -f /var/www/html/info.phpQuesto è un passaggio di igiene basilare, non opzionale, soprattutto se il server è esposto su Internet.
Rendere il database MariaDB pronto per l’uso
MariaDB installato non significa MariaDB sicuro. La prima cosa da fare è l’hardening iniziale con lo script fornito dal pacchetto.
sudo mysql_secure_installationLe domande tipiche riguardano la password di root, la rimozione degli utenti anonimi, il blocco del login remoto di root, la rimozione del database di test e il reload delle tabelle dei privilegi. Le scelte consigliate in un’installazione standard sono:
- Impostare una password robusta per root se richiesto dalla procedura.
- Rimuovere gli utenti anonimi.
- Disabilitare il login remoto di root.
- Rimuovere il database di test.
- Ricaricare i privilegi.
Se vuoi verificare che il servizio risponda, accedi localmente al client SQL:
sudo mariadbAtteso: prompt MariaDB senza errori. Poi esci con exit.
Se devi creare un database e un utente per un’applicazione, fallo con privilegi minimi. Esempio concettuale: database dedicato, utente dedicato, permessi solo su quel database. Non usare account condivisi o root per l’applicazione.
Creare un virtual host Apache pulito
Per un sito reale, conviene evitare di lavorare sul sito di default. Crea un virtual host dedicato con document root separato. Questo riduce gli errori e rende più semplice il rollback.
Un flusso tipico è questo: crei la directory del sito, assegni i permessi corretti, poi aggiungi un file di configurazione in /etc/apache2/sites-available/.
sudo mkdir -p /var/www/tuosito/public_htmlsudo chown -R www-data:www-data /var/www/tuositoIl file di configurazione potrebbe puntare al document root corretto e definire il ServerName. Dopo averlo creato, abiliti il sito:
sudo a2ensite tuosito.confDisabilita il sito di default solo se non ti serve più:
sudo a2dissite 000-default.confPrima del reload, verifica sempre la sintassi:
sudo apachectl configtestSe è tutto corretto, ricarica Apache:
sudo systemctl reload apache2Rollback minimo: se il nuovo virtual host non funziona, disabilita il file appena creato con a2dissite, ricarica Apache e ripristina il sito precedente. Non cancellare subito i file di configurazione: prima stabilisci quale parte rompe il servizio.
Firewall e superficie esposta
Su Ubuntu spesso è presente UFW. Se il server deve servire HTTP e magari HTTPS, devi aprire solo le porte necessarie. Non esporre MariaDB su rete pubblica se non hai un requisito preciso e un controllo di accesso robusto.
sudo ufw statusSe UFW è attivo, consenti il profilo web:
sudo ufw allow 'Apache Full'Atteso: porte 80 e 443 aperte, non la 3306. Per un server web standard, MariaDB deve restare in ascolto solo su localhost o su una rete privata controllata.
Verifica l’ascolto delle porte:
sudo ss -lntpAtteso: Apache in ascolto su :80 e, se configurato, :443. MariaDB idealmente su 127.0.0.1:3306 o socket locale.
Test finale end-to-end
A questo punto devi verificare il flusso completo: DNS o hostname, HTTP, PHP e database. Se il server è locale, il test si fa con curl; se è remoto, usa il dominio reale.
- Controlla risposta HTTP:
curl -I http://tuodominio.tld. Atteso:200o301/302se hai un redirect voluto. - Controlla PHP con una pagina temporanea, poi rimuovila subito.
- Controlla MariaDB con accesso locale e credenziali applicative separate.
- Controlla i log di Apache se qualcosa non torna:
/var/log/apache2/error.loge/var/log/apache2/access.log.
Se la pagina non carica, la diagnosi va fatta per layer: DNS, edge/CDN se presente, Apache, PHP, database, storage. Evita di cambiare tre cose insieme.
Problemi tipici e correzioni rapide
Il problema più comune è la pagina PHP mostrata come testo o scaricata dal browser. In quel caso PHP non è stato agganciato correttamente ad Apache o il modulo non è attivo. Verifica con apachectl -M la presenza di php_module e controlla di aver installato libapache2-mod-php.
Altro caso comune: errore 403 sul document root. Di solito è un problema di permessi, directory non leggibile da www-data o configurazione del virtual host errata. Controlla ownership, permessi e direttive Require all granted dove necessario.
Se MariaDB non parte, la prima verifica è il log del servizio e lo spazio disco. Un database che non si avvia spesso ha dietro un /var pieno, un file InnoDB corrotto o un conflitto di configurazione. Non cancellare file a caso: leggi il log e fai backup prima di interventi invasivi.
Rollback minimo e manutenzione
Se stai installando lo stack su un sistema nuovo, il rollback più pulito è rimuovere il pacchetto o ripristinare uno snapshot della VM. Se invece hai toccato un host esistente, il rollback deve essere configurazionale: ripristino dei file in /etc/apache2/, disabilitazione del virtual host nuovo, stop dei servizi introdotti solo per il test e rimozione della pagina PHP temporanea.
Per mantenere il sistema ordinato, tieni sotto controllo questi punti:
- Versione di Ubuntu e aggiornamenti di sicurezza.
- Stato dei servizi con
systemctl. - Log di Apache e MariaDB.
- Spazio disco e crescita di
/var. - Presenza di file di test esposti pubblicamente.
Una manutenzione minima ma regolare evita gran parte dei problemi che fanno perdere tempo nei momenti sbagliati. Lo stack LOMP, se installato con criterio, resta semplice da gestire e abbastanza standard da essere trasferibile tra server e ambienti diversi.
Assunzione: stai installando uno stack base per sito PHP classico su host Ubuntu 22.04, senza esigenze particolari di proxy inverso, clustering o database remoto.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.