Apache HTTP Server (Apache), è uno dei più popolari software per server Web multipiattaforma gratuiti e open source, rilasciato secondo i termini della licenza Apache 2.0.
L'Apache è popolare come parte della configurazione LAMP, essendo la A nell'acronimo. La funzionalità del server Apache può essere estesa con i numerosi moduli disponibili.
Prerequisiti:
- Server Centos 8 aggiornato
- Accesso root al server (o utente con accesso sudo)
- Firewall configurato per consentire il traffico verso le porte 80 e 443
Installazione di Apache
Assicurati che i pacchetti siano aggiornati:
sudo dnf -y update
Apache è disponibile nei repository software predefiniti di CentOS 8 come httpd
. Puoi controllare le informazioni a riguardo usando questo comando:
sudo dnf info httpd
Dovresti vedere qualcosa di simile a questo:
$ sudo dnf info httpd
CentOS Linux 8 - AppStream 20 MB/s | 8.8 MB 00:00
CentOS Linux 8 - BaseOS 24 MB/s | 5.6 MB 00:00
Last metadata expiration check: 0:00:01 ago on Sat 28 Aug 2021 01:06:59 PM UTC.
Available Packages
Name : httpd
Version : 2.4.37
Release : 39.module_el8.4.0+778+c970deab
Architecture : x86_64
Size : 1.4 M
Source : httpd-2.4.37-39.module_el8.4.0+778+c970deab.src.rpm
Repository : appstream
Summary : Apache HTTP Server
URL : https://httpd.apache.org/
License : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
: web server.
Installalo con questo comando:
sudo dnf install -y httpd
Abilitazione di http e https in firewalld
Se hai un firewall attivo e funzionante, devi abilitare le porte http e https usando questi comandi:
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
Ora ricarica il firewall per rendere effettive queste nuove regole:
sudo firewall-cmd --reload
Avvio e abilitazione del servizio httpd
Per impostazione predefinita, il servizio non è avviato. Conferma con il seguente comando:
sudo systemctl status httpd
Uscita:
$ sudo systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: inactive (dead)
Docs: man:httpd.service(8)
Avvia il servizio con questo comando:
sudo systemctl start httpd
Riceverai uno stato attivo quando il servizio è in esecuzione
Conferma che ora funziona correttamente:
$ sudo systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Sat 2021-08-28 13:32:17 UTC; 17s ago
Docs: man:httpd.service(8)
Main PID: 65827 (httpd)
Status: "Running, listening on: port 80"
Tasks: 213 (limit: 23800)
Memory: 28.9M
CGroup: /system.slice/httpd.service
├─65827 /usr/sbin/httpd -DFOREGROUND
├─65828 /usr/sbin/httpd -DFOREGROUND
├─65829 /usr/sbin/httpd -DFOREGROUND
├─65830 /usr/sbin/httpd -DFOREGROUND
└─65831 /usr/sbin/httpd -DFOREGROUND
Aug 28 13:32:17 test-app-server systemd[1]: Starting The Apache HTTP Server...
Aug 28 13:32:17 test-app-server httpd[65827]: AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using fe80::8fc:23ff:fe51:cc>
Aug 28 13:32:17 test-app-server systemd[1]: Started The Apache HTTP Server.
Aug 28 13:32:17 test-app-server httpd[65827]: Server configured, listening on: port 80
Quanto sopra conferma che Apache ora funziona correttamente.
Per confermare che il servizio è accessibile, vai al seguente URL per vedere se riesci a ottenere la pagina httpd:
http://server_ip
Se non conosci il server attivo, usa il seguente comando nel tuo terminale:
curl -4 icanhazip.com
Una volta che visiti quella pagina, se tutto funziona correttamente dovresti vedere la pagina predefinita di Apache come nella schermata qui sotto:
Per assicurarti che il servizio sia sempre avviato all'avvio, usa questo comando systemctl:
sudo systemctl enable httpd
Configurazione di host virtuali
Con Apache, è possibile ospitare più siti sullo stesso server su cui è in esecuzione Apache. Questo può sempre essere ottenuto utilizzando più domini, ognuno dei quali rappresenta un sito ospitato dal server.
Gli host virtuali Apache sono simili ai blocchi del server Nginx. Ogni host virtuale avrà i dettagli di configurazione per un singolo host. Puoi avere tutti gli host virtuali che vuoi.
In questo esempio utilizzeremo il dominio site1.citizix.com
per l'host virtuale ma sii libero di utilizzare il dominio di tua scelta. Tieni presente che il DNS per il dominio da utilizzare dovrebbe essere già configurato per puntare all'indirizzo IP del server.
Confermalo con:
dig -t A site1.citizix.com
Creazione di directory e contenuto di esempio
La pagina predefinita di Apache è configurata come un host virtuale predefinito che serve contenuti da /var/www/html
. È buona norma creare la directory del tuo sito in /var/www
directory poiché è una buona pratica servire da lì.
Creiamo una directory per il nostro sito con il seguente comando:
sudo mkdir /var/www/site1.citizix.com
Creiamo un semplice index.html
pagina da servire dal nostro sito. Avrai bisogno di vim installato per farlo funzionare, altrimenti usa questo comando:
sudo dnf install -y vim
Modifica il file:
sudo vim /var/www/site1.citizix.com/index.html
Aggiungi contenuto al file:
<html>
<head>
<title>Hello from Citizix Site1!</title>
</head>
<body>
<h1>Hey!</h1>
<p>This is citizix site1. Welcome here.</p>
</body>
</html>
Infine, assicuriamoci che l'utente corrente possieda la directory del sito:
sudo chown -R $USER:$USER /var/www/site1.citizix.com
Creazione di un host virtuale
I file Apache Virtual host specificano la configurazione di ciascun sito e indicano al server Web Apache come rispondere alle varie richieste di dominio.
Le configurazioni di Apache verranno archiviate nella directory /etc/httpd/conf.d/
. Creiamo una configurazione per il nostro sito:
sudo vim /etc/httpd/conf.d/site1.citizix.com.conf
Aggiungi il seguente contenuto:
<VirtualHost *:80>
ServerName site1.citizix.com
ServerAlias site1.citizix.com
DocumentRoot /var/www/site1.citizix.com
ErrorLog /var/log/httpd/site1.citizix.com.error.log
CustomLog /var/log/httpd/site1.citizix.com.requests.log combined
</VirtualHost>
Questo dirà ad Apache quanto segue:
ServerName
e ServerAlias – nome dell'host da servireDocumentRoot
– dove trovare direttamente la radice che contiene i documenti web pubblicamente accessibiliErrorLog
– dove archiviare i log degli errori per questo sitoCustomLog
– dove archiviare i registri delle richieste per questo particolare sito
Salva e chiudi il file quando hai finito
Test dell'host virtuale
Ora che la configurazione è a posto, dobbiamo verificare che tutto funzioni come previsto.
Per prima cosa riavvia Apache per ricaricare la configurazione:
sudo systemctl restart httpd
Elenca il contenuto del /var/log/httpd/
directory per vedere se Apache ha creato i file di registro:
Se tutto va bene, dovresti vedere un output simile a questo:
# ls /var/log/httpd/
access_log error_log site1.citizix.com.error.log site1.citizix.com.requests.log
Se tutto va bene, Apache ora servirà il tuo nome di dominio. Puoi verificarlo accedendo a http://site1.citizix.com
, dove dovresti vedere qualcosa del genere:
La schermata sopra conferma che l'host virtuale è stato configurato correttamente e offre contenuti.
Se devi ospitare più altri siti, ripeti i passaggi precedenti per i siti che desideri.
Conclusione
Siamo riusciti a installare e configurare il server Web Apache nelle istruzioni precedenti in Centos 8 Server.