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

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

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

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

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:
$ 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.

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/

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.

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

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/