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:
Quindi, installa il pacchetto 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:
Il tuo output sarà una lista dei profili di applicazione:
OutputAvailable applications:
Apache
Apache Full
Apache Secure
OpenSSH
Come indicato dall’output, ci sono tre profili disponibili per Apache:
Apache
: Questo profilo apre solo la porta80
(traffico web normale, non crittografato)Apache Full
: Questo profilo apre sia la porta80
(traffico web normale, non crittografato) che la porta443
(traffico crittografato TLS/SSL)Apache Secure
: Questo profilo apre solo la porta443
(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
:
Puoi verificare la modifica controllando lo stato:
Il risultato fornirà un elenco del traffico HTTP consentito:
OutputStatus: 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
:
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:
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:
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:
Per avviare il server web quando è stato fermato, esegui:
Per fermare e quindi avviare nuovamente il servizio, esegui:
Se stai semplicemente apportando modifiche alla configurazione, Apache può spesso ricaricare senza interrompere le connessioni. Per fare ciò, utilizza il seguente comando:
Per impostazione predefinita, Apache è configurato per avviarsi automaticamente quando il server si avvia. Se ciò non è ciò che desideri, disabilita questo comportamento eseguendo:
Per riattivare il servizio per l’avvio al boot, esegui:
Apache si avvierà ora automaticamente quando il server si riavvierà.
Passaggio 5 — Configurazione degli host virtuali (consigliato)
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:
Successivamente, assegna la proprietà della directory all’utente con cui sei attualmente connesso utilizzando la variabile di ambiente $USER
:
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:
Successivamente, crea una pagina index.html
di esempio utilizzando nano
o il tuo editor preferito:
All’interno, aggiungi il seguente HTML di esempio:
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
:
Aggiungi nel seguente blocco di configurazione, simile a quello predefinito, ma aggiornato per il tuo nuovo percorso e nome di dominio:
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
:
Disabilita il sito predefinito definito in 000-default.conf
:
Successivamente, verifica gli errori di configurazione:
Dovresti ricevere il seguente output:
Output. . .
Syntax OK
Riavvia Apache per implementare le tue modifiche:
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 porta80
e ascolta inoltre sulla porta443
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 directorysites-enabled
. Tipicamente, tutta la configurazione del blocco del server viene fatta in questa directory e poi abilitata collegandola all’altra directory con il comandoa2ensite
./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 directorysites-available
con il comandoa2ensite
. 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 directorysites-available
esites-enabled
ma vengono utilizzate per memorizzare frammenti di configurazione che non appartengono a un host virtuale. I file nella directoryconf-available
possono essere abilitati con il comandoa2enconf
e disabilitati con il comandoa2disconf
./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 comandia2enmod
ea2dismod
.
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 direttivaLogLevel
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