Installazione e configurazione del server web (Nginx/Apache)
1. Che cos'è un web server?
Oggi parleremo di Nginx e Apache, i due web server più popolari. Alla fine della lezione, il tuo server sarà in grado di accogliere con orgoglio gli ignari utenti di internet.
Prima di tuffarci nei comandi, capiamo cosa stiamo cercando di fare. Un web server è un programma che riceve richieste HTTP (ad esempio, quando un utente inserisce l'indirizzo di un sito nel browser), le elabora e risponde con il contenuto appropriato (una pagina HTML, un file o anche un errore «404 Not Found»). Serve come collegamento tra gli utenti e il tuo contenuto.
Nginx vs Apache: la battaglia dei web server
Se Nginx e Apache si incontrassero in un bar:
- Nginx ordinerebbe un latte alla lavanda e risolverebbe subito tutto in modo asincrono: «Tu dammi la richiesta, io ti restituisco il file tra un minuto, non distrarmi!».
- Apache, invece, sarebbe più tradizionale, creerebbe un thread per ogni compito e risponderebbe gentilmente, anche se più lentamente con un alto volume di richieste.
Differenze rapide:
Caratteristica | Nginx | Apache |
---|---|---|
Architettura | Asincrona | Orientata ai thread |
Prestazioni | Alte sotto carichi pesanti | Adatto alla dinamicità (PHP/Perl) |
Semplicità | Configurazione semplice, ma con i suoi dettagli | Più universale, ma più complesso |
Quando scegliere cosa?
- Se il tuo sito è un insieme di file statici (ad esempio, un blog o una landing page), Nginx è il tuo amico.
- Se lavori con applicazioni web dinamiche (ad esempio, un sito in PHP), Apache offre maggiore flessibilità.
2. Installazione del server web
Ora che hai capito perché è necessario, è il momento di iniziare l'installazione. Vedremo come installare sia Nginx che Apache. Scegli quello che preferisci o installali entrambi per sentirti un vero professionista.
Installazione di Nginx
Aggiorniamo la lista dei pacchetti:
sudo apt-get update
Installiamo Nginx:
sudo apt-get install nginx
Controlliamo lo stato del server:
sudo systemctl status nginx
Se tutto è ok, vedrai qualcosa come:
active (running)
.Controlliamo la pagina di default: Apri il browser e inserisci
http://localhost
. Dovresti vedere la pagina di benvenuto di Nginx che conferma che l'installazione è andata a buon fine.
Installazione di Apache
Aggiorniamo la lista dei pacchetti:
sudo apt-get update
Installiamo Apache:
sudo apt-get install apache2
Controlliamo lo stato del server:
sudo systemctl status apache2
Analogamente a Nginx, lo stato dovrebbe essere «active (running)».
Controlliamo la pagina di default: Apri il browser su
http://localhost
. Ora ci sarà la pagina di default di Apache.
3. Configurazione base del web server
Dove sono nascoste le configurazioni?
In Nginx il file di configurazione principale si trova al seguente indirizzo:
/etc/nginx/nginx.conf
In Apache:
/etc/apache2/apache2.conf
Prova ad aprire i file di configurazione usando il tuo editor preferito (per esempio, nano
):
sudo nano /etc/nginx/nginx.conf
Qui inizia la tua prima avventura: forse ora non capirai nulla, perché i file di configurazione sembrano incantesimi di un gioco di ruolo. Ma non ti preoccupare – li esamineremo insieme.
Avvio, arresto e riavvio dei server
Se sai come gestire i servizi in Linux, allora "metà del lavoro è fatta". Qui ci sono i principali comandi per gestire i nostri generatori web:
Per Nginx:
sudo systemctl start nginx # Avvia
sudo systemctl stop nginx # Arresta
sudo systemctl restart nginx # Riavvia
sudo systemctl reload nginx # Ricarica configurazione
Per Apache:
sudo systemctl start apache2
sudo systemctl stop apache2
sudo systemctl restart apache2
sudo systemctl reload apache2
Verifica della configurazione
Prima di riavviare il server, controlla sempre di non aver fatto errori:
Per Nginx:
sudo nginx -t
Per Apache:
sudo apachectl configtest
Qualsiasi errore nella configurazione sarà mostrato – non potrai rompere accidentalmente il server.
4. Dimostrazione: lanciamo il nostro primo sito
Ora faremo quello che gli sviluppatori web adorano – creeremo un sito con un nome incredibilmente creativo «Hello Server».
Per Nginx
Creiamo la directory per il sito:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
Scrivi nel file il seguente (sì, tutto quello che è geniale è semplice):
<h1>Ciao, Nginx Server!</h1>
Configuriamo la configurazione:
sudo nano /etc/nginx/sites-available/hello
Ecco un esempio di configurazione semplice:
server { listen 80; server_name hello.local; root /var/www/hello; index index.html; location / { try_files $uri $uri/ =404; } }
Attivazione della configurazione:
sudo ln -s /etc/nginx/sites-available/hello /etc/nginx/sites-enabled/ sudo nginx -t sudo systemctl reload nginx
Aggiungi una voce nel file
/etc/hosts
per configurare il nome di dominiohello.local
sulla macchina locale:127.0.0.1 hello.local
Controlla il sito nel browser: http://hello.local.
Il file hosts contiene il mapping degli indirizzi IP ai nomi di dominio. Questo è il tuo DNS server locale. Questo file esiste in ogni sistema operativo. Anche in Windows, lo troverai al percorso C:\Windows\System32\drivers\etc\hosts
Per Apache
Creiamo la directory:
sudo mkdir -p /var/www/hello sudo nano /var/www/hello/index.html
Riempi il file con:
<h1>Ciao, Apache Server!</h1>
Creiamo la configurazione del virtual host:
sudo nano /etc/apache2/sites-available/hello.conf
Ecco un esempio di configurazione:
<VirtualHost *:80> ServerName hello.local DocumentRoot /var/www/hello <Directory /var/www/hello> Options Indexes FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost>
Attivazione della configurazione:
sudo a2ensite hello.conf sudo systemctl reload apache2
Aggiungi una voce in
/etc/hosts
:127.0.0.1 hello.local
Controlla il risultato: http://hello.local.
Dopo la lezione di oggi, sei già pronto per installare e configurare autonomamente un web server principale. Ancora un po' di sforzo e sarai in grado di distribuire siti e app completi, che non sembrano più disegni di bambini. Da qualche parte dietro l'angolo si nasconde HTTPS, ma ne parleremo più tardi.
GO TO FULL VERSION