Ricerca nel sito web

Come installare Apache con host virtuale su CentOS 8


Il server web Apache è un server web HTTP open source e popolare che continua a godere di un'enorme quota di mercato nel settore dell'hosting. Viene fornito con tantissime funzionalità tra cui miglioramenti del modulo, supporto multiprotocollo, configurazione semplificata e supporto multilingue per citarne solo alcuni.

Leggi anche: Come installare Nginx su CentOS 8

In questa guida ti guideremo attraverso l'installazione del server web Apache su CentOS 8 e RHEL 8 con un ambiente host virtuale. Al momento della stesura di questo tutorial, l'ultima versione di Apache è Apache 2.2.43.

Installazione del server Web Apache

Per iniziare, aggiorna innanzitutto l'elenco dei pacchetti di sistema CentOS 8 o RHEL 8 utilizzando il seguente comando dnf.

sudo dnf update

Una volta completato l'aggiornamento, installa il server web Apache eseguendo il seguente comando.

sudo dnf install httpd

Una volta installato, puoi verificare la versione di Apache eseguendo il comando rpm.

rpm -qi httpd

Il comando stampa una serie di informazioni come versione, data di rilascio, build e architettura del pacchetto.

Per avviare il servizio Web Apache HTTP, eseguire il comando systemctl.

sudo systemctl start httpd

Per confermare se il servizio è in esecuzione, esegui.

sudo systemctl status httpd

Dall'output, lo stato "attivo" in verde indica che il server web Apache è attivo e funzionante.

Per eliminare ogni dubbio sul funzionamento del server web, richiedi una pagina di prova ad Apache esplorando l'indirizzo IP o il nome di dominio del tuo server come mostrato.

http://server-ip  

Puoi ottenere l'IP del tuo server eseguendo il comando ifconfig. Se il tuo server è ospitato sul cloud, puoi ottenere l'IP pubblico eseguendo il comando curl.

curl ifconfig.me 
OR
curl -4 icanhazip.com

Quando navighi nell'indirizzo IP del server, dovresti visualizzare la seguente pagina web.

Questa è una conferma sicura che il server web è in esecuzione.

Gestione del server Web Apache

Con Apache installato e in esecuzione, puoi utilizzare lo strumento di ispezione systemctl per gestire Apache.

Ad esempio, per arrestare Apache, esegui il comando:

sudo systemctl stop httpd

Per avviare nuovamente il servizio, eseguire:

sudo systemctl start httpd

Se hai apportato modifiche a uno qualsiasi dei suoi file di configurazione e devi riavviare per applicare le modifiche, esegui il comando:

sudo systemctl restart httpd

Il riavvio del servizio solitamente provoca un'interruzione del servizio. Un'alternativa migliore è semplicemente ricaricare senza alcuna interruzione della connessione.

sudo systemctl reload httpd

Per avviare automaticamente il server Web Apache all'avvio o al riavvio, eseguire il comando seguente. Ciò garantirà l'avvio automatico di Apache senza il tuo intervento.

sudo systemctl enable httpd

Se scegli di non avviare automaticamente il servizio all'avvio, esegui:

sudo systemctl disable httpd

Configurazione degli host virtuali Apache

Per impostazione predefinita, il server Web Apache è configurato per servire o ospitare un solo sito Web. Se desideri ospitare un solo sito Web, questo passaggio non è richiesto. Ma nel caso in cui prevedi di ospitare più domini sul tuo server, devi configurare gli host virtuali Apache.

Un host virtuale è un file separato che contiene configurazioni che consentono di impostare un dominio separato da quello predefinito. Per questa guida, configureremo un host virtuale per il dominio crazytechgeek.info.

L'host virtuale predefinito si trova nella directory /var/www/html. Funziona solo per un singolo sito. Per creare un host virtuale separato per il nostro dominio, creeremo un'altra struttura di directory all'interno della directory /var/www come mostrato.

sudo mkdir -p /var/www/crazytechgeek.info/html

Inoltre, puoi anche creare una directory per archiviare i file di registro.

sudo mkdir -p /var/www/crazytechgeek.info/log

Successivamente, modifica le autorizzazioni del file utilizzando la variabile di ambiente $USER come mostrato.

sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html

Inoltre, regola le autorizzazioni della directory webroot come mostrato.

sudo chmod -R 755 /var/www

Successivamente, crea un file index.html di esempio come mostrato.

sudo vim /var/www/crazytechgeek.info/html/index.html

Premi la lettera 'i' sulla tastiera e incolla alcuni contenuti di esempio come mostrato che verranno visualizzati sul browser web durante il test dell'host virtuale.

<html>
  <head>
    <title>Welcome to crazytechgeek.info!</title>
  </head>
  <body>
    <h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1>
  </body>
</html>

Salvare ed uscire dal file di configurazione.

Una volta creati il file indice di esempio e la directory del sito, è ora possibile procedere e creare il file host virtuale. Il file host virtuale conterrà la configurazione del sito del tuo dominio e istruirà Apache su come risponderà alle richieste dei clienti.

Il file host virtuale conterrà la configurazione del sito del tuo dominio e istruirà Apache su come risponderà alle richieste dei clienti. Ma procedendo, devi creare 2 directory: le directory sites-available e sites-enabled.

Il file dell'host virtuale verrà archiviato nella directory sites-available mentre la directory sites-enabled conterrà il collegamento simbolico all'host virtuale.

Crea entrambe le directory come mostrato.

sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled

Successivamente, modifica il file di configurazione principale del server web Apache e indica ad Apache dove individuare l'host virtuale all'interno della directory abilitata ai siti.

sudo vim /etc/httpd/conf/httpd.conf

Aggiungi la riga come mostrato alla fine del file di configurazione.

IncludeOptional sites-enabled/*.conf

Salva ed esci.

Ora crea un file host virtuale come mostrato:

sudo vim /etc/httpd/sites-available/crazytechgeek.info

Incolla il contenuto qui sotto e sostituisci crazytechgeek.info con il tuo nome di dominio.

<VirtualHost *:80>
    ServerName www.crazytechgeek.info
    ServerAlias crazytechgeek.info
    DocumentRoot /var/www/crazytechgeek.info/html
    ErrorLog /var/www/crazytechgeek.info/log/error.log
    CustomLog /var/www/crazytechgeek.info/log/requests.log combined
</VirtualHost>

Salvare ed uscire dal file.

Ora abilita il file host virtuale creando un collegamento simbolico nella directory sites-enabled.

sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf

Regolazione delle autorizzazioni SELinux per gli host virtuali

CentOS 8 e RHEL 8 vengono forniti con SELinux che è un modulo di sicurezza per rafforzare la sicurezza del sistema Linux. Poiché hai configurato una directory log personalizzata nel passaggio precedente, devi aggiornare alcune policy SELinux per istruire il server web Apache a scrivere nella directory.

Esistono 2 approcci per modificare le policy di SELinux Apache: modificare le policy in modo universale e le policy su una directory. Quest'ultimo è preferito perché è più preferito.

Adeguamento delle policy SELinux su una directory

La modifica delle autorizzazioni SELinux per la directory dei log ti dà il controllo assoluto sulle politiche del server web Apache. Questo metodo è piuttosto lungo e richiede la configurazione manuale del tipo di contesto per le directory aggiuntive specificate nel file di configurazione dell'host virtuale.

Prima di iniziare, conferma innanzitutto il tipo di contesto assegnato alla directory log da SELinux:

sudo ls -dlZ /var/www/crazytechgeek.info/log/

L'output dovrebbe essere simile a quello che abbiamo di seguito.

Dall'output, il contesto impostato è httpd_sys_content_t. Ciò indica che il server web può leggere solo i file nella directory di registro. È necessario modificare questo contesto in httpd_log_t per consentire ad Apache di generare e aggiungere voci di registro alla directory.

Eseguire quindi il comando:

sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Se ti capita di ricevere l'errore sotto "semanage: comando non trovato".

Ciò implica che i pacchetti che prevedono il comando semanage non siano installati. Per correggere questo errore, è necessario installare tali pacchetti. Ma prima, controlla quali pacchetti forniscono il comando semanage eseguendo:

sudo dnf whatprovides /usr/sbin/semanage

L'output ci fornisce il pacchetto che fornisce semanage, che è policycoreutils-python-utils.

Ora installa il pacchetto come mostrato utilizzando il gestore pacchetti DNF.

sudo dnf install policycoreutils-python-utils

Il comando per modificare il contesto ora dovrebbe funzionare.

sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"

Per salvare le modifiche e renderle persistenti, esegui il comando restorecon come mostrato:

sudo restorecon -R -v /var/www/crazytechgeek.info/log

Puoi confermare le modifiche eseguendo ancora una volta il comando:

sudo ls -dlZ /var/www/crazytechgeek.info/log/

Assicurati di notare che il tipo di contesto è cambiato in httpd_log_t come mostrato nell'output.

Riavviare Apache per applicare le modifiche.

sudo systemctl restart httpd

Ora puoi verificare se Apache sta salvando i file di registro nella directory log elencandone i contenuti come mostrato:

ls -l /var/www/crazytechgeek.info/log/

Dovresti essere in grado di vedere due file di registro come mostrato: registro degli errori e file di registro delle richieste.

Test dell'host virtuale Apache

Infine, devi essere sicuro che il server web Apache stia servendo il tuo file host virtuale. Per fare ciò, apri il browser e vai all’indirizzo IP o al nome di dominio del tuo server:

http://domain-name

Perfetto! Ciò indica che tutto è andato bene e il nostro host virtuale viene servito come previsto.

Conclusione

In questa guida abbiamo imparato come installare il server web Apache su CentOS 8 e RHEL 8 e anche come configurare un file host virtuale su servire contenuti per un dominio aggiuntivo. Sentiti libero di configurare più file host virtuali come ritieni opportuno per ospitare domini aggiuntivi.

Se desideri configurare uno stack di hosting completo, ti consiglio di installare uno stack LAMP su CentOS 8.