Prerequisiti e scelta dello stack
Per installare Joomla su Ubuntu 22.04 LTS in modo pulito conviene partire da uno stack classico e prevedibile: Apache come web server, MariaDB come database e PHP 8.1, che è la versione predefinita della release. È una combinazione solida per ambienti piccoli e medi, facile da mantenere e con una quantità di documentazione enorme. Se hai già un pannello, un reverse proxy o un CDN davanti al server, la logica non cambia: prima rendi stabile il nodo applicativo, poi lavori sull’esposizione pubblica.
Joomla richiede un ambiente PHP corretto, estensioni specifiche e permessi file coerenti. L’errore più comune non è l’installazione in sé, ma partire con un PHP incompleto, un database con charset sbagliato o un document root configurato male. In questa guida trovi una procedura lineare, con verifiche intermedie, così da capire subito dove si rompe qualcosa.
Assumo un server Ubuntu 22.04 aggiornato, accesso sudo e un dominio già puntato verso l’IP del server. Se il dominio non è ancora propagato, puoi comunque fare i test usando il file hosts o l’IP diretto, ma il certificato TLS andrà poi verificato sul nome corretto.
Aggiornamento base del sistema
Prima di installare qualsiasi pacchetto, aggiorna l’indice e il sistema. È un passaggio banale, ma evita di incastrarti con dipendenze vecchie o pacchetti già corretti da aggiornamenti successivi.
sudo apt update
sudo apt upgrade -y
Se vuoi ridurre il rischio operativo, soprattutto su server già in produzione, controlla anche lo spazio disco prima di procedere. Joomla e il suo stack non consumano molto all’inizio, ma un filesystem pieno produce sintomi confusi: errori PHP, installazioni parziali, database che non scrive e log incompleti.
df -h
free -h
Installazione di Apache, MariaDB e PHP
Installa il web server, il database e PHP con le estensioni più usate da Joomla. Su Ubuntu 22.04 questa è la base più lineare per evitare sorprese. Le estensioni elencate coprono i casi normali: grafica, XML, ZIP, connessioni al database, multibyte e supporto alle immagini.
sudo apt install -y apache2 mariadb-server php libapache2-mod-php php-mysql php-xml php-curl php-zip php-gd php-mbstring php-intl php-cli php-common php-opcache unzip curl
Dopo l’installazione, verifica che i servizi siano attivi. È una verifica veloce ma molto utile: se Apache o MariaDB non partono, conviene scoprirlo subito, non a metà della procedura.
systemctl status apache2 --no-pager
systemctl status mariadb --no-pager
Se uno dei due servizi risulta inattivo, controlla i log con `journalctl -u apache2` o `journalctl -u mariadb`. In un setup pulito, il risultato atteso è “active (running)”.
Hardening minimo di MariaDB
MariaDB va inizializzato con le impostazioni di base per rimuovere configurazioni inutili o rischiose. È un passaggio da fare sempre, anche se il server è interno. Riduce superficie d’attacco e ti obbliga a impostare una password amministrativa reale.
sudo mysql_secure_installation
Durante la procedura, in genere conviene rimuovere utenti anonimi, disabilitare il login root remoto e cancellare il database di test. Se il server è isolato e hai un motivo preciso per lasciare qualcosa diverso dal default, documentalo. Altrimenti usa le opzioni più restrittive.
Una volta chiusa la parte base, crea database e utente dedicati a Joomla. Evita di usare l’account root del database: non serve e complica audit, backup e ripristino.
sudo mysql -u root -p
CREATE DATABASE joomla_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'joomla_user'@'localhost' IDENTIFIED BY 'PASSWORD_FORTE_E_NON_CONDIVISA';
GRANT ALL PRIVILEGES ON joomla_db.* TO 'joomla_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Il charset `utf8mb4` non è un vezzo: è la scelta corretta per evitare limiti inutili su contenuti multilingua, emoji e caratteri estesi. Se usi un collate diverso, non è detto che tutto si rompa subito, ma stai già creando una base meno robusta del necessario.
Controllo delle estensioni PHP e della configurazione di base
Joomla funziona bene con PHP configurato in modo sensato. Non serve una personalizzazione estrema, ma conviene controllare alcuni parametri perché i default troppo stretti sono una fonte classica di errori durante upload, installazione estensioni e gestione media.
php -v
php -m | grep -E 'curl|gd|intl|mbstring|mysqli|xml|zip'
Se una delle estensioni richieste non compare, Joomla può comunque partire ma poi fallire in parti secondarie dell’interfaccia. Meglio sistemare ora che inseguire errori più tardi.
Controlla anche il file di configurazione PHP usato da Apache, di solito `php.ini`. Su Ubuntu 22.04 il percorso tipico è simile a `/etc/php/8.1/apache2/php.ini`.
sudo nano /etc/php/8.1/apache2/php.ini
I parametri che spesso meritano attenzione sono questi:
memory_limit = 256M
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 60
Non sono valori universali, ma sono un buon punto di partenza. Se prevedi upload di pacchetti grandi o migrazioni di contenuti pesanti, puoi alzarli con criterio. Ogni modifica a `php.ini` richiede il riavvio di Apache.
sudo systemctl restart apache2
Creazione della directory del sito e permessi corretti
Prepara la directory che ospiterà Joomla. Su server standard, una struttura ordinata rende più semplice il deploy, i backup e gli aggiornamenti. In genere puoi usare `/var/www/tuodominio` o un path equivalente coerente con la tua organizzazione.
sudo mkdir -p /var/www/joomla
sudo chown -R $USER:$USER /var/www/joomla
Durante il caricamento dei file, è comodo lavorare come utente amministrativo e poi assegnare ad Apache solo i permessi necessari. Il principio è semplice: il web server deve leggere ed eventualmente scrivere dove serve, non ovunque.
Se usi un workflow più rigoroso, puoi impostare il proprietario finale su `www-data` solo dopo aver completato l’upload e l’estrazione dei file. In ambienti con più siti, spesso conviene mantenere la proprietà dell’admin e usare gruppi o ACL in modo più fine. L’importante è evitare directory world-writable.
Download e posizionamento dei file di Joomla
Scarica l’archivio ufficiale di Joomla dalla fonte corretta e verifica che il download sia completo. Se usi il browser sul server, fai attenzione a non prendere un file HTML di errore al posto dell’archivio: succede più spesso di quanto si ammetta. Con `curl` il controllo è più affidabile.
cd /tmp
curl -LO https://downloads.joomla.org/cms/joomla4/4-4-0/Joomla_4-4-0-Stable-Full_Package.zip
Il nome del file può cambiare in base alla versione. Se stai leggendo questa guida in un momento successivo, prendi sempre l’URL aggiornato dalla pagina ufficiale di Joomla e non riutilizzare a occhi chiusi il link di esempio.
Estrai il pacchetto nella directory del sito:
sudo unzip Joomla_4-4-0-Stable-Full_Package.zip -d /var/www/joomla
Se vuoi evitare errori di permesso, verifica subito il contenuto e la proprietà dei file. L’obiettivo è che Apache possa leggere tutto e scrivere solo dove necessario, non che il sito sia “aperto” per comodità.
ls -la /var/www/joomla
VirtualHost Apache per Joomla
Il VirtualHost serve a dire ad Apache quale directory pubblicare e con quale nome host rispondere. È uno dei punti dove spesso si fanno errori banali: document root sbagliato, `ServerName` mancante, rewrite non abilitato o `.htaccess` ignorato.
Crea un file di configurazione dedicato, per esempio `/etc/apache2/sites-available/joomla.conf`.
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com DocumentRoot /var/www/joomla <Directory /var/www/joomla> AllowOverride All Require all granted </Directory> ErrorLog ${APACHE_LOG_DIR}/joomla_error.log CustomLog ${APACHE_LOG_DIR}/joomla_access.log combined
</VirtualHost>
Abilita il sito e il modulo rewrite, poi ricarica Apache. Senza `mod_rewrite`, alcune funzioni di Joomla e gli URL SEO-friendly non lavorano come previsto.
sudo a2ensite joomla.conf
sudo a2enmod rewrite
sudo apache2ctl configtest
sudo systemctl reload apache2
Il controllo `apache2ctl configtest` deve restituire `Syntax OK`. Se non lo fa, non andare avanti: correggi prima la configurazione, altrimenti rischi di interrompere il servizio con un reload mal riuscito.
Permessi finali e sicurezza dei file
Una volta caricati i file, assegna i permessi corretti. Il punto non è “far funzionare tutto” con permessi larghi, ma lasciare al web server il minimo indispensabile. Joomla deve poter scrivere solo dove serve davvero, ad esempio cache, media o directory di upload se previste dal flusso operativo.
sudo chown -R www-data:www-data /var/www/joomla
sudo find /var/www/joomla -type d -exec chmod 755 {} \;
sudo find /var/www/joomla -type f -exec chmod 644 {} \;
Se preferisci un approccio più restrittivo, puoi differenziare le directory scrivibili dopo aver visto come Joomla gestisce il tuo flusso di lavoro. In ogni caso, evita `777`: non è una soluzione, è solo un problema rimandato.
Installazione guidata via browser
A questo punto apri il dominio nel browser. Dovresti vedere la procedura iniziale di Joomla. Se compare una pagina Apache di default, significa che il VirtualHost non è agganciato correttamente. Se compare un errore 500, il problema è quasi sempre lato PHP, permessi o configurazione del sito.
La procedura web ti chiederà i dati essenziali: nome del sito, account amministrativo, password e credenziali del database. Usa una password amministrativa robusta e non riutilizzata. Per il database inserisci i dati creati prima: nome database `joomla_db`, utente `joomla_user`, host `localhost`.
Se la schermata di installazione mostra avvisi su requisiti mancanti, fermati e leggili con attenzione. Non conviene forzare il completamento se Joomla segnala estensioni PHP assenti o impostazioni non compatibili. La correzione a posteriori è quasi sempre più costosa della sistemazione immediata.
Rimozione della directory di installazione
Terminata l’installazione, Joomla ti chiederà di rimuovere la directory di installazione. È un passaggio importante: lasciare quella cartella disponibile espone il sito a errori o, peggio, a una reinstallazione accidentale.
sudo rm -rf /var/www/joomla/installation
Qui il rischio è evidente: il comando è distruttivo, quindi usalo solo se sei certo del path. Il prerequisito è banale ma fondamentale: il sito deve essere già installato e funzionante. Se vuoi un rollback, il modo corretto non è “tenere la cartella”: è ripristinare da backup o snapshot del filesystem prima della rimozione.
Abilitazione di HTTPS con Let’s Encrypt
Dopo aver verificato che il sito risponda su HTTP, passa a TLS. Su un sito pubblico Joomla non dovrebbe restare in chiaro più del necessario. Con Certbot la procedura è rapida e il beneficio concreto: traffico cifrato, cookie più protetti e meno attrito con browser e servizi esterni.
sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d example.com -d www.example.com
Se il certificato non si genera, di solito il problema è uno tra questi: DNS non ancora propagato, porta 80 non raggiungibile dall’esterno o VirtualHost non configurato correttamente. La verifica minima è semplice: il dominio deve rispondere dal pubblico e Apache deve servire il sito sul nome corretto.
Controlla anche il rinnovo automatico:
sudo certbot renew --dry-run
Se il test fallisce, non ignorarlo. Il certificato scade davvero, e il problema si presenta nel momento meno comodo possibile.
Verifiche post-installazione
Una volta online, fai alcuni controlli rapidi ma concreti. Prima verifica che la home si carichi senza errori visibili. Poi entra nel pannello amministrativo e controlla che editor, media manager e installazione estensioni siano operativi. Infine apri i log di Apache se noti comportamenti strani: sono la fonte più veloce per capire se un problema è di permessi, rewrite o PHP.
tail -n 50 /var/log/apache2/joomla_error.log
journalctl -u apache2 --no-pager -n 50
Se vuoi una verifica funzionale più mirata, prova a creare un articolo di test, caricare un’immagine e salvare una modifica alla configurazione globale. Sono tre azioni che coprono i punti più fragili di una nuova installazione.
Problemi tipici e correzioni rapide
Se vedi una pagina bianca, il primo sospetto è quasi sempre PHP: errore fatale, estensione mancante o limite memoria troppo basso. Controlla `error_log`, poi alza temporaneamente il livello di logging di Joomla se serve isolare il punto esatto. Se invece compare un 403, il problema è spesso nei permessi o nel `Directory` del VirtualHost.
Se l’installer dice che il database non è raggiungibile, prova a connetterti manualmente con le stesse credenziali. Se il login fallisce, il problema non è Joomla ma l’utente MySQL o l’host associato. Se invece la connessione funziona ma l’installazione no, guarda charset e privilegi sul database scelto.
Se gli URL non riscrivono correttamente, verifica `mod_rewrite`, `AllowOverride All` e il file `.htaccess`. In molti casi Joomla fornisce un file `htaccess.txt` da rinominare in `.htaccess`; se manca o non è letto, le URL SEO-friendly non funzionano come previsto.
Manutenzione minima dopo il deploy
Dopo l’installazione, la parte davvero importante è la manutenzione. Tieni aggiornati sistema operativo, PHP e Joomla con una frequenza regolare. Prima di aggiornare il CMS, fai un backup del database e della directory del sito. Non è teoria: è il modo corretto per evitare che un aggiornamento andato male diventi un fermo servizio.
In pratica, il ciclo giusto è semplice: backup, aggiornamento in finestra controllata, verifica front-end, verifica back-end, controllo log. Se qualcosa non torna, il rollback deve essere immediato e documentato. Per un sito di produzione, la capacità di tornare indietro conta più della velocità con cui fai il deploy.
Assunzioni: Ubuntu 22.04 LTS pulito, Apache, MariaDB e PHP 8.1 installati localmente, dominio già puntato al server e accesso sudo disponibile.
Commenti (0)
Nessun commento ancora.
Segnala contenuto
Elimina commento
Eliminare definitivamente questo commento?
L'azione non si può annullare.