Prerequisiti e preparazione del VPS
Prima di iniziare il setup, assicurati di avere un VPS Ubuntu 24.04 LTS con almeno 2GB di RAM e accesso root via SSH. Per questa guida utilizziamo PHP 8.3, che offre performance superiori del 15-20% rispetto a PHP 8.1 e include miglioramenti significativi per WordPress.
Requisiti minimi consigliati per gestire fino a 10 siti WordPress:
- 2 core CPU
- 4GB RAM
- 50GB SSD storage
- Connessione SSH con chiave pubblica
- Dominio configurato con DNS puntato all’IP del VPS
Primo passo: aggiorna il sistema e configura il firewall base.
sudo apt update && sudo apt upgrade -y sudo apt install ufw -y sudo ufw allow 22/tcp sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable
Configura anche fail2ban per proteggere SSH da attacchi brute force:
sudo apt install fail2ban -y sudo systemctl enable fail2ban sudo systemctl start fail2ban
Installazione e configurazione di Nginx
Nginx è la scelta ottimale per WordPress su VPS grazie al consumo ridotto di memoria e alle performance superiori con contenuti statici. Nel 2026, oltre il 45% dei top 10k siti WordPress utilizzano Nginx.
sudo apt install nginx -y sudo systemctl enable nginx sudo systemctl start nginx
Crea una configurazione base ottimizzata per WordPress in /etc/nginx/sites-available/wordpress:
server {
listen 80;
server_name tuodominio.it www.tuodominio.it;
root /var/www/tuodominio.it;
index index.php index.html;
client_max_body_size 64M;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
location = /favicon.ico {
log_not_found off;
access_log off;
}
location = /robots.txt {
log_not_found off;
access_log off;
}
location ~* \.(css|gif|ico|jpeg|jpg|js|png|webp|woff|woff2)$ {
expires 1y;
add_header Cache-Control "public, immutable";
}
}
Attiva il sito e testa la configurazione:
sudo ln -s /etc/nginx/sites-available/wordpress /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
Ottimizzazioni Nginx per WordPress
Modifica /etc/nginx/nginx.conf per migliorare le performance:
- Aumenta
worker_connectionsa 2048 - Abilita
gzipcon livello 6 - Configura
fastcgi_cacheper ridurre il carico PHP - Imposta
keepalive_timeouta 30 secondi
Installazione PHP 8.3 e estensioni necessarie
PHP 8.3 introduce ottimizzazioni JIT migliorate e riduzione del consumo memoria fino al 10%. Per WordPress è necessario installare le estensioni corrette.
sudo apt install software-properties-common -y sudo add-apt-repository ppa:ondrej/php -y sudo apt update sudo apt install php8.3-fpm php8.3-mysql php8.3-curl php8.3-gd php8.3-mbstring php8.3-xml php8.3-xmlrpc php8.3-zip php8.3-imagick php8.3-intl php8.3-redis -y
Configura PHP-FPM per ottenere performance ottimali. Modifica /etc/php/8.3/fpm/pool.d/www.conf:
pm = dynamic pm.max_children = 20 pm.start_servers = 4 pm.min_spare_servers = 2 pm.max_spare_servers = 6 pm.max_requests = 500
Ottimizza /etc/php/8.3/fpm/php.ini per WordPress:
memory_limit = 256Mupload_max_filesize = 64Mpost_max_size = 64Mmax_execution_time = 300opcache.enable = 1opcache.memory_consumption = 128opcache.interned_strings_buffer = 16opcache.max_accelerated_files = 10000
sudo systemctl restart php8.3-fpm
Installazione e configurazione MariaDB
MariaDB 11.x offre performance migliori rispetto a MySQL per WordPress, con query fino al 25% più veloci su operazioni complesse.
sudo apt install mariadb-server -y sudo systemctl enable mariadb sudo mysql_secure_installation
Durante mysql_secure_installation configura:
- Imposta password root robusta
- Rimuovi utenti anonimi: Y
- Disabilita login root remoto: Y
- Rimuovi database di test: Y
- Ricarica privilegi: Y
Crea database e utente per WordPress:
sudo mysql -u root -p CREATE DATABASE wordpress_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; CREATE USER 'wordpress_user'@'localhost' IDENTIFIED BY 'password_sicura_qui'; GRANT ALL PRIVILEGES ON wordpress_db.* TO 'wordpress_user'@'localhost'; FLUSH PRIVILEGES; EXIT;
Ottimizzazioni MariaDB
Crea /etc/mysql/mariadb.conf.d/60-wordpress.cnf:
[mysqld] innodb_buffer_pool_size = 1G innodb_log_file_size = 256M max_connections = 200 query_cache_type = 1 query_cache_size = 64M
sudo systemctl restart mariadb
Installazione WordPress e configurazione SSL
Scarica e configura WordPress:
sudo mkdir -p /var/www/tuodominio.it
cd /var/www/tuodominio.it
sudo wget https://it.wordpress.org/latest-it_IT.tar.gz
sudo tar -xzf latest-it_IT.tar.gz --strip-components=1
sudo rm latest-it_IT.tar.gz
sudo chown -R www-data:www-data /var/www/tuodominio.it
sudo find /var/www/tuodominio.it -type d -exec chmod 755 {} \;
sudo find /var/www/tuodominio.it -type f -exec chmod 644 {} \;
Configura wp-config.php con salt keys da https://api.wordpress.org/secret-key/1.1/salt/.
Certificato SSL con Let’s Encrypt
Certbot automatizza il rinnovo SSL. Installalo e configura HTTPS:
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d tuodominio.it -d www.tuodominio.it
Certbot modifica automaticamente la configurazione Nginx per HTTPS. Verifica il rinnovo automatico:
sudo certbot renew --dry-run
Sicurezza e hardening finale
Implementa misure di sicurezza aggiuntive per proteggere il VPS e WordPress:
- Disabilita accesso SSH come root: modifica
/etc/ssh/sshd_configconPermitRootLogin no - Configura backup automatici giornalieri con cron
- Installa e configura ModSecurity per Nginx
- Limita tentativi di login WordPress con plugin o Nginx rate limiting
- Monitora log con
logwatcho strumenti esterni
Configura rate limiting su wp-login.php in Nginx:
limit_req_zone $binary_remote_addr zone=wplogin:10m rate=2r/m;
location = /wp-login.php {
limit_req zone=wplogin;
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php8.3-fpm.sock;
}
Monitoring e manutenzione
Installa strumenti per monitorare performance e uptime:
sudo apt install htop iotop nethogs -y
Per chi gestisce più siti client, strumenti come AgencyPilot centralizzano il monitoraggio di tutti i VPS da un’unica dashboard.
Performance finali e benchmark
Con questa configurazione, aspettati performance significative:
- TTFB medio sotto 200ms per pagine non cachate
- Score Lighthouse 95+ su performance
- Gestione di 500+ richieste/secondo con cache attiva
- Consumo RAM sotto 1GB con 5 siti WordPress attivi
Testa le performance con:
ab -n 1000 -c 10 https://tuodominio.it/
Ottimizza ulteriormente installando Redis per object caching e Cloudflare per CDN globale.
FAQ
Perché scegliere Nginx invece di Apache per WordPress?
Nginx consuma il 60% in meno di memoria rispetto ad Apache con configurazioni simili e gestisce meglio i picchi di traffico. Per VPS con risorse limitate è la scelta ottimale. Inoltre, la configurazione di cache e rate limiting è più semplice e performante.
PHP 8.3 è compatibile con tutti i plugin WordPress?
A maggio 2026, oltre il 98% dei plugin nel repository ufficiale WordPress è compatibile con PHP 8.3. Prima di aggiornare un sito in produzione, testa sempre in ambiente staging. I pochi plugin incompatibili sono generalmente abbandonati da anni e andrebbero sostituiti per motivi di sicurezza.
Quanti siti WordPress posso ospitare su un VPS da 4GB RAM?
Con la configurazione descritta, puoi gestire comodamente 8-12 siti WordPress di piccole-medie dimensioni (fino a 50k pageviews/mese ciascuno). Con Redis object cache e FastCGI cache attivo, anche 15-20 siti a basso traffico. Monitora sempre RAM e CPU per evitare overload.
Come automatizzare i backup del VPS?
Configura un cron job che esegue backup giornalieri con rsync o duplicity verso storage esterno (S3, Backblaze B2). Per maggiore sicurezza, usa strumenti come UpdraftPlus o BackWPup per backup WordPress specifici, o gestisci tutto centralmente con piattaforme come AgencyPilot che automatizzano backup multi-sito.
È necessario Redis per un singolo sito WordPress?
Per un singolo sito con traffico medio (sotto 10k visite/giorno), Redis object cache non è strettamente necessario. Diventa molto utile con WooCommerce, plugin che generano molte query non cachate, o quando gestisci più siti sullo stesso VPS. L’overhead di Redis è minimo (circa 50MB RAM) e i benefici crescono con la complessità del sito.