Ti stai chiedendo come velocizzare al massimo il tuo blog? Sei stanco dei tempi di risposta biblici di alcuni Hosting Provider? Allora seguimi perché in questo articolo ti descrivo passo passo come installare lo stack LEMP (Linux NGINX MySQL php) su VPS Dedicata e mettere (davvero) il turbo al tuo blog.
Ho spesso parlato di tecniche di ottimizzazione dei tempi di risposta di un website (soprattutto wordpress) e l'ho fatto perché un website lento è un website che, anche in ottica SEO, avrà sicuramente delle penalizzazioni.
Per cui la velocità è ormai un fattore non più trascurabile e per mettere (davvero) le ali al tuo blog allora non puoi non prendere in considerazione l'idea di migrare su una VPS dedicata ed utilizzare lo stack LEMP come “container” applicativo delle tue pagine php.
I contenuti dell'articolo
Misura la velocità
Questo blog, attualmente, sta girando su VPS dedicata con stack LEMP installato da me (Linux Ubuntu Server 18.04, nginx 1.14, MySQL 8 e php 7.2) e nonostante sia una blog che ha più di dieci anni le performance sono decisamente migliorate rispetto a quando stavo su Hosting Dedicato.
Vuoi sapere se le performance del tuo blog wordpress potrebbero essere migliorate? Ti interessa sapere come fare a migrare il tuo blog da Hosting Condiviso a VPS dedicata? Vorresti installare nginx per il tuo website?
Dimenticavo, se pensi che migrare un website da hosting condiviso a VPS sia troppo caro allora ti consiglio di dare uno sguardo a questo mio articolo
Oppure puoi dare uno sguardo agli ottimi prezzi delle VPS che puoi installare dal cloud Linode
Ora andiamo nel dettaglio e cerchiamo di capire cos'è lo stack LEMP, cosa lo caratterizza e quali sono le differenze con il più famoso stack LAMP (Linux, Apache, MySQL e php)
Cos'è lo stack LEMP?
Lo stack LEMP indica un gruppo di software che può essere utilizzato per service pagine dinamiche e web applications. E' un acronimo che indica il sistema operativo Linux, con il web server nginx (si pronuncia “Engine-x”). I dati poi sono archiviati in un Data Base MySQL e le pagine web dinamiche sono processate attraverso il Php come linguaggio dinamico server side.
Lo stack LEMP sta acquisendo importanti fette di mercato, soprattutto per quanto riguarda l'hosting di applicazioni php e più in particolare wordpress. Sempre più plugin sono ormai nginx compliant e c'è chi utilizza lo stack LEMP ma soprattutto il webserver nginx come vero e proprio “marchio” di garanzia per quanto riguarda affidabilità, velocità e soprattutto performance.
Così ho deciso di testarlo in prima persona, non mi andava di fare una recensione di un software solo per “sentito dire”, ho prima fatto dei test prestazionali ed alla fine mi sono convinto ed ho migrato interamente il mio blog (questo che stai leggendo) su un VPS Linux dedicato con lo stack LEMP installato.
Apache vs NGINX : perché migrare a nginx?
Per rispondere a questa domanda credo che sia perfetta la definizione che è stata data di nginx, soprattutto in relazione al ben più famoso webserver Apache:
Se Apache è stato il volano del web 1.0 nginx lo sta diventando per il web 2.0
Credo sia vero e lo credo perché ho potuto installare e testare entrambe i webserver, sia in ambienti di test che in ambienti di produzione, anche enterprise.
Non vorrei entrare troppo nei tecnicismi tuttavia per valutare due diversi webserver dobbiamo per forza di cose valutare i seguenti fattori: semplicità di installazione e configurazione, sistema di caching e reverse proxy, velocità e stabilità, possibilità di upgrade, logging e manutenzione, performance sotto stress e molto altro.
Apache è una vera e propria garanzia, se ben configurato (e non è semplicissimo configuralo bene) risponde alla grande, è senza ombra di dubbio il webserver più usato al mondo e se conosciamo internet così com'è un grazie lo dobbiamo anche (e soprattutto) ad Apache.
E perché allora dovremmo passare a nginx? Perché a mio modestissimo avviso nginx rappresenta il futuro del web, anzi questo futuro è ormai già presente. Dai uno sguardo a questo grafico (Aggiornato al 2015)
L'ho installato, provato, testato e stressato. Quello che più mi ha colpito di questo webserver è la semplicità nella configurazione e la stabilità oltre che le performance. Ho uno stile (legato alla sua configurazione) decisamente più proiettato al futuro ed è insuperabile per quanto riguarda la cache ed il reverse proxy, perfettamente compatibile con i Container è perfetto anche per la gestione di un API Gateway.
E' perfettamente compatibile con wordpress e php oltre che con tutti i relativi plugin, anche quelli di caching php (W3 Total Cache, WP Super Cache e WP Rocket).
Quale configurazione ho scelto per il mio blog worpdress? Per pensando.it ho scelto questa configurazione:
Linux Ubuntu 18.04 su VPS Dedicata, nginx 1.14, MySQL 8, php 7.2 (fpm) con il plugin WP Super Cache e nginx configurato ad hoc per questo plugin di caching.
Anche Google sembra aver gradito la migrazione, ora i tempi di download di una singola pagina sono più bassi e, soprattutto, si sono stabilizzati sempre al di sotto di 1.2 secondi.
Ma ora basta parole, andiamo a vedere come installare lo stack LEMP.
Come installare lo stack LEMP
Per poter eseguire questo tutorial ed installare correttamente lo stack LEMO devi avere:
- una VPS Linux Ubuntu 18.04
- un utente (possibilmente non root) con diritti di accesso sudo
Se hai la VPS e l'utente configurato allora puoi andare avanti con la lettura
Come installare nginx
Iniziamo con l'installare nginx, come prima cosa aggiorniamo l'indice dei pacchetti apt Ubuntu e poi installiamo il webserver nginx usando i comandi:
sudo apt update sudo apt install nginx
Su Ubuntu 18.04 nginx è configurato per avviarsi in automatico, per cui con questo comando avrai già installato ed avviato nginx.
Se utilizzi ufw come firewall (e spero vivamente tu lo faccia) dovrai abilitare le rotte http con il comando
udo ufw allow 'Nginx HTTP'
Adesso verifica che il firewall abbia correttamente registrato le modifiche con il comando
sudo ufw status
Dovrai avere un listato simile al seguente
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Nginx HTTP ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Nginx HTTP (v6) ALLOW Anywhere (v6)
A questo punto puoi verificare che il webserver sia raggiungibile digitando l'ip address del tuo VPS nel browser, dovresti vedere la welcome page di nginx
Complimenti, il primo step è completato!
Come installare MySQL
Ora che hai installato il webserver è il momento di procedere con l'installazione di MySQL per archiviare e gestire i dati del tuo blog.
Buona norma sarebbe quella di installare il database su un server diverso da quello dove viene installato il webserver (io ho fatto così per questo mio blog); in questa guida tuttavia ti farò vedere come installare tutte le componenti sulla stessa macchina.
Installa MySQL con il comando
sudo apt install mysql-server
Ora dovrai terminare l'installazione con il comando di configurazione
sudo mysql_secure_installation
Rispondi Y per “si” se vuoi configurare il plugin di validazione password
VALIDATE PASSWORD PLUGIN can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD plugin?
Press y|Y for Yes, any other key for No:
Se hai risposto si ora dovrai impostare un livello di validazione password
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary
file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
Ora dovrai inserire una password per l'utente root
Please set the password for root here.
New password:
Re-enter new password:
Prosegui l'installazione fino al termine delle domande ed avrai installato correttamente MySQL sulla tua macchina Linux.
Per verificare che tutto stia funzionando correttamente prova ad accedere a mysql con il comando
mysql -u root -p
Inserisci la password ed accedi alla shell mysql, per verificare che tutto sia ok lancia il comando
mysql > show databases;
Vedrai la lista dei database preinstallati in MYSQL, esci digitando il comando
mysql > exit
Complimenti, anche il secondo step di installazione dello stack LEMP è terminato.
Come installare PHP e configurare nginx
Ora dovrai installare php e configurare nginx per in modo tale che utilizzi il processore PHP per eseguire le pagine dinamiche.
Nel momento in cui sto scrivendo questo tutorial non esiste ancora un processore nativo di php per nginx, pertanto dovrai installare php-fpm ovvero “fastCGI process manager“. Una volta installato php-fpm dovremo dire a nginx di passare le richieste di pagine php a questa componente.
Procedi quindi con i seguenti comandi
sudo add-apt-repository universe sudo apt-get install php -y sudo apt-get install php-{bcmath,bz2,intl,gd,mbstring,mysql,zip,fpm,curl} -y
Al termine dell'installazione tutte le componenti dello stack LEMP saranno installate sul tuo VPS Server e sarai quindi pronto a configurare nginx per abilitare il dialogo con php-fpm
Procedi quindi con il creare un nuovo “server block” di nginx, i server blocks sono molto simili ad i virtual host di Apache e ti permettono di configurare al meglio il tuo website (o più di un website sulla stessa macchina)
Accedi quindi alla directory
cd /etc/nginx/sites-available/
E crea un nuovo file, per questo tutorial userò il file test.it
sudo nano /etc/nginx/sites-available/test.it
Ora dovrai editare il file per inserire tutte le sezioni necessarie al corretto funzionamento di nginx e php per il website “test.com”
server {
listen 80;
root /var/www/html;
index index.php index.html index.htm index.nginx-debian.html;
server_name test.it;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
}
location ~ /\.ht {
deny all;
}
}
Analizziamo ogni singola sezione del file
- server {} : sezione che contiene tutte le configurazioni per il server web specifico
- listen: Definisce su quale porta il webserver è in ascolto
- root: Definisce la directory root del website
- index: Definisce le pagine indice del website
- server_name: Definisce quale server block sarà utilizzato per le richieste al server. In questa sezione è necessario definire l'IP pubblico oppure il nome a dominio del website
- location / : Il primo blocco relativo alla verifica della location che include la direttiva “try_files” la quale controlla l'esistenza dei file ed il mapping con la richiesta. In caso contrario viene ritornato un errore http 404.
- location ~ \.php$ : Questa direttiva determina il mapping tra le richieste al webserver ed il processore PHP attraverso il file di configurazione fastcgi-php.conf e php7.2-fpm.sock
- location ~ /\.ht : Ultima sezione che blocca il funzionamento di eventuali file .htaccess
Una volta terminato l'editing del file dovrai abilitare il website con il comando di creazione del simlink (link simbolico):
sudo ln -s /etc/nginx/sites-available/test.it /etc/nginx/sites-enabled/
E disabilitazione del simlink già presente al file di configurazione di default
sudo unlink /etc/nginx/sites-enabled/default
Ora puoi verificare la corretta configurazione di nginx con il comando
sudo nginx -t
Se la configurazione sarà corretta allora potrai effettuare il reload di nginx
sudo systemctl reload nginx
che conclude la configurazione di nginx su VPS Linux Ubuntu
Come creare un file php di test
Ora, come ultimo step, dovrai verificare che php stia effettivamente funzionando correttamente con nginx, per cui accedi alla directory /var/www/html e crea il file
sudo nano /var/www/html/info.php
Inserisci il seguente codice nel file
<?php
phpinfo();
Chiudi e salva il file, poi accedi alla url dal tuo browser
http://test.it/info.php
Dovresti vedere la pagina di configurazione di php
Se vedi una pagina simile a questa allora hai installato correttamente lo stack LEMP sul tuo server Ubuntu 14.04
Complimenti!
Conclusioni
Lo stack LEMP è una piattaforma molto potente e flessibile che ti permetterà di gestire pagine sia statiche che dinamiche oltre che configurare al meglio il tuo blog wordpress. Puoi utilizzarlo come sistema di caching, reverse proxy o come semplice webserver per il render delle pagine dinamiche php.
Che te ne pare di questa guida? Pensi che potresti migrare allo stack LEMP per servire le tue pagine php? Discutiamone insieme nei commenti!
2 commenti
Pingback: Configurare wordpress per nginx (WP Super Cache, WP Rocket e W3TC)
Pingback: come installare wordpress su stack LEMP (Linux NGINX MySQL php)