Per mettere online un sito web, esistono diversi approcci. Il più utilizzato, lato consumer, è l’acquisizione di un hosting online da provider come Aruba o DigitalOcean. In buona sostanza, l’acquisizione di un hosting tramite provider è l’affitto di una parte delle risorse di un più grande server Linux, opportunamente configurato per ospitare vari siti web.
Per ottenere performance migliori e configurazioni più personalizzate, è possibile utilizzare una propria macchina Linux o affittarne una da un provider server (potenzialmente Aruba Cloud o, nuovamente, DigitalOcean). Una volta acquisita una macchina Linux, e connessi alla stessa, è opportuno fare alcune configurazioni per poter rendere quest’ultima atta ad ospitare un sito web: occorre installarvi il software necessario a renderla un webserver.
Tipologie di webserver
La maggior parte dei siti attualmente online fa base su di uno stack LAMP tradizionale: Linux come sistema operativo, Apache come web server, MySQL come database e PHP come linguaggio di programmazione.
Gli stack LAMP sono efficaci sotto molti punti di vista: dalla semplicità nella configurazione del webserver alla possibilità di ottenere facilmente supporto online data la loro diffusione. Tuttavia, aumenti improvvisi del numero di visitatori possono facilmente creare rallentamenti anche consistenti al server, a causa della struttura poco modulare di Apache e della necessità per il sistema di gestire processi PHP anche molto numerosi.
Lo stack LEMP
Lo stack LEMP rappresenta la principale alternativa allo stack LAMP. Si costituisce di Linux come sistema operativo, Nginx come web server, MySQL come database e PHP-FPM come interprete del linguaggio di programmazione PHP.
Senza scendere eccessivamente nei dettagli, PHP-FPM (PHP FastCGI Process Manager) si occupa di mantenere dei pool di interpreti PHP già pronti per l’utilizzo, permettendo a Nginx di inoltrare a piacimento il codice PHP da interpretare. Rimando ad un’interessante e dettagliata lettura che ne parla più esaustivamente.
In questa guida ci focalizzeremo sull’installazione e configurazione di questa tipologia di server.
Installazione dello stack LEMP
Di seguito, i passaggi per installare uno stack LEMP. Questa guida non copre la parte di connettività via SSH al nostro server: per questo, potete liberamente fare riferimento alle tantissime guide sul web.
In primo luogo, aggiorniamo le liste dei pacchetti di aptitude e aggiorniamo i pacchetti installati nel sistema con i seguenti comandi.
sudo apt update
sudo apt upgrade -y
Installazione di Nginx
La prima fase per installare lo stack LEMP è installare e configurare correttamente Nginx. Nel caso di siti multipli su di uno stesso server, questa procedura può essere particolarmente complicata. In questo caso base, ci limitiamo ad un solo sito web per server.
In primo luogo installiamo Nginx tramite i seguenti comandi.
sudo apt install nginx -y
Controlliamo poi lo stato del servizio digitando il seguente comando.
sudo service nginx status
Ci attendiamo un output simile al seguente, che confermi l’attività del sito.
● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset:>
Active: active (running) since Tue 2022-06-07 18:06:36 UTC; 5s ago
Docs: man:nginx(8)
Process: 1510 ExecStartPre=/usr/sbin/nginx -t -q -g daemon on; master_proce>
Process: 1511 ExecStart=/usr/sbin/nginx -g daemon on; master_process on; (c>
Main PID: 1604 (nginx)
Tasks: 2 (limit: 1034)
Memory: 4.1M
CPU: 27ms
CGroup: /system.slice/nginx.service
├─1604 "nginx: master process /usr/sbin/nginx -g daemon on; master>
└─1607 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "">
Jun 07 18:06:36 myllumi systemd[1]: Starting A high performance web server and >
Jun 07 18:06:36 myllumi systemd[1]: Started A high performance web server and a>
Se tutto è proceduto correttamente, arrivati a questo punto, possiamo accedere con un browser all’indirizzo del nostro server (sia esso un dominio configurato o semplicemente l’IP esposto al pubblico). Dovreste ottenere una schermata simile alla seguente.

Qualora, nonostante l’attività del processo Nginx, non doveste riuscire ad accedere al vostro webserver, è probabile che Nginx sia bloccato dal firewall UFW. Potete creare un ruleset per consentire le connessioni HTTP sulla porta 80 e HTTPS sulla 443 tramite il seguente comando.
sudo ufw allow 'Nginx Full'
Installazione di PHP
Installato il webserver, potete finalmente animare il vostro sito web installando PHP e un po’ di estensioni necessarie per un sito web abbastanza standard. Utilizzate il codice seguente.
sudo apt install -y php-fpm \
ghostscript \
php-bcmath \
php-curl \
php-imagick \
php-intl \
php-json \
php-mbstring \
php-mysql \
php-xml \
php-zip
Configurazione di Nginx per PHP
Una volta installate correttamente le dipendenze PHP, dobbiamo fare in modo che Nginx sia pronto a connettersi al servizio PHP. Per poterlo fare, andiamo ad editare il file configurazione di Nginx, che si trova in /etc/nginx/sites-available/default
.
Lo modifichiamo e vi inseriamo il contenuto che segue.
Riavviate Nginx con sudo service nginx restart
ed il gioco è fatto.
Come potrete notare, questa configurazione ha un sacco di righe commentate. Torneremo più tardi sul significato di queste, in relazione alla configurazione di un certificato SSL per rendere sicura la connessione al nostro sito.
A questo punto, per testare la corretta installazione di PHP, la cosa più semplice da fare è accedere alla directory /var/www/html
, e creare un file di testo col nome test.php
e riempirlo con il seguente contenuto:
<?php
phpinfo();
Dovreste ottenere un esito simile al seguente.

Installazione e configurazione di MySQL
MySQL è il database della maggior parte dei CMS in commercio. Si tratta di un database relazionale molto complesso, che ora installeremo nel nostro webserver. Cominciamo con i seguenti comandi.
sudo apt install mysql-server -y
Conclusioni
Arrivati a questo punto, disponete di un server web correttamente configurato con lo stack LEMP. I prossimi passaggi? Potete installare WordPress, Joomla! o crearvi un mailserver con Postfix e Roundcube… o un cloud con NextCloud!
Reply