Torna al blog

Installazione di Apache Web Server su CentOS 7

Installazione di Apache Web Server su CentOS 7

Un server web memorizza, elabora e distribuisce pagine web ai visitatori del sito. Ce ne sono diversi server web Open Source opzioni software, ma il server HTTP Apache è considerato il server web più ampiamente utilizzato al mondo. Questo perché, oltre ad essere open-source, la sua architettura modulare consente di estendere le sue funzionalità aggiungendo moduli per scopi diversi. Di conseguenza, il server web è estremamente robusto.

Se stai cercando di installare Apache su un sistema CentOS 7 , questo tutorial fa al caso tuo. Inoltre, imparerai come creare host virtuali in modo da poter ospitare più siti web su un singolo server HTTP Apache in esecuzione su CentOS.

Questo è un tutorial dettagliato incentrato esclusivamente sull'installazione di Apache. Se stavi cercando il tutorial schematico sullo stack LAMP, abbiamo questa guida su Come installare Linux, Apache, MySQL, PHP (LAMP) su CentOS 7 che puoi consultare. Ora, iniziamo!

Prerequisiti

Poiché si tratta di un tutorial pratico, dovresti disporre di quanto segue:

Passo 1: Installazione del server HTTP Apache

Puoi trovare Apache all'interno dei repository predefiniti di CentOS. Pertanto, l'installazione è semplice utilizzando il gestore di pacchetti yum. Dalla sezione dei prerequisiti, devi aver effettuato l'accesso con l'utente non-root. Esegui il seguente comando nel tuo terminale per aggiornare l'indice dei pacchetti httpd locale di Apache:

Una volta aggiornati i pacchetti, inserisci il seguente comando per installare Apache:

Conferma l'installazione e attendi che yum installi Apache e le sue dipendenze richieste.

Se hai seguito i passaggi del tutorial su Configurazione di un Firewall con FirewallD su CentOS 7 e hai abilitato il firewall per la porta 80, allora sei a posto. Firewalld è il gestore del firewall per CentOS. In caso contrario, puoi abilitare il servizio http (porta 80) di firewalld inserendo il seguente comando:

Se hai intenzione di gestire il traffico su HTTPS sicuro, puoi abilitare il servizio https (porta 443) di firewalld inserendo il seguente comando:

Infine, devi ricaricare firewalld affinché le modifiche abbiano effetto. Ecco il comando per ricaricare:

A questo punto, hai installato e configurato Apache per gestire il traffico su HTTP o HTTPS, a seconda che tu abbia eseguito i comandi sopra indicati.

Passo 2: Confirmare che il server web Apache sia in esecuzione

In CentOS, il processo Apache non si avvia automaticamente dopo l'installazione. Per avviare manualmente Apache, inserisci il seguente comando:

Per verificare che il servizio sia stato avviato correttamente, controlla lo stato inserendo il seguente comando:

Se il servizio è in esecuzione, dovresti vedere un output simile allo screenshot qui sotto. Nota lo stato attivo:

httpd status

L'output indica che il servizio è stato avviato correttamente ed è in esecuzione. Successivamente, dobbiamo anche testare che Apache possa distribuire una pagina agli utenti di Internet. Apache viene fornito con una pagina predefinita che puoi utilizzare per verificare se il tuo server è accessibile tramite Internet.

Dovrai trovare l'indirizzo IP pubblico del tuo server se non lo possiedi già. Questo indirizzo IP è quello che utilizzerai nella barra degli indirizzi del tuo browser per richiedere la pagina web predefinita di Apache. Puoi visualizzare gli indirizzi di rete dell'host inserendo il seguente comando:

Dall'elenco di indirizzi che ottieni, puoi provarli ciascuno nel tuo browser per confermare che funzionino. In alternativa, puoi usare curl per ottenere il tuo indirizzo IP da icanhazip.com. Il comando seguente mostra il tuo indirizzo IP pubblico come visto da un computer in un'altra posizione internet:

Una volta ottenuto l'indirizzo IP pubblico del tuo server, copialo e incollalo nella barra degli indirizzi del tuo browser:

Il tuo browser dovrebbe caricare la pagina web predefinita di Apache per CentOS 7:

web server home page

Se sei riuscito a caricare la pagina web predefinita di Apache, significa che il tuo server funziona correttamente. Se scorri verso il basso, puoi vedere alcune informazioni di base sui file di Apache e sulle posizioni delle directory. Con il servizio installato e correttamente funzionante, dovresti essere in grado di utilizzare i vari systemctl comandi per gestire il servizio. 

Passo 3: Gestione del servizio Apache

In questa sezione ti mostreremo alcuni comandi di base per la gestione di Apache. Ecco il comando che arresta il server web:

Ecco il comando per avviare il server web:

Successivamente, questo è il comando per riavviare il server web (arresto e avvio):

Dopodiché, ti mostreremo il comando per ricaricare il servizio Apache. Questo comando è necessario quando si apportano semplicemente modifiche alla configurazione. Ricaricando, il processo Apache applicherà le modifiche alla configurazione senza interrompere le connessioni, come sarebbe avvenuto in caso di riavvio:

In base alle configurazioni predefinite, Apache si avvia automaticamente all'avvio del server. Se desideri modificare questo comportamento, ecco il comando per disabilitare l'avvio del servizio all'avvio:

Per riabilitare l'avvio del servizio all'avvio, inserisci il seguente comando: 

Passo 4: Configurazione dei Virtual Host di Apache

Per impostazione predefinita, Apache è configurato per ospitare e servire un singolo sito web. Nella maggior parte dei casi, vorrai che il tuo server web serva e ospiti più siti web. Ad esempio, potresti avere dei sottodomini o voler configurare una pagina di blog per il sito web principale della tua azienda/organizzazione. È qui che entrano in gioco i virtual host di Apache. I virtual host di Apache ti consentono di configurare il tuo server web per servire più siti web. I virtual host di Apache sono l'equivalente dei server block nel server Nginx

Per questo tutorial, ti mostreremo come creare un virtual host utilizzando example.com come nostro dominio. Naturalmente, il dominio example.com non funzionerà su Internet, quindi dovresti sostituirlo con il tuo dominio effettivo – i passaggi sono gli stessi. 

Quando installi Apache su CentOS, viene installato un virtual host configurato per servire i contenuti dalla directory /var/www/html. Questa struttura funziona bene se stai ospitando un singolo sito. Tuttavia, vogliamo essere in grado di ospitare più siti. Lasceremo la directory predefinita /var/www/html e creeremo invece un'altra directory per il dominio example.com all'interno della posizione /var/www. Il motivo per cui si lascia la directory predefinita è fare in modo che venga servita quando le richieste dei client non corrispondono a nessun altro sito configurato con i virtual host. Inoltre, se desideri disabilitare i virtual host creati, quella predefinita continuerà a servire il traffico. 

Per prima cosa, crea una directory all'interno di /var/www per il tuo nome di dominio. Sei libero di scegliere il nome che preferisci. Tuttavia, si consiglia di scegliere un nome simile al tuo dominio per ricordarlo facilmente quando creerai il file conf del virtual host. Inserisci il seguente comando per creare la directory di esempio:

Inserisci il seguente comando per creare una cartella aggiuntiva che conterrà i file di log per il sito:

Una volta create le directory del tuo sito web, assegna la proprietà della directory con la variabile d'ambiente $USER utilizzando il seguente comando:

Esegui il seguente comando per assicurarti che la tua root web abbia i permessi predefiniti:

Ora, crea una semplice index.html pagina usando nano all'interno della example directory inserendo il seguente comando:

Nell'editor nano, aggiungi il seguente frammento di codice HTML:

Una volta fatto, salva il file premendo Ctrl O e premi INVIO. Ora puoi chiudere l'editor premendo Ctrl X

Finora abbiamo la directory del tuo sito e la pagina web di base per testare l'host virtuale. Successivamente, vogliamo creare i file di configurazione dell'host virtuale. I file dell'host virtuale specificano le configurazioni dei vari siti che desideri ospitare su un singolo server Apache. Essi indirizzano le richieste del nome di dominio impostato alla sua directory specifica.

I file dell'host virtuale sono memorizzati nella directory /etc/httpd/sites-available. I file dell'host virtuale attivati sono collegati tramite link simbolico dalla directory /etc/httpd/sites-available alla directory /etc/httpd/sites-enabled . Queste due directory non vengono create per impostazione predefinita in CentOS, quindi devi crearle tu stesso. Inserisci il seguente comando per creare le directory:

Con le directory create, istruisci Apache a cercare gli host virtuali nella directory sites-enabled. Lo farai modificando il file di configurazione principale di Apache. Inserisci il seguente comando per aprire il file nell'editor nano:

Vogliamo aggiungere una riga che istruirà Apache a cercare file di configurazione aggiuntivi in una directory opzionale. Scorri fino in fondo al file e aggiungi la seguente riga alla fine:

Salva il file premendo Ctrl O e premi INVIO. Ora puoi chiudere l'editor premendo Ctrl X. Il passo successivo consiste nel creare il file dell'host virtuale all'interno della directory sites-available. Inserisci il seguente comando per creare e aprire il nuovo file con l'editor nano:

Nel file aperto, aggiungi il seguente blocco di configurazione. Ricorda di sostituire il nostro example.com con il tuo nome di dominio effettivo, e se hai usato un nome di directory diverso in /var/www/example, aggiorna anche quello in modo appropriato:

Come puoi vedere, abbiamo specificato il nome di dominio e la document root in cui si troveranno i file da servire per questo dominio. Abbiamo anche specificato la posizione del registro degli errori (error log): questo ti aiuterà durante la risoluzione dei problemi del server.

Una volta che abbiamo il nostro file dell'host virtuale all'interno della directory sites-available , il passo successivo consiste nell'abilitare il file creando un collegamento simbolico alla directory sites-enabled . Inserisci il seguente comando per creare il collegamento simbolico:

Se hai seguito i passaggi fino a questo punto, il tuo host virtuale dovrebbe ora essere pronto per servire i contenuti del tuo sito web. Tuttavia, c'è un altro controllo che devi configurare prima che gli host virtuali inizino a funzionare. Lo vedremo nel prossimo passaggio.

Passo 5: Regolare i permessi di SELinux per consentire gli host virtuali

Le distribuzioni Linux, tra cui Fedora, RHEL e CentOS includono SELinux per impostazione predefinita. SELinux (Security Enhanced Linux) è un'architettura di sicurezza per i sistemi Linux che limita e definisce il modo in cui un server deve elaborare le richieste e il modo in cui gli utenti devono interagire con socket, porte di rete e directory essenziali.

Pronto all'uso, SELinux funzionerà con la configurazione predefinita di Apache. Tuttavia, con l'host virtuale personalizzato che hai creato, inclusa una directory di log personalizzata, verrà generato un errore di servizio quando proverai a riavviare il servizio Apache. La soluzione consiste nel modificare le policy di SELinux per consentire al servizio Apache di scrivere sui file necessari.

SELinux rende CentOS un server altamente sicuro. Pertanto, non consigliamo di disabilitarlo completamente. Dato che SELinux consente di personalizzare il livello di sicurezza in vari modi, si consiglia di aggiornare o impostare le policy solo in base alle esigenze del proprio ambiente.

Hai due opzioni per aggiornare le policy di Apache: o Universalmente o per Directory specifica. L'aggiornamento delle policy specifiche per una directory è più sicuro. Pertanto, è l'opzione consigliata.

  • Aggiornare le policy di Apache universalmente

È possibile modificare la policy di Apache a livello universale, il che istruirà SELinux a trattare tutti i processi Apache in modo identico utilizzando il booleano httpd_unified. Tieni presente che la modifica universale delle policy di Apache non ti darà lo stesso livello di controllo rispetto a farlo per ogni singola directory in modo specifico. Tuttavia, è più comodo per quanto riguarda la manutenzione. Esegui il seguente comando per aggiornare le policy di Apache a livello universale:

Definiamo cosa fanno i valori in questo comando:

  • setsebool – aggiorna i valori booleani di SELinux.
  • -P tag – aggiorna il valore all'avvio in modo che questa modifica persista dopo i riavvii.
  • httpd_unified – il valore booleano che istruirà SELinux a trattare tutti i processi Apache come lo stesso tipo. L'uso del valore 1 lo abilita.
  • Regolare le policy di Apache su una directory

Se desideri un maggiore controllo sulle directory, regolare le policy di Apache per directory è la strada giusta da percorrere. Tuttavia, comporta l'onere di richiedere una maggiore manutenzione. Questo perché la policy non è globale. Pertanto, dovrai impostare manualmente il tipo di contesto per qualsiasi nuova directory di log specificata nei file conf del tuo host virtuale.

Prima di aggiornare la policy, controlla innanzitutto il tipo di contesto che SELinux ha assegnato alla directory /var/www/example/log utilizzando il seguente comando:

Il comando restituirà qualcosa di simile al seguente, che è fondamentalmente il contesto SELinux della directory:

httpd_sys_content_t è il contesto corrente, che indica a SELinux che il processo Apache è autorizzato solo a leggere i file creati in questa directory. Poiché dalle nostre configurazioni dell'host virtuale vogliamo che Apache scriva sui file di log nella directory /var/www/example/log, modificheremo questa policy per consentire ad Apache di generare e aggiungere dati ai file di log dell'applicazione web. Il contesto che lo consente è httpd_log_t. Ecco il comando per aggiornare il contesto:

Per applicare le modifiche del comando precedente e renderle persistenti al riavvio, esegui il seguente comando:

Definiamo cosa fa il comando:

  • restorecon – applica le modifiche e garantisce che persistano tra i riavvii.
  • flag -R – eseguirà il comando in modo ricorsivo, aggiornando tutti i file esistenti per utilizzare il nuovo contesto.
  • flag -v – stampa le modifiche del contesto dopo l'esecuzione del comando. L'output sarà simile a questo:
Per visualizzare le modifiche del contesto, puoi eseguire nuovamente il seguente comando:
Dovresti vedere il tipo di contesto aggiornato nell'output:
Con le policy della directory SELinux aggiornate per consentire ad Apache di scrivere nella directory dei log, possiamo ora testare il virtual host. 

Passaggio 6: Testare la configurazione del Virtual Host

Prima di poter testare il virtual host, dovrai riavviare i servizi Apache. Ecco il comando per farlo:

Successivamente, elenca il contenuto della directory dei log utilizzando il seguente comando:

Dovrebbe mostrare qualcosa di simile, indicando che Apache ha creato i file di log: 

list log files web server

Se hai seguito i passaggi fino a questo punto, Apache dovrebbe ora essere in grado di servire la pagina HTML di esempio quando visiti il tuo nome di dominio come definito nel file del tuo virtual host. Se lo desideri, puoi ripetere i passaggi 4 e 5 per configurare domini aggiuntivi e aggiornare le relative autorizzazioni SELinux in modo appropriato.

Conclusione

In questo tutorial abbiamo installato Apache, appreso come aggiornare le policy di SELinux per consentire ad Apache di scrivere su file di log personalizzati e infine testato la nostra configurazione per confermare che funzioni correttamente. Con queste basi, dovresti essere in grado di procedere oltre e servire applicazioni migliori con esperienze più ricche. 

Se desideri esplorare uno stack web completo, dai un'occhiata al nostro tutorial su come installare lo stack LAMP su CentOS 7

Buon divertimento!

author

Akshay Nagpal

Autore · CloudSigma

Preslav Dobrev è un designer creativo presso CloudSigma, con un focus su un'identità aziendale coerente attraverso l'uso di canali di marketing tradizionali e innovativi. È abile nel fondere la visione artistica con il marketing strategico per creare narrazioni di brand di grande impatto.

Commenti

Ancora nessun commento. Scrivi il primo.