Sei stanco delle limitazioni e delle prestazioni altalenanti dell’hosting condiviso? Ti senti come in un condominio sovraffollato, dove le azioni dei “vicini” influenzano il tuo sito? Forse è il momento di fare il salto di qualità e passare a un VPS (Virtual Private Server).
Molti pensano che sia un passo riservato solo agli esperti di sistemi, con costi proibitivi. In realtà, oggi esistono soluzioni VPS potenti e convenienti, spesso allo stesso prezzo di un buon hosting condiviso, che ti danno il pieno controllo e prestazioni dedicate per il tuo sito WordPress.
Certo, richiede un po’ più di lavoro iniziale rispetto a un hosting “pronto all’uso”, ma la libertà e le performance ripagano lo sforzo.
Questa guida è pensata proprio per te, per accompagnarti passo passo nel processo di configurazione di un ambiente ottimale per WordPress sul tuo nuovo VPS Ubuntu 22.04, utilizzando il collaudato stack LAMP: Linux, Apache (uno dei web server più diffusi e flessibili), MySQL (il database) e PHP (il linguaggio di WordPress).
Imparerai come installare WordPress LAMP e avere finalmente il tuo spazio dedicato, senza vicini rumorosi! Andremo oltre l’installazione base, coprendo anche la sicurezza, phpMyAdmin, HTTP/2 e le ottimizzazioni essenziali.
1. Introduzione a WordPress e LAMP
WordPress, uno dei sistemi di gestione dei contenuti (CMS) più popolari su Internet, consente agli utenti di creare blog e siti web flessibili utilizzando un backend MySQL con elaborazione PHP. WordPress è un’ottima scelta per mettere online un sito web in modo efficiente.
Dopo una configurazione iniziale, quasi tutta l’amministrazione dei siti web WordPress può essere eseguita tramite la sua interfaccia grafica.
In questo tutorial, ci concentreremo su come ottenere un’istanza di WordPress configurata su uno stack LAMP (Linux, Apache, MySQL e PHP) per un server Ubuntu 22.04. Imparare a installare WordPress LAMP ti darà solide basi.
2. Prerequisiti Fondamentali
Per completare questo tutorial, avrai bisogno dell’accesso a un server Ubuntu 22.04 (ad esempio, un VPS da provider come DigitalOcean, Vultr, Linode, Aruba Cloud, ecc.).
Per installare WordPress LAMP con successo sul tuo server, dovrai anche eseguire le seguenti attività prima di iniziare questo tutorial specifico:
- Creare un utente sudo sul tuo server: I passaggi in questo tutorial utilizzano un utente non
root
con privilegisudo
. È una pratica fondamentale per la sicurezza. - Avere un nome di dominio registrato puntato all’IP pubblico del tuo VPS. Questo è necessario per configurare correttamente HTTPS con Let’s Encrypt.
- Avere familiarità con la linea di comando Linux.
I passaggi che copriremo includono l’installazione dello stack LAMP e la protezione del sito con SSL.
3. Configurazione Iniziale del Server Ubuntu 22.04
Quando crei per la prima volta un nuovo server Ubuntu, dovresti eseguire alcuni importanti passaggi di configurazione come parte dell’impostazione iniziale.
Questi passaggi aumenteranno la sicurezza e l’usabilità del tuo server e ti daranno una solida base per le azioni successive.
3.1 Accesso come root
Per interagire con il tuo server VPS, dovrai stabilire una connessione sicura tramite SSH (Secure Shell).
Il metodo esatto e lo strumento da utilizzare dipendono dal tuo sistema operativo:
- Su Windows: Lo strumento più comune e gratuito è PuTTY. Puoi scaricarlo dal sito ufficiale (https://www.putty.org/). Una volta scaricato e avviato, dovrai:
- Inserire l’Indirizzo IP Pubblico del tuo server nel campo “Host Name (or IP address)“.
- Assicurarti che la porta sia impostata su 22 (la porta standard per SSH).
- Assicurarti che il tipo di connessione sia impostato su SSH.
- (Opzionale ma consigliato per chiavi SSH): Se usi l’autenticazione tramite chiave SSH, vai su “Connection” » “SSH” » “Auth” » “Credentials” nel menu a sinistra e clicca su “Browse…” per selezionare il tuo file di chiave privata (
.ppk
). - Clicca su “Open” per avviare la connessione.
- Su macOS o Linux: Non hai bisogno di installare software aggiuntivo. Puoi usare l’applicazione Terminale integrata.
- Apri il Terminale e digita il seguente comando, sostituendo
your_server_ip
con l’indirizzo IP pubblico del tuo server:ssh root@your_server_ip
- Se usi una chiave SSH con un percorso specifico, potresti doverla indicare con l’opzione
-i
:ssh -i /percorso/della/tua/chiave_privata root@your_server_ip
- Apri il Terminale e digita il seguente comando, sostituendo
La Connessione:
Indipendentemente dallo strumento usato, la prima volta che ti connetti, potresti vedere un avviso sull’autenticità dell’host.
Questo è normale. Digita yes e premi ENTER per confermare e salvare l’impronta digitale del server.
Successivamente, ti verrà richiesto di autenticarti:
- Se usi la password: Inserisci la password dell’utente
root
che ti è stata fornita dal tuo provider VPS (o che hai impostato). Nota che mentre digiti la password nel terminale/PuTTY, non vedrai caratteri apparire sullo schermo per motivi di sicurezza. Premi ENTER dopo averla digitata. Se è il primo accesso, potrebbe esserti richiesto di cambiare immediatamente la password. - Se usi una chiave SSH: Se la tua chiave non è protetta da passphrase, la connessione avverrà automaticamente. Se hai impostato una passphrase per la tua chiave privata, ti verrà richiesta ora. Inseriscila e premi ENTER.
Una volta autenticato con successo, vedrai il prompt dei comandi del tuo server, che indica che sei connesso come utente root
.
Nota su root: L’utente
root
è l’utente amministrativo in un ambiente Linux con privilegi elevati. A causa dei privilegi elevati dell’accountroot
, si sconsiglia di usarlo regolarmente. L’accountroot
può apportare modifiche molto distruttive, anche per errore. Il passo successivo è configurare un nuovo account utente con privilegi ridotti per l’uso quotidiano.
3.2 Creazione di un Nuovo Utente
Una volta effettuato l’accesso come root
, sarai in grado di aggiungere il nuovo account utente. In futuro, accederemo con questo nuovo account invece che con root
.
Questo esempio crea un nuovo utente chiamato sammy
, ma dovresti sostituirlo con un nome utente che preferisci:
adduser sammy
Ti verranno poste alcune domande, a partire dalla password dell’account. Inserisci una password complessa e, facoltativamente, compila eventuali informazioni aggiuntive che desideri.
Queste informazioni non sono richieste e puoi premere ENTER in qualsiasi campo che desideri saltare.
3.3 Concessione Privilegi Amministrativi (sudo)
Ora hai un nuovo account utente con privilegi di account regolari. Tuttavia, a volte avrai bisogno di eseguire attività amministrative.
Per evitare di dover sempre usare l’utente root
, puoi concedere privilegi di superuser
al tuo nuovo utente tramite il comando sudo
.
Per aggiungere questi privilegi al tuo nuovo utente, aggiungilo al gruppo di sistema sudo
.
Come root
, esegui questo comando (sostituisci sammy
con il tuo nuovo utente):
usermod -aG sudo sammy
Ora puoi anteporre sudo
ai comandi per eseguirli con privilegi elevati quando sei loggato come il tuo utente regolare.
3.4 Impostazione del Firewall (UFW)
I server Ubuntu utilizzano UFW (Uncomplicated Firewall) per controllare le connessioni in entrata. Configuriamo le regole base. OpenSSH (per la connessione SSH) ha un profilo predefinito.
Verifica i profili disponibili:
ufw app list
Output atteso (minimo):
Available applications:
OpenSSH
Consenti le connessioni SSH:
ufw allow OpenSSH
Abilita il firewall:
ufw enable
Digita y e premi ENTER per confermare.
Verifica lo stato:
ufw status
Output atteso:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Il firewall ora blocca tutto tranne SSH. Dovrai aggiungere regole per Nginx (HTTP/HTTPS) più avanti.
3.5 Abilitazione Accesso Esterno per l’Utente Regolare
Ora devi poter accedere direttamente con il tuo nuovo utente sudo
(es. sammy
).
- Se l’account root usa autenticazione tramite password:
Puoi già accedere con il nuovo utente via SSH:ssh sammy@your_server_ip
Inserisci la password del nuovo utente.
- Se l’account root usa autenticazione tramite chiave SSH:
Devi copiare la chiave pubblica dalroot
al nuovo utente.
Dalla sessioneroot
ancora attiva, esegui (sostituiscisammy
due volte):rsync --archive --chown=sammy:sammy ~/.ssh /home/sammy
(Assicurati che
~/.ssh
non abbia la barra finale).
Ora puoi disconnetterti dalla sessioneroot
e accedere con il nuovo utente da un nuovo terminale:ssh sammy@your_server_ip
Da questo punto in poi, esegui tutti i comandi come il tuo nuovo utente sudo
(es. sammy
), anteponendo sudo
ai comandi che richiedono privilegi di amministratore. Disconnettiti dalla sessione root
.
3.6 Imposta Aggiornamenti Automatici di Sicurezza (Consigliato)
Mantenere il sistema operativo aggiornato è cruciale per la sicurezza. Ubuntu offre un modo per installare automaticamente gli aggiornamenti di sicurezza.
Installa il pacchetto necessario:
sudo apt update
sudo apt install unattended-upgrades
Ora, abilita e configura gli aggiornamenti automatici eseguendo:
sudo dpkg-reconfigure --priority=low unattended-upgrades
Si aprirà un’interfaccia testuale. Seleziona <Yes> (o <Sì>) per abilitare gli aggiornamenti automatici e premi ENTER.
Questo aiuterà a mantenere il tuo server protetto senza intervento manuale per le patch di sicurezza critiche.
4. Installazione dello Stack LAMP (Apache, MySQL, PHP)
Lo stack software LAMP è un gruppo di software che può essere utilizzato per servire pagine web dinamiche e applicazioni web scritte in PHP.
Questo acronimo descrive un sistema operativo Linux, con un web server Nginx.
I dati di backend sono archiviati nel database MySQL e l’elaborazione dinamica è gestita da PHP.
Ora vedremo come installare Apache, MySQL e PHP, fondamentali per poter installare WordPress LAMP.
4.1 Installazione del Web Server Apache
Per visualizzare le pagine web ai visitatori del sito, utilizzerai Apache. Utilizzerai il gestore di pacchetti APT per ottenere questo software.
Poiché questa è la prima volta che usi apt
per questa sessione, inizia aggiornando l’indice dei pacchetti del tuo server:
sudo apt update
Successivamente, esegui apt install
per installare Apache:
sudo apt install apache2
Conferma l’installazione (Y). Una volta installato, Apache dovrebbe avviarsi automaticamente.
Abilita Apache nel Firewall (Solo HTTP per ora):
Il firewall UFW deve permettere il traffico web. Apache registra diversi profili con UFW. Controlliamoli:
sudo ufw app list
Vedrai un output simile a:
Available applications:
Apache
Apache Full
Apache Secure
OpenSSH
- Apache: Apre solo la porta 80 (traffico HTTP non crittografato).
- Apache Full: Apre sia la porta 80 (HTTP) che la porta 443 (HTTPS).
- Apache Secure: Apre solo la porta 443 (HTTPS).
Per ora, consentiamo solo il traffico HTTP. Abiliteremo HTTPS dopo aver installato Certbot.
sudo ufw allow 'Apache' sudo ufw status # Verifica che 'Apache' sia ALLOW
Crea Struttura Base e Configurazione Virtual Host Minima (Prima di Certbot):
Questo passaggio prepara il terreno per Certbot e WordPress. Sostituisci your_domain con il tuo nome di dominio reale.
- Crea la directory web root:
sudo mkdir -p /var/www/your_domain
- Assegna proprietà:
sudo chown -R $USER:$USER /var/www/your_domain
- Crea il file di configurazione del Virtual Host minimo per Apache: Apache su Ubuntu utilizza file di configurazione in
/etc/apache2/sites-available/
. Creane uno per il tuo dominio:sudo nano /etc/apache2/sites-available/your_domain.conf
Incolla questo contenuto base, sostituendo
your_domain
ewww.your_domain
:<VirtualHost *:80> ServerAdmin webmaster@localhost ServerName your_domain ServerAlias www.your_domain DocumentRoot /var/www/your_domain ErrorLog ${APACHE_LOG_DIR}/your_domain_error.log CustomLog ${APACHE_LOG_DIR}/your_domain_access.log combined </VirtualHost>
Salva e chiudi (
CTRL+X
,Y
,ENTER
). - Abilita il nuovo sito e disabilita quello predefinito:
sudo a2ensite your_domain.conf sudo a2dissite 000-default.conf
- Testa la configurazione e ricarica Apache:
sudo apache2ctl configtest
Se l’output è
Syntax OK
, ricarica Apache:sudo systemctl reload apache2
- (Opzionale) Crea un file index.html di test:
echo "<h1>Ciao Apache!</h1>" | sudo tee /var/www/your_domain/index.html
Visita
http://your_domain
(o il tuo IP) nel browser. Dovresti vedere “Ciao Apache!“. Rimuovi il file dopo (sudo rm /var/www/your_domain/index.html
).
4.2 Installare Certbot e Ottenere un Certificato SSL Let’s Encrypt (Fondamentale)
Ora proteggiamo il sito con HTTPS usando Let’s Encrypt e Certbot.
Passaggio 1: Installa Certbot e il Plugin Apache:
sudo apt update
sudo apt install certbot python3-certbot-apache
Passaggio 2: Ottieni il Certificato SSL:
Esegui Certbot specificando il plugin Apache e i tuoi domini (sostituisci):
sudo certbot --apache -d your_domain -d www.your_domain
--apache
: Indica a Certbot di usare il plugin Apache per autenticare il dominio e modificare automaticamente la configurazione di Apache per usare il nuovo certificato.
Passaggio 3: Segui le Istruzioni:
- Inserisci la tua email.
- Accetta i Termini di Servizio.
- Scegli se condividere l’email con EFF (opzionale).
- Scegli se reindirizzare HTTP a HTTPS (Opzione 2, raccomandata).
Certbot configurerà Apache automaticamente e lo ricaricherà.
Passaggio 4: Aggiorna il Firewall per HTTPS:
sudo ufw allow 'Apache Full'
sudo ufw delete allow 'Apache' # Rimuove la regola solo HTTP
sudo ufw status
Ora dovresti poter accedere a https://your_domain
e vedere il lucchetto.
Passaggio 5: Verifica Rinnovo Automatico:
sudo certbot renew --dry-run
Se non ci sono errori, Certbot gestirà i rinnovi.
4.3 Installazione di MySQL
Ora che hai un web server funzionante, devi installare il sistema di database per archiviare e gestire i dati per il tuo sito.
MySQL è un popolare sistema di gestione di database utilizzato negli ambienti PHP.
Utilizza di nuovo apt
:
sudo apt install mysql-server
Conferma l’installazione quando richiesto.
Al termine dell’installazione, si consiglia di eseguire uno script di sicurezza preinstallato con MySQL.
Questo script rimuoverà alcune impostazioni predefinite non sicure e bloccherà l’accesso al tuo sistema di database.
Avvia lo script interattivo eseguendo:
sudo mysql_secure_installation
Ti verrà chiesto se desideri configurare il VALIDATE PASSWORD PLUGIN
.
Rispondi y (sì) o qualsiasi altra cosa per continuare senza abilitarlo. Se rispondi “sì”, ti verrà chiesto di selezionare un livello di convalida della password (0=BASSO, 1=MEDIO, 2=FORTE).
Successivamente, il server ti chiederà di selezionare e confermare una password per l’utente root
di MySQL (questa è diversa dall’utente root del sistema).
Definisci una password robusta qui, anche se per impostazione predefinita l’accesso come root
MySQL da console non la richiederà grazie all’autenticazione auth_socket
.
Per il resto delle domande (rimuovere utenti anonimi, disabilitare login root remoto, rimuovere database di test, ricaricare tabelle privilegi), premi Y e ENTER ad ogni prompt.
Al termine, testa se riesci ad accedere alla console MySQL:
sudo mysql
Dovresti vedere il prompt mysql>
.
Per uscire, digita:
exit
Nota sulla sicurezza e auth_socket: L’autenticazione
auth_socket
è sicura perché solo gli utenti di sistema con privilegi sudo possono accedere come root MySQL dalla console. Tuttavia, significa che non potrai usare l’utente root MySQL direttamente dalla tua applicazione PHP (come WordPress). Creeremo un utente dedicato per questo.
4.4 Installazione di PHP
Installiamo PHP e il modulo Apache per PHP, oltre al modulo MySQL per PHP (verifica la versione, es. 8.1):
sudo apt install php8.1 libapache2-mod-php8.1 php8.1-mysql
Dopo l’installazione, potrebbe essere necessario riavviare Apache per caricare il modulo PHP:
sudo systemctl restart apache2
4.5 Configurazione di Apache per Utilizzare PHP (Verifica e Moduli)
Apache, con libapache2-mod-php
, è generalmente configurato per processare file PHP per impostazione predefinita dopo l’installazione del modulo. Tuttavia, è buona norma assicurarsi che dia priorità a index.php
.
Modifica il file dir.conf
per impostare index.php
come prima scelta se non lo è già:
sudo nano /etc/apache2/mods-enabled/dir.conf
Assicurati che la linea DirectoryIndex
assomigli a questa, con index.php
per primo:
<IfModule mod_dir.c> DirectoryIndex index.php index.html index.cgi index.pl index.xhtml index.htm </IfModule>
Salva e chiudi, poi riavvia Apache:
sudo systemctl restart apache2
Inoltre, per il corretto funzionamento dei permalink di WordPress, il modulo rewrite
di Apache deve essere abilitato. Solitamente lo è per impostazione predefinita, ma puoi verificarlo e abilitarlo se necessario:
sudo a2enmod rewrite
sudo systemctl restart apache2
4.6 Test di PHP con Apache
Crea un file info.php
per testare:
echo "<?php phpinfo(); ?>" | sudo tee /var/www/your_domain/info.php
Visita https://your_domain/info.php
(nota HTTPS). Dovresti vedere la pagina informativa di PHP.

Rimuovi il file dopo il test!
sudo rm /var/www/your_domain/info.php
4.7 Test Connessione Database da PHP (Opzionale)
Questo passaggio verifica che PHP possa connettersi a MySQL. Creeremo un database e un utente di test.
Connettiti alla console MySQL:
sudo mysql
Crea un database di test:
CREATE DATABASE test_database;
Crea un utente di test (sostituisci ‘password_sicura
‘ con una password robusta) utilizzando mysql_native_password
per compatibilità:
CREATE USER 'test_user'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password_sicura';
Concedi i privilegi a questo utente sul database di test:
GRANT ALL ON test_database.* TO 'test_user'@'localhost';
Esci da MySQL:
exit
Crea uno script PHP per testare la connessione:
sudo nano /var/www/your_domain/test_db.php
Incolla il seguente script, sostituendo test_user
e password_sicura
con le credenziali appena create:
<?php
$user = "test_user";
$password = "password_sicura";
$database = "test_database";
$table = "test_table";
try {
$db = new PDO("mysql:host=localhost;dbname=$database", $user, $password);
echo "<h2>Connessione Riuscita!</h2><p>Proviamo a creare e interrogare una tabella...</p>";
// Prova a creare una tabella (ignora l'errore se esiste già)
$db->exec("CREATE TABLE IF NOT EXISTS $database.$table (
id INT AUTO_INCREMENT,
content VARCHAR(255),
PRIMARY KEY(id)
)");
echo "<p>Tabella '$table' controllata/creata.</p>";
// Prova a inserire dati
$db->exec("INSERT INTO $database.$table (content) VALUES ('Test item " . rand() . "')");
echo "<p>Riga inserita.</p>";
// Prova a leggere i dati
echo "<h3>Contenuto Tabella:</h3><ol>";
foreach($db->query("SELECT content FROM $database.$table") as $row) {
echo "<li>" . htmlspecialchars($row['content']) . "</li>"; // Aggiunto htmlspecialchars per sicurezza
}
echo "</ol>";
} catch (PDOException $e) {
print "Errore!: " . $e->getMessage() . "<br/>";
die();
}
Salva e chiudi.
Visita https://server_domain_or_IP/test_db.php
nel tuo browser.
Se vedi “Connessione Riuscita!
” e un elenco di elementi di test, la connessione PHP-MySQL funziona!
Ricorda di rimuovere questo file di test dopo la verifica:
sudo rm /var/www/your_domain/test_db.php
5. Installare WordPress LAMP: Passaggi Finali
Ora che il tuo stack LAMP è pronto e sicuro con SSL, possiamo finalmente installare WordPress LAMP.
5.1 Creazione database e utente MySQL per WordPress
WordPress ha bisogno del proprio database e utente.
Accedi a MySQL:
sudo mysql
Crea il database per WordPress (puoi chiamarlo diversamente se preferisci):
CREATE DATABASE wordpress DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Nota: utf8mb4
è raccomandato per un miglior supporto a caratteri internazionali ed emoji.
Crea un utente MySQL dedicato per WordPress (sostituisci 'password_wp_sicura'
con una password robusta e unica):
CREATE USER 'wordpressuser'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password_wp_sicura';
Concedi tutti i privilegi a questo utente solo sul database WordPress:
GRANT ALL PRIVILEGES ON wordpress.* TO 'wordpressuser'@'localhost';
Applica le modifiche ai privilegi:
FLUSH PRIVILEGES;
Esci da MySQL:
exit
5.2 Installare e Proteggere phpMyAdmin (Opzionale ma Utile)
phpMyAdmin è una popolare interfaccia web per gestire i database MySQL.
Installazione:
sudo apt update
sudo apt install phpmyadmin php-mbstring php-zip php-gd php-json php-curl
Durante l’installazione:
- Selezione Web Server: Ti chiederà quale web server riconfigurare automaticamente. Questa volta, seleziona
apache2
premendo la barra spaziatrice (dovrebbe apparire un*
) e poiTAB
per <Ok
> eENTER
. - Configurare database per phpmyadmin con dbconfig-common? Seleziona <
Yes
> e imposta le password richieste.
phpMyAdmin dovrebbe ora essere accessibile a https://your_domain/phpmyadmin
.
Protezione di phpMyAdmin (FONDAMENTALE!):
L’accesso pubblico a phpMyAdmin è un rischio. Apache permette di proteggerlo facilmente con un file .htaccess
.
- Crea un file
.htaccess
nella directory di phpMyAdmin. Solitamente è/usr/share/phpmyadmin/
. Abilita prima la sovrascrittura per questa directory. Modifica la configurazione di Apache per phpMyAdmin (spesso in/etc/apache2/conf-available/phpmyadmin.conf
):sudo nano /etc/apache2/conf-available/phpmyadmin.conf
All’interno del blocco
<Directory /usr/share/phpmyadmin>
, aggiungi o modifica la direttivaAllowOverride
inAll
:<Directory /usr/share/phpmyadmin> Options FollowSymLinks DirectoryIndex index.php AllowOverride All # ... altre direttive ... </Directory>
Riavvia Apache:
sudo systemctl restart apache2
. - Ora crea il file
.htaccess
e il file delle password:sudo nano /usr/share/phpmyadmin/.htaccess
Incolla questo contenuto:
AuthType Basic AuthName "Admin Login" AuthUserFile /etc/apache2/.phpmyadmin_passwd Require valid-user
Salva e chiudi.
- Crea il file delle password (sostituisci
TUO_NOME_UTENTE_HTTP
):sudo htpasswd -c /etc/apache2/.phpmyadmin_passwd TUO_NOME_UTENTE_HTTP
Ti chiederà di inserire e confermare una password.
Ora, visitando https://your_domain/phpmyadmin
, ti verrà richiesto un nome utente e password HTTP prima della schermata di login di phpMyAdmin.
Per imparare a utilizzare efficacemente phpMyAdmin per operazioni comuni come backup, ottimizzazione e risoluzione problemi del database WordPress, consulta la nostra guida dedicata: Gestione database WordPress: Guida phpMyAdmin per principianti.
5.3 Installazione Estensioni PHP Aggiuntive
Installiamo estensioni comuni per WordPress (verifica versione PHP):
sudo apt update
sudo apt install php8.1-curl php8.1-gd php8.1-intl php8.1-mbstring php8.1-soap php8.1-xml php8.1-xmlrpc php8.1-zip php8.1-imagick
Riavvia Apache dopo aver installato nuove estensioni PHP:
sudo systemctl restart apache2
5.4 Configurazione .htaccess per Permalink WordPress
Perché i permalink “belli” di WordPress funzionino correttamente su Apache, il file .htaccess
nella directory principale di WordPress deve contenere le regole appropriate.
WordPress cercherà di crearlo o modificarlo automaticamente, ma assicurati che la tua configurazione del Virtual Host (nel file /etc/apache2/sites-available/your_domain.conf
) permetta le sovrascritture tramite .htaccess
per la tua web root.
All’interno del blocco <VirtualHost *:443>
(quello per HTTPS), assicurati che ci sia una sezione <Directory /var/www/your_domain>
simile a questa:
<Directory /var/www/your_domain>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
La direttiva AllowOverride All
è cruciale. Se hai apportato modifiche, riavvia Apache:
sudo systemctl restart apache2
5.5 Download di WordPress
Passiamo a una directory scrivibile (come /tmp
) e scarichiamo l’ultima versione di WordPress:
cd /tmp
curl -LO https://it.wordpress.org/latest-it_IT.tar.gz # Scarica versione italiana
Estraiamo l’archivio:
tar xzvf latest-it_IT.tar.gz
5.6 Configurazione del file ‘wp-config.php’
WordPress ha bisogno di un file di configurazione wp-config.php
per connettersi al database.
Creiamolo partendo dal file di esempio:
cp /tmp/wordpress/wp-config-sample.php /tmp/wordpress/wp-config.php
Ora copiamo tutti i file di WordPress nella root del nostro sito (sostituisci your_domain
):
sudo cp -a /tmp/wordpress/. /var/www/your_domain/
Assegniamo la proprietà dei file al web server (Apache solitamente gira come www-data
su Ubuntu):
sudo chown -R www-data:www-data /var/www/your_domain/
Ora modifichiamo il file wp-config.php
per inserire le credenziali del database e le chiavi di sicurezza.
Apriamolo:
sudo nano /var/www/your_domain/wp-config.php
- Credenziali Database: Trova le seguenti righe e sostituisci i valori segnaposto con il nome del database, l’utente e la password che hai creato al passaggio 5.1:
define( 'DB_NAME', 'wordpress' ); define( 'DB_USER', 'wordpressuser' ); define( 'DB_PASSWORD', 'password_wp_sicura' ); define( 'DB_HOST', 'localhost' ); // Solitamente localhost va bene
- Chiavi di Sicurezza e SALT: Trova la sezione con le chiavi segnaposto. Apri una nuova finestra del browser e visita
https://api.wordpress.org/secret-key/1.1/salt/
. Copia l’intero blocco di codice generato e sostituisci le righe segnaposto nel tuowp-config.php
con quelle appena copiate. - Metodo Filesystem: Aggiungi questa riga sotto le impostazioni del database (o comunque prima di
/* That's all... */
) per evitare che WordPress chieda credenziali FTP per installare/aggiornare temi/plugin:define( 'FS_METHOD', 'direct' );
Salva e chiudi il file wp-config.php
.
5.7 Completamento Installazione Tramite Interfaccia Web
Ora che la configurazione del server è completa, puoi terminare l’installazione tramite l’interfaccia web di WordPress.
Nel tuo browser, naviga verso il nome di dominio o l’IP pubblico del tuo server:
https://server_domain_or_IP
Se tutto è configurato correttamente, dovresti vedere la schermata di selezione della lingua di WordPress.

Seleziona l’Italiano e clicca Continua. Successivamente, arriverai alla pagina di configurazione principale.
Inserisci un titolo per il tuo sito WordPress, scegli un nome utente per l’amministratore (si consiglia di non usare “admin” per motivi di sicurezza), una password robusta (quella generata automaticamente è ottima, salvala!) e il tuo indirizzo email.
Scegli se scoraggiare o meno i motori di ricerca dall’indicizzare il sito (puoi cambiarlo dopo).

Quando fai clic su “Installa WordPress“, verrai portato a una pagina che ti informa del successo dell’installazione e ti chiede di accedere.

Una volta effettuato l’accesso con le credenziali appena create, verrai portato alla dashboard di amministrazione di WordPress.

6. Ottimizzazioni Post-Installazione
Ora che WordPress è installato, vediamo alcune ottimizzazioni importanti per il tuo VPS con stack LAMP.
6.1 Abilitare HTTP/2 su Apache
HTTP/2 migliora le prestazioni e richiede HTTPS. Apache 2.4.26+ supporta HTTP/2 tramite il modulo mod_http2
.
- Abilita il modulo HTTP/2 (se non già attivo):
sudo a2enmod http2
- Modifica la configurazione SSL del tuo Virtual Host:
Apri il file di configurazione del tuo sito per la porta 443 (quello modificato da Certbot, solitamente in/etc/apache2/sites-available/your_domain-le-ssl.conf
):sudo nano /etc/apache2/sites-available/your_domain-le-ssl.conf
All’interno del blocco
<IfModule mod_ssl.c>
<VirtualHost *:443>
</VirtualHost>
</IfModule>,
aggiungi la direttivaProtocols
all’inizio del bloccoVirtualHost
:<IfModule mod_ssl.c> <VirtualHost *:443> Protocols h2 http/1.1 ServerAdmin webmaster@localhost ServerName your_domain ServerAlias www.your_domain DocumentRoot /var/www/your_domain # ... altre direttive SSL e di log da Certbot ... # ... sezione <Directory> ... </VirtualHost> </IfModule> ``` `h2` abilita HTTP/2, `http/1.1` è il fallback per i client non compatibili.
- Salva, testa la configurazione e riavvia Apache:
sudo apache2ctl configtest sudo systemctl restart apache2
Verifica con gli strumenti del browser che il sito sia servito tramite HTTP/2 su HTTPS.
6.2 Bonus Essenziale: Ottimizzazioni Iniziali PHP e Apache
Indipendentemente dalla potenza del tuo VPS, alcuni aggiustamenti di base nei file di configurazione possono prevenire errori comuni e migliorare le prestazioni, specialmente sotto carico.
Non esagerare all’inizio, ma considera questi punti:
- PHP (php.ini):
- Il file
php.ini
principale si trova solitamente in/etc/php/8.1/fpm/php.ini
(cambia 8.1 con la tua versione). Dopo averlo modificato, devi riavviare PHP-FPM (sudo systemctl restart php8.1-fpm
). - memory_limit: Definisce la memoria massima che uno script PHP può consumare. Un valore troppo basso (es. 64M) può causare errori “Allowed memory size exhausted“. Aumentalo gradualmente se necessario (es. 128M, 256M, 512M), ma senza esagerare per non consumare tutta la RAM del server.
- upload_max_filesize: La dimensione massima dei file caricabili tramite PHP (es. dalla libreria media di WordPress). Aumentalo se devi caricare file grandi (es. 64M).
- post_max_size: La dimensione massima dei dati inviati tramite POST (include i file caricati). Deve essere uguale o maggiore di
upload_max_filesize
(es. 64M). - max_execution_time: Tempo massimo in secondi che uno script può impiegare prima di essere terminato. Potrebbe essere necessario aumentarlo (es. 60 o 120) per operazioni lunghe come importazioni o backup, ma attenzione a non impostarlo troppo alto.
- Ricorda di riavviare Apache dopo le modifiche a
php.ini
:sudo systemctl restart apache2
- Il file
- Apache Globale (
apache2.conf
) e Moduli MPM:- Il file principale è
/etc/apache2/apache2.conf
. - Apache utilizza i Multi-Processing Modules (MPM) per gestire le richieste. Su Ubuntu, il predefinito è spesso
mpm_event
ompm_prefork
.mpm_event
è generalmente più performante per gestire molte connessioni simultanee rispetto ampm_prefork
(che è più vecchio ma a volte necessario per codice PHP non thread-safe, anche se raro oggi). - Puoi controllare quale MPM è attivo con
apache2ctl -V | grep -i mpm
. - Le impostazioni di tuning specifiche (
StartServers
,MinSpareServers
,MaxSpareServers
,MaxRequestWorkers
,ServerLimit
) dipendono dall’MPM in uso e si trovano nei file di configurazione dell’MPM (es./etc/apache2/mods-available/mpm_event.conf
). - Non modificare questi valori a caso. Un tuning errato può peggiorare le prestazioni. Per iniziare, i valori predefiniti sono spesso sufficienti per un singolo sito. Se il tuo VPS ha molte risorse e traffico, potresti voler ricercare come ottimizzare l’MPM specifico in uso.
- Il file principale è
- Apache Dominio (
/etc/apache2/sites-available/your_domain.conf
):KeepAlive On
: Assicurati che sia attivo (solitamente lo è per impostazione predefinita). Permette più richieste sulla stessa connessione TCP, riducendo la latenza.MaxKeepAliveRequests
: Numero di richieste per connessione Keep-Alive.KeepAliveTimeout
: Tempo di attesa per la prossima richiesta sulla stessa connessione.LimitRequestBody
(in.htaccess
o<Directory>
): Simile aclient_max_body_size
di Nginx. Se carichi file grandi tramite WordPress, potresti aver bisogno di aumentarlo (es.LimitRequestBody 67108864
per 64MB).
Importante: Apporta queste modifiche con cautela, una alla volta, e testa.
7. Conclusione e Prossimi Passi
Congratulazioni! Hai completato con successo il processo per installare WordPress LAMP sul tuo server Ubuntu 22.04, protetto con SSL e hai gettato le basi per ottimizzarlo. Ora hai una base solida e performante per il tuo sito, libera dai vincoli dell’hosting condiviso.
Alcuni passaggi successivi comuni sono la scelta dell’impostazione dei permalink per i tuoi post (si trova in Impostazioni » Permalink – scegli “Nome articolo” per la SEO) o la selezione di un nuovo tema (in Aspetto » Temi).
Se è la prima volta che usi WordPress, esplora un po’ l’interfaccia per familiarizzare con il tuo nuovo CMS.
Se questo articolo vi è piaciuto, seguiteci su X e Facebook per rimanere aggiornati su tutte le novità e consigli utili su WordPress!