Come installare il server web Apache su Ubuntu 22.04

Introduzione

Il server Apache HTTP è il server web più utilizzato al mondo. Fornisce molte funzionalità potenti, tra cui moduli caricabili dinamicamente, supporto multimediale robusto e ampia integrazione con altri software popolari.

In questa guida, imparerai come installare un server web Apache sul tuo server Ubuntu 22.04.

Effettua il deploy delle tue applicazioni da GitHub usando DigitalOcean App Platform. Lascia che DigitalOcean si concentri sul ridimensionamento della tua app.

Prerequisiti

Prima di iniziare questa guida, avrai bisogno di un server Ubuntu 22.04 configurato con un utente non-root con privilegi sudo e un firewall abilitato per bloccare le porte non essenziali. Puoi imparare come fare seguendo la nostra Guida all’impostazione iniziale del server per Ubuntu 22.04.

Una volta completata questa configurazione, accedi come utente non-root e procedi al primo passaggio.

Passo 1 — Installazione di Apache

Apache è disponibile all’interno dei repository software predefiniti di Ubuntu, rendendo possibile installarlo utilizzando gli strumenti di gestione dei pacchetti convenzionali.

Inizia aggiornando l’indice locale dei pacchetti per riflettere le ultime modifiche del flusso principale:

  1. sudo apt update

Quindi, installa il pacchetto apache2:

  1. sudo apt install apache2

Dopo aver confermato l’installazione, apt installerà Apache e tutte le dipendenze richieste.

Passo 2 — Regolazione del Firewall

Prima di testare Apache, è necessario modificare le impostazioni del firewall per consentire l’accesso esterno alle porte web predefinite. Se hai seguito le istruzioni nei prerequisiti, dovresti avere un firewall UFW configurato per limitare l’accesso al tuo server.

Durante l’installazione, Apache si registra con UFW per fornire alcuni profili di applicazione che possono essere utilizzati per abilitare o disabilitare l’accesso ad Apache attraverso il firewall.

Elenca i profili di applicazione ufw eseguendo il seguente comando:

  1. sudo ufw app list

Il tuo output sarà una lista dei profili di applicazione:

Output
Available applications: Apache Apache Full Apache Secure OpenSSH

Come indicato dall’output, ci sono tre profili disponibili per Apache:

  • Apache: Questo profilo apre solo la porta 80 (traffico web normale, non crittografato)
  • Apache Full: Questo profilo apre sia la porta 80 (traffico web normale, non crittografato) che la porta 443 (traffico crittografato TLS/SSL)
  • Apache Secure: Questo profilo apre solo la porta 443 (traffico crittografato TLS/SSL)

Si consiglia di abilitare il profilo più restrittivo che consenta comunque il traffico che hai configurato. Poiché non hai ancora configurato SSL per il tuo server in questa guida, dovrai solo consentire il traffico sulla porta 80:

  1. sudo ufw allow 'Apache'

Puoi verificare la modifica controllando lo stato:

  1. sudo ufw status

Il risultato fornirà un elenco del traffico HTTP consentito:

Output
Status: active To Action From -- ------ ---- OpenSSH ALLOW Anywhere Apache ALLOW Anywhere OpenSSH (v6) ALLOW Anywhere (v6) Apache (v6) ALLOW Anywhere (v6)

Come indicato dall’output, il profilo è stato attivato per consentire l’accesso al server web Apache.

Passaggio 3 — Verifica del tuo server Web

Alla fine del processo di installazione, Ubuntu 22.04 avvia Apache. Il server web sarà già attivo.

Assicurati che il servizio sia attivo eseguendo il comando per il sistema init systemd:

  1. sudo systemctl status apache2
Output
● apache2.service - The Apache HTTP Server Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese> Active: active (running) since Tue 2022-04-26 15:33:21 UTC; 43s ago Docs: https://httpd.apache.org/docs/2.4/ Main PID: 5089 (apache2) Tasks: 55 (limit: 1119) Memory: 4.8M CPU: 33ms CGroup: /system.slice/apache2.service ├─5089 /usr/sbin/apache2 -k start ├─5091 /usr/sbin/apache2 -k start └─5092 /usr/sbin/apache2 -k start

Come confermato da questo output, il servizio è stato avviato con successo. Tuttavia, il modo migliore per testarlo è richiedere una pagina da Apache.

È possibile accedere alla pagina predefinita di Apache per confermare che il software funzioni correttamente tramite il tuo indirizzo IP. Se non conosci l’indirizzo IP del tuo server, puoi ottenerlo in diversi modi dalla riga di comando.

Prova a scrivere quanto segue nel prompt dei comandi del tuo server:

  1. hostname -I

Riceverai alcuni indirizzi separati da spazi. Puoi provare ciascuno nel tuo browser web per determinare se funzionano.

Un’altra opzione è utilizzare lo strumento gratuito icanhazip.com. Si tratta di un sito web che, quando viene accesso, restituisce l’indirizzo IP pubblico della tua macchina come letto da un’altra posizione su Internet:

  1. curl -4 icanhazip.com

Quando hai l’indirizzo IP del tuo server, inseriscilo nella barra degli indirizzi del tuo browser:

http://your_server_ip

Vedrai la pagina predefinita di Apache per Ubuntu 22.04 come segue:

Questa pagina indica che Apache funziona correttamente. Include anche alcune informazioni di base su file Apache e posizioni delle directory importanti.

Passaggio 4 — Gestione del processo Apache

Ora che hai il tuo server web in esecuzione, vediamo alcune comandi di gestione di base utilizzando systemctl.

Per fermare il tuo server web, esegui:

  1. sudo systemctl stop apache2

Per avviare il server web quando è stato fermato, esegui:

  1. sudo systemctl start apache2

Per fermare e quindi avviare nuovamente il servizio, esegui:

  1. sudo systemctl restart apache2

Se stai semplicemente apportando modifiche alla configurazione, Apache può spesso ricaricare senza interrompere le connessioni. Per fare ciò, utilizza il seguente comando:

  1. sudo systemctl reload apache2

Per impostazione predefinita, Apache è configurato per avviarsi automaticamente quando il server si avvia. Se ciò non è ciò che desideri, disabilita questo comportamento eseguendo:

  1. sudo systemctl disable apache2

Per riattivare il servizio per l’avvio al boot, esegui:

  1. sudo systemctl enable apache2

Apache si avvierà ora automaticamente quando il server si riavvierà.

Quando si utilizza il server web Apache, è possibile utilizzare host virtuali (simili a blocchi server in Nginx) per incapsulare dettagli di configurazione e ospitare più di un dominio da un singolo server. Configureremo un dominio chiamato il_tuo_dominio, ma dovresti sostituirlo con il tuo nome di dominio.

Info: Se stai configurando un nome di dominio con DigitalOcean, consulta la nostra Documentazione sulla rete.

Apache su Ubuntu 22.04 ha un blocco server abilitato per impostazione predefinita che è configurato per servire documenti dalla directory /var/www/html. Sebbene questo funzioni bene per un singolo sito, può diventare complicato se stai ospitando più siti. Invece di modificare /var/www/html, crea una struttura di directory all’interno di /var/www per un sito your_domain, lasciando /var/www/html al suo posto come directory predefinita da servire se una richiesta del client non corrisponde ad altri siti.

Crea la directory per your_domain come segue:

  1. sudo mkdir /var/www/your_domain

Successivamente, assegna la proprietà della directory all’utente con cui sei attualmente connesso utilizzando la variabile di ambiente $USER:

  1. sudo chown -R $USER:$USER /var/www/your_domain

Le autorizzazioni della tua root web dovrebbero essere corrette se non hai modificato il valore della tua maschera umask, che imposta le autorizzazioni predefinite dei file. Per garantire che le tue autorizzazioni siano corrette e consentano al proprietario di leggere, scrivere ed eseguire i file, concedendo solo autorizzazioni di lettura ed esecuzione ai gruppi e agli altri, puoi inserire il seguente comando:

  1. sudo chmod -R 755 /var/www/your_domain

Successivamente, crea una pagina index.html di esempio utilizzando nano o il tuo editor preferito:

  1. sudo nano /var/www/your_domain/index.html

All’interno, aggiungi il seguente HTML di esempio:

/var/www/your_domain/index.html
<html>
    <head>
        <title>Welcome to Your_domain!</title>
    </head>
    <body>
        <h1>Success!  The your_domain virtual host is working!</h1>
    </body>
</html>

Salva e chiudi il file quando hai finito. Se stai utilizzando nano, puoi farlo premendo CTRL + X, quindi Y e INVIO.

Perché Apache possa servire questo contenuto, è necessario creare un file di virtual host con le direttive corrette. Invece di modificare direttamente il file di configurazione predefinito situato in /etc/apache2/sites-available/000-default.conf, creane uno nuovo in /etc/apache2/sites-available/il_tuo_dominio.conf:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

Aggiungi nel seguente blocco di configurazione, simile a quello predefinito, ma aggiornato per il tuo nuovo percorso e nome di dominio:

/etc/apache2/sites-available/your_domain.conf
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    ServerName your_domain
    ServerAlias www.your_domain
    DocumentRoot /var/www/your_domain
    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined
</VirtualHost>

Nota che abbiamo aggiornato il DocumentRoot al nostro nuovo percorso e ServerAdmin a un’email a cui l’amministratore del sito il_tuo_dominio può accedere. Abbiamo inoltre aggiunto due direttive: ServerName, che stabilisce il dominio di base che corrisponderà a questa definizione di virtual host, e ServerAlias, che definisce ulteriori nomi che corrisponderanno come se fossero il nome di base.

Salva e chiudi il file quando hai finito.

Ora abilita il file con lo strumento a2ensite:

  1. sudo a2ensite your_domain.conf

Disabilita il sito predefinito definito in 000-default.conf:

  1. sudo a2dissite 000-default.conf

Successivamente, verifica gli errori di configurazione:

  1. sudo apache2ctl configtest

Dovresti ricevere il seguente output:

Output
. . . Syntax OK

Riavvia Apache per implementare le tue modifiche:

  1. sudo systemctl restart apache2

Apache ora sarà in grado di servire il tuo nome di dominio. Puoi testarlo navigando su http://il_tuo_dominio, dove vedrai qualcosa di simile a quanto segue:

Passaggio 6 – Conoscenza dei File e delle Directory Importanti di Apache

Ora che sai come gestire il servizio Apache stesso, dovresti prenderti qualche minuto per familiarizzare con alcune directory e file importanti.

Contenuto

  • /var/www/html: Il contenuto web effettivo, che per impostazione predefinita consiste solo nella pagina predefinita di Apache che hai visto in precedenza, è servito dalla directory /var/www/html. Questo può essere modificato modificando i file di configurazione di Apache.

Configurazione del Server

  • /etc/apache2: La directory di configurazione di Apache. Tutti i file di configurazione di Apache risiedono qui.
  • /etc/apache2/apache2.conf: Il file di configurazione principale di Apache. Questo può essere modificato per apportare modifiche alla configurazione globale di Apache. Questo file è responsabile del caricamento di molti degli altri file nella directory di configurazione.
  • /etc/apache2/ports.conf: Questo file specifica le porte su cui Apache ascolterà. Per impostazione predefinita, Apache ascolta sulla porta 80 e ascolta inoltre sulla porta 443 quando è abilitato un modulo che fornisce capacità SSL.
  • /etc/apache2/sites-available/: La directory in cui possono essere memorizzati gli host virtuali per sito. Apache non utilizzerà i file di configurazione trovati in questa directory a meno che non siano collegati alla directory sites-enabled. Tipicamente, tutta la configurazione del blocco del server viene fatta in questa directory e poi abilitata collegandola all’altra directory con il comando a2ensite.
  • /etc/apache2/sites-enabled/: La directory in cui sono memorizzati gli host virtuali per sito abilitati. Tipicamente, questi sono creati collegando i file di configurazione trovati nella directory sites-available con il comando a2ensite. Apache legge i file di configurazione e i collegamenti trovati in questa directory quando si avvia o si ricarica per compilare una configurazione completa.
  • /etc/apache2/conf-available/, /etc/apache2/conf-enabled/: Queste directory hanno lo stesso rapporto delle directory sites-available e sites-enabled ma vengono utilizzate per memorizzare frammenti di configurazione che non appartengono a un host virtuale. I file nella directory conf-available possono essere abilitati con il comando a2enconf e disabilitati con il comando a2disconf.
  • /etc/apache2/mods-available/, /etc/apache2/mods-enabled/: Queste directory contengono rispettivamente i moduli disponibili e abilitati. I file con estensione .load contengono frammenti per caricare moduli specifici, mentre i file con estensione .conf contengono la configurazione per quei moduli. I moduli possono essere abilitati e disabilitati utilizzando i comandi a2enmod e a2dismod.

Log del server

  • /var/log/apache2/access.log: Per impostazione predefinita, ogni richiesta al tuo server web viene registrata in questo file di log a meno che Apache non sia configurato diversamente.
  • /var/log/apache2/error.log: Per impostazione predefinita, tutti gli errori vengono registrati in questo file. La direttiva LogLevel nella configurazione di Apache specifica quanto dettaglio conterranno i log degli errori.

Conclusione

Ora che hai il tuo server web installato, hai molte opzioni per il tipo di contenuto che puoi servire e le tecnologie che puoi utilizzare per creare un’esperienza più ricca.

Se desideri creare uno stack di applicazioni più completo, puoi leggere questo articolo su come configurare uno stack LAMP su Ubuntu 22.04

Source:
https://www.digitalocean.com/community/tutorials/how-to-install-the-apache-web-server-on-ubuntu-22-04