Questa guida copre solo i passaggi specifici di WordPress: database MariaDB dedicato, configurazione Nginx per WordPress, installazione tramite WP-CLI, ottimizzazioni PHP e sicurezza di wp-admin. I passaggi preliminari sono documentati separatamente: vedere i link all'inizio di ogni sezione.
Prerequisiti
Prima di iniziare, i seguenti elementi devono essere già presenti sul vostro VPS:
- Nginx e PHP 8.4-FPM installati → guida Nginx + PHP-FPM
- Firewall UFW configurato (porte 80 e 443 aperte) → guida UFW
- Accesso SSH protetto da chiave → guida chiave SSH
- Un nome di dominio che punta all'IP del VPS (record A configurato)
Estensioni PHP richieste da WordPress (fonte: wordpress.org/about/requirements/): verificare che siano installate:
- php8.4-mysql, php8.4-curl, php8.4-gd, php8.4-mbstring, php8.4-xml, php8.4-zip, php8.4-intl, php8.4-opcache
Se queste estensioni non sono presenti, aggiungerle:
sudo apt install -y php8.4-mysql php8.4-curl php8.4-gd php8.4-mbstring php8.4-xml php8.4-zip php8.4-intl php8.4-opcache Nginx e PHP-FPM non sono ancora installati? Seguite prima la nostra guida installare Nginx e PHP-FPM su un VPS Linux. E per un accesso sicuro fin dall'inizio, configurate una chiave SSH.
Passo 1 - Creare il database MariaDB dedicato
WordPress richiede un database e un utente dedicati. Non utilizzare root per le connessioni applicative.
Connettersi a MariaDB:
sudo mariadb -u root Creare il database, l'utente e i privilegi (sostituire i valori di esempio):
CREATE DATABASE wordpress_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'password_forte';
GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wordpress_user'@'localhost';
FLUSH PRIVILEGES;
EXIT; Nota: utf8mb4 è il set di caratteri raccomandato da WordPress per il supporto completo di emoji e caratteri Unicode (fonte: developer.wordpress.org/advanced-administration/before-install/howto-install/).
Passo 2 - Installare WP-CLI
WP-CLI è lo strumento ufficiale a riga di comando per WordPress. Permette di installare, configurare e mantenere WordPress senza interfaccia grafica.
curl -O https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x wp-cli.phar
sudo mv wp-cli.phar /usr/local/bin/wp Verificare l'installazione:
wp --info Fonte: wp-cli.org/docs/installing/
Passo 3 - Scaricare e configurare WordPress
Scaricare WordPress
sudo mkdir -p /var/www/miosito.it
sudo chown -R www-data:www-data /var/www/miosito.it
cd /var/www/miosito.it
sudo -u www-data wp core download --locale=it_IT Creare wp-config.php
sudo -u www-data wp config create \
--dbname=wordpress_db \
--dbuser=wordpress_user \
--dbpass=password_forte \
--dbhost=localhost \
--dbcharset=utf8mb4 \
--locale=it_IT Avviare l'installazione di WordPress
sudo -u www-data wp core install \
--url=https://miosito.it \
--title="Il mio sito" \
--admin_user=admin \
--admin_password=password_admin \
[email protected] Nota: sostituire tutti i valori di esempio con i vostri. Utilizzare una password admin robusta (minimo 16 caratteri, maiuscole, numeri, simboli).
Passo 4 - Configurare il vhost Nginx per WordPress
La configurazione Nginx per WordPress richiede direttive specifiche per i permalink e la sicurezza. Creare un file di configurazione dedicato:
sudo nano /etc/nginx/sites-available/miosito.it Contenuto del file (sostituire miosito.it con il vostro dominio):
server {
listen 80;
listen [::]:80;
server_name miosito.it www.miosito.it;
root /var/www/miosito.it;
index index.php;
# Dimensione massima degli upload (da allineare con PHP)
client_max_body_size 64M;
# Permalink WordPress
location / {
try_files $uri $uri/ /index.php?$args;
}
# Elaborazione PHP tramite PHP-FPM
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
# Bloccare l'accesso ai file sensibili
location ~ /\.(ht|git|env) {
deny all;
}
# Bloccare l'accesso diretto a xmlrpc.php se non utilizzato
location = /xmlrpc.php {
deny all;
}
# Cache del browser per gli asset statici
location ~* \.(css|js|jpg|jpeg|png|gif|ico|svg|woff|woff2)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
} Attivare il sito e ricaricare Nginx:
sudo ln -s /etc/nginx/sites-available/miosito.it /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx Nota: la direttiva try_files $uri $uri/ /index.php?$args; è indispensabile per il corretto funzionamento dei permalink WordPress (fonte: nginx.org/en/docs/http/ngx_http_core_module.html).
Passo 5 - Attivare HTTPS con Certbot
Le opzioni avanzate di Certbot (rinnovo, wildcard, Apache) sono descritte in dettaglio nella nostra guida Certbot dedicata.
Il certificato SSL è indispensabile. Seguire la nostra guida dedicata per ottenerlo e rinnovarlo automaticamente.
Dopo l'ottenimento del certificato, Certbot modifica automaticamente il vhost per reindirizzare HTTP verso HTTPS e aggiungere le direttive SSL.
Passo 6 - Ottimizzazioni PHP per WordPress
OPcache
OPcache memorizza nella cache il bytecode PHP compilato, riducendo il tempo di elaborazione di ogni richiesta. Verificare che sia attivato in /etc/php/8.4/fpm/conf.d/10-opcache.ini:
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=4000
opcache.revalidate_freq=2
opcache.fast_shutdown=1 Questi valori sono adatti a un VPS con 4 GB di RAM. Fonte: php.net/manual/en/opcache.configuration.php.
Dimensione massima degli upload
Allineare il limite di upload PHP con la direttiva Nginx client_max_body_size:
sudo nano /etc/php/8.4/fpm/php.ini Modificare o aggiungere:
upload_max_filesize = 64M
post_max_size = 64M
max_execution_time = 120 Riavviare PHP-FPM:
sudo systemctl restart php8.4-fpm Passo 7 - Mettere in sicurezza wp-admin
In aggiunta, blindate il server stesso: firewall UFW e Fail2ban contro il brute-force.
Proteggere wp-admin per IP (opzionale ma raccomandato)
Se accedete all'amministrazione da un IP fisso, limitare l'accesso nel vhost Nginx:
location /wp-admin {
allow 203.0.113.10; # Sostituire con il vostro IP
deny all;
} Proteggere wp-login.php contro il brute-force
Aggiungere nel vhost Nginx per limitare i tentativi di accesso:
location = /wp-login.php {
limit_req zone=login burst=3 nodelay;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.4-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
} Dichiarare la zona di limitazione nel blocco http di /etc/nginx/nginx.conf:
http {
limit_req_zone $binary_remote_addr zone=login:10m rate=1r/m;
...
} Fail2ban per WordPress
Per una protezione complementare contro i tentativi di accesso ripetuti, configurare Fail2ban con un filtro WordPress: vedere la guida Fail2ban.
Quale configurazione VPS per WordPress?
| Traffico mensile stimato | RAM raccomandata | Offerta OuiHeberg |
|---|---|---|
| Fino a 10 000 visite | 4 GB | VPS Linux 04G: 7,00 € IVA incl./mese |
| Da 10 000 a 50 000 visite | 8 GB | Vedere la gamma VPS Linux |
| Oltre 50 000 visite | 16 GB+ | Vedere la gamma VPS Linux |
Queste stime presuppongono un sito WordPress standard con cache attivata (WP Super Cache o W3 Total Cache). Un sito WooCommerce o con traffico simultaneo elevato richiede più RAM.
Domande frequenti
Si possono ospitare più siti WordPress su un solo VPS?
Sì. Creare un vhost Nginx distinto e un database MariaDB dedicato per ogni sito. Ogni sito dispone così del proprio spazio di isolamento. La RAM del VPS è il fattore limitante: contare circa 256-512 MB per ogni sito WordPress attivo con OPcache.
Serve un VPS gestito per WordPress?
No. Questa guida copre l'installazione su un VPS non gestito con accesso root completo. Un VPS gestito delega la manutenzione di sistema (aggiornamenti OS, backup) ma riduce il controllo e aumenta il costo. Per la maggior parte dei progetti, un VPS non gestito con le buone pratiche di sicurezza (SSH con chiave, UFW, Fail2ban) è sufficiente.
WP-CLI è necessario o si può installare WordPress manualmente?
WP-CLI è opzionale. L'installazione manuale consiste nello scaricare l'archivio da wordpress.org/download/, estrarlo in /var/www/miosito.it, poi compilare wp-config.php a mano. WP-CLI automatizza questi passaggi e facilita gli aggiornamenti futuri (wp core update).
Come aggiornare WordPress tramite WP-CLI?
cd /var/www/miosito.it
sudo -u www-data wp core update
sudo -u www-data wp plugin update --all
sudo -u www-data wp theme update --all Come fare il backup di WordPress su un VPS?
Due elementi da salvare: i file e il database.
# Backup del database
sudo -u www-data wp db export /var/www/miosito.it/backup-$(date +%F).sql
# Backup dei file
tar -czf /root/backup-wordpress-$(date +%F).tar.gz /var/www/miosito.it Automatizzare tramite cron o utilizzare i backup automatici inclusi nella vostra offerta VPS OuiHeberg.
Non avete ancora un VPS? L'offerta VPS Linux 04G (4 GB RAM, NVMe, Anti-DDoS, supporto 24/7) è il punto di partenza raccomandato per ospitare WordPress.
→ Scoprire i VPS Linux OuiHeberg
Il vostro sito WordPress gira già su un hosting condiviso? La procedura per spostarlo su un VPS senza interruzioni (rsync, database, cambio DNS) è descritta nella nostra guida alla migrazione.
