Come installare Apache con host virtual su CentOS 8

Il web server Apache è un server HTTP open source e popolare che continua a godere di una grande quota di mercato nell’industria dell’hosting. È dotato di molte funzionalità, tra cui miglioramenti dei moduli, supporto multi-protocollo, configurazione semplificata e supporto multi-lingua per citarne solo alcuni.

Leggi anche: Come installare Nginx su CentOS 8

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

Installazione del Web Server Apache

Per iniziare, aggiorna prima l’elenco dei pacchetti del sistema CentOS 8 o RHEL 8 utilizzando il seguente comando dnf.

$ sudo dnf update

Una volta completato l’aggiornamento, installa il web server 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
Verify Apache Version

Il comando stampa un array di informazioni come la versione, la data di rilascio, la build e l’architettura del pacchetto.

Per avviare il servizio web Apache HTTP, esegui il comando systemctl.

$ sudo systemctl start httpd

Per confermare se il servizio è in esecuzione, esegui.

$ sudo systemctl status httpd
Verify Apache Service Status

Dall’output, lo stato ‘attivo‘ in verde indica che il web server Apache è attivo e in esecuzione.

Per dissipare ogni dubbio sul fatto che il web server sia in esecuzione, richiedi una pagina di test da Apache navigando con l’indirizzo IP del tuo server o il nome di dominio come mostrato.

http://server-ip  

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

$ curl ifconfig.me 
OR
$ curl -4 icanhazip.com
Find CentOS Server IP Address

Quando navighi con l’indirizzo IP del server, dovresti ottenere visualizzata la seguente pagina web.

Check Apache Webpage

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

Gestione del Web server Apache

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

Per esempio, per fermare Apache, esegui il comando:

$ sudo systemctl stop httpd

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

$ sudo systemctl start httpd

Se hai apportato modifiche ai file di configurazione e devi riavviare per applicare le modifiche, esegui il comando:

$ sudo systemctl restart httpd

Riavviare il servizio di solito causa una interruzione del servizio. Un’alternativa migliore è ricaricare senza interruzioni la connessione.

$ sudo systemctl reload httpd

Per avviare automaticamente il server web Apache all’avvio o al riavvio, esegui il comando qui sotto. Questo assicurerà che Apache si avvii automaticamente senza il tuo intervento.

$ sudo systemctl enable httpd

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

$ sudo systemctl disable httpd

Configurazione degli host virtuali di Apache

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

A virtual host is a separate file that contains configurations that allow you to set up a separate domain from the default one. For this guide, we will set up a virtual host for the domain crazytechgeek.info.

L’host virtuale predefinito si trova nella directory /var/www/html. Questo 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 memorizzare i file di log.

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

Successivamente, modifica i permessi del file utilizzando la variabile di ambiente $USER come mostrato.

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

Inoltre, regola i permessi della directory webroot come mostrato.

$ sudo chmod -R 755 /var/www

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

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

Premi il tasto '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>

Salva ed esci dal file di configurazione.

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

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

Il file dell’host virtuale sarà memorizzato 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 istruisci Apache dove localizzare l’host virtuale all’interno della directory sites-enabled.

$ 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 dell’host virtuale come mostrato:

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

Incolla il contenuto qui sotto e sostituisci crazytechgeek.info con il nome del tuo 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>

Salva ed esci dal file.

Ora abilita il file dell’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 dei permessi 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. Dato che hai configurato una directory log personalizzata nel passo precedente, è necessario aggiornare alcune politiche SELinux per istruire il webserver Apache a scrivere nella directory.

Ci sono 2 approcci per regolare le politiche SELinux di Apache: regolare uniformemente le politiche e le politiche su una directory. Quest’ultimo è preferito perché è più preferibile.

Regolazione delle Politiche SELinux su una Directory

Modificare le autorizzazioni SELinux per la directory di log ti dà un controllo assoluto sulle politiche del webserver Apache. Questo metodo è piuttosto lungo e richiede di configurare manualmente il tipo di contesto per ulteriori directory specificate nel file di configurazione dell’host virtuale.

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

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

Il risultato dovrebbe essere simile a quello che abbiamo qui sotto.

Set SELinux Policies on Apache Log Directory

Dal risultato, il contesto impostato è httpd_sys_content_t. Questo indica che il webserver può solo leggere file nella directory di log. Devi cambiare questo contesto in httpd_log_t per consentire ad Apache di generare e aggiungere voci di log alla directory.

Quindi, esegui il comando:

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

Se si verifica l’errore seguente “semanage: comando non trovato“.

Implica che i pacchetti che forniscono il comando semanage non sono installati. Per risolvere questo errore, è necessario installare quei 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 per semanage, che è policycoreutils-python-utils.

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

$ sudo dnf install policycoreutils-python-utils

Il comando per cambiare il contesto dovrebbe ora funzionare.

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

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

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

Puoi confermare le modifiche eseguendo nuovamente il comando:

$ sudo ls -dlZ /var/www/crazytechgeek.info/log/
Check SELinux Context Type

Assicurati di notare che il tipo di contesto è cambiato in httpd_log_t come visto nell’output.

Riavvia Apache affinché le modifiche siano applicate.

$ sudo systemctl restart httpd

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

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

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

Check Apache Log Files

Test dell’host virtuale di Apache

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

http://domain-name
Check Apache Virtual Host for Website

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

Conclusione

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

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

Source:
https://www.tecmint.com/install-apache-with-virtual-host-on-centos-8/