CodeGym /Corsi /Docker SELF /Installazione e configurazione del server web (Nginx/Apac...

Installazione e configurazione del server web (Nginx/Apache)

Docker SELF
Livello 7 , Lezione 0
Disponibile

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

  1. Aggiorniamo la lista dei pacchetti:

    sudo apt-get update
    
  2. Installiamo Nginx:

    sudo apt-get install nginx
    
  3. Controlliamo lo stato del server:

    sudo systemctl status nginx
    

    Se tutto è ok, vedrai qualcosa come: active (running).

  4. 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

  1. Aggiorniamo la lista dei pacchetti:

    sudo apt-get update
    
  2. Installiamo Apache:

    sudo apt-get install apache2
    
  3. Controlliamo lo stato del server:

    sudo systemctl status apache2
    

    Analogamente a Nginx, lo stato dovrebbe essere «active (running)».

  4. 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
Importante!

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

  1. 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>
  2. 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;
        }
        }
  3. Attivazione della configurazione:

    sudo ln -s /etc/nginx/sites-available/hello /etc/nginx/sites-enabled/
    sudo nginx -t
    sudo systemctl reload nginx
    
  4. Aggiungi una voce nel file /etc/hosts per configurare il nome di dominio hello.local sulla macchina locale:

    127.0.0.1 hello.local
    
  5. Controlla il sito nel browser: http://hello.local.

Importante!

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

  1. 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>
  2. 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>
  3. Attivazione della configurazione:

    sudo a2ensite hello.conf
    sudo systemctl reload apache2
    
  4. Aggiungi una voce in /etc/hosts:

    127.0.0.1 hello.local
    
  5. 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.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION