come installare stack lemp

stampa questo articolo
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.

Dice il saggio SEO : Quando un blog lento incontra un blog veloce, il blog lento è un blog mortoClick To Tweet

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.

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.

installare stack lemp 1

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?

   CONTATTAMI

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 Netsons

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.

La coppia 'Linux - Apache' è Internet 1.0Click To Tweet

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)

apache vs nginx

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.

migrazione vps nginx tempi download google

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

default nginx - Come installare lo stack LEMP su VPS (Linux NGINX MySQL php)

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

php info

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

LASCIA UN COMMENTO

Please enter your comment!
Please enter your name here