De Apache-webserver is een opensource en populaire HTTP-webserver die nog steeds een enorm marktaandeel heeft in de hostingindustrie. Het wordt geleverd met veel functies, waaronder moduleverbeteringen, ondersteuning voor meerdere protocollen, vereenvoudigde configuratie en ondersteuning voor meerdere talen om er maar een paar te noemen.
Lees ook: Hoe Nginx te installeren op CentOS 8
In deze handleiding zullen we u begeleiden bij de installatie van de Apache-webserver op CentOS 8 en RHEL 8 met een omgeving voor virtuele hosts. Op het moment van schrijven van deze handleiding is de nieuwste versie van Apache Apache 2.2.43.
Apache-webserver installeren
Om te beginnen, update eerst uw CentOS 8- of RHEL 8-systeempakketlijst met behulp van het volgende dnf-commando.
$ sudo dnf update
Zodra de update is voltooid, installeert u de Apache-webserver door het volgende commando uit te voeren.
$ sudo dnf install httpd
Zodra geïnstalleerd, kunt u de versie van Apache verifiëren door het rpm-commando uit te voeren.
$ rpm -qi httpd

Het commando geeft een reeks informatie weer zoals de versie, releasedatum, build en architectuur van het pakket.
Om de Apache HTTP-webdienst te starten, voer het systemctl-commando uit.
$ sudo systemctl start httpd
Om te bevestigen of de dienst draait, voer uit.
$ sudo systemctl status httpd

Uit de uitvoer blijkt dat de ‘actieve’ status in het groen aangeeft dat de Apache-webserver actief is en draait.
Om alle twijfels weg te nemen dat de webserver draait, vraag een testpagina op van Apache door naar het IP-adres of domeinnaam van uw server te bladeren zoals getoond.
http://server-ip
U kunt uw server-IP verkrijgen door het ifconfig-commando uit te voeren. Als uw server in de cloud wordt gehost, kunt u het openbare IP verkrijgen door het curl-commando uit te voeren.
$ curl ifconfig.me OR $ curl -4 icanhazip.com

Wanneer u het IP-adres van de server bekijkt, zou u de volgende webpagina moeten zien.

Dit is een zekere bevestiging dat de webserver draait.
Het beheren van de Apache-webserver
Met Apache geïnstalleerd en draaiend, kunt u de inspectietool systemctl gebruiken om Apache te beheren.
Bijvoorbeeld, om Apache te stoppen, voer het commando uit:
$ sudo systemctl stop httpd
Om de dienst opnieuw te starten, voer uit:
$ sudo systemctl start httpd
Het opnieuw opstarten van de service veroorzaakt meestal een onderbreking van de service. Een beter alternatief is om eenvoudig te herladen zonder enige onderbreking van de verbinding.
$ sudo systemctl restart httpd
Om de Apache-webserver automatisch te starten bij het opstarten of herstarten, voer je onderstaand commando uit. Dit zorgt ervoor dat Apache automatisch start zonder jouw tussenkomst.
$ sudo systemctl reload httpd
Als je ervoor kiest om de service niet automatisch te starten bij het opstarten, voer dan het volgende uit:
$ sudo systemctl enable httpd
Apache virtuele hosts instellen
$ sudo systemctl disable httpd
Standaard is de Apache-webserver geconfigureerd om slechts één website te bedienen of hosten. Als je slechts één website wilt hosten, is deze stap niet vereist. Maar als je van plan bent meerdere domeinen op je server te hosten, dan moet je Apache virtuele hosts configureren.
De standaard virtuele host bevindt zich in de map /var/www/html
. Dit werkt alleen voor één site. Om een aparte virtuele host voor ons domein te maken, zullen we een andere mappenstructuur binnen de /var/www
-map aanmaken zoals getoond.
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.
Bovendien kun je ook een map maken voor het opslaan van logbestanden.
$ sudo mkdir -p /var/www/crazytechgeek.info/html
Vervolgens bewerk je de bestandsmachtigingen met behulp van de $USER
-omgevingsvariabele zoals getoond.
$ sudo mkdir -p /var/www/crazytechgeek.info/log
Stel ook de machtigingen van de webroot-map in zoals getoond.
$ sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html
Maak vervolgens een voorbeeldbestand index.html
zoals getoond.
$ sudo chmod -R 755 /var/www
Druk op de letter 'i'
op het toetsenbord en plak wat voorbeeldinhoud zoals getoond, die wordt weergegeven in de webbrowser bij het testen van de virtuele host.
$ sudo vim /var/www/crazytechgeek.info/html/index.html
Sla op en sluit het configuratiebestand af.
<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>
Sla het configuratiebestand op en sluit het af.
Met het voorbeeldindexbestand en de site-directory gemaakt, kunt u nu doorgaan en het virtuele hostbestand maken. Het virtuele hostbestand bevat de configuratie van uw domeinsite en geeft Apache instructies over hoe het zal reageren op verzoeken van cliënten.
Het virtuele hostbestand bevat de configuratie van uw domeinsite en geeft Apache instructies over hoe het zal reageren op verzoeken van cliënten. Maar voordat u verder gaat, moet u 2 mappen maken: de sites-available
en sites-enabled
mappen.
Het virtuele hostbestand wordt opgeslagen in de map sites-available
, terwijl de map sites-enabled
de symbolische koppeling naar de virtuele host bevat.
Maak beide mappen zoals hieronder weergegeven.
$ sudo mkdir /etc/httpd/sites-available $ sudo mkdir /etc/httpd/sites-enabled
Wijzig vervolgens het hoofdconfiguratiebestand van de Apache-webserver en geef Apache instructies waar het virtuele hostbestand zich bevindt in de map sites-enabled.
$ sudo vim /etc/httpd/conf/httpd.conf
Voeg de regel toe zoals hieronder weergegeven helemaal aan het einde van het configuratiebestand.
IncludeOptional sites-enabled/*.conf
Sla op en sluit af.
Maak nu een virtueel hostbestand zoals hieronder weergegeven:
$ sudo vim /etc/httpd/sites-available/crazytechgeek.info
Plak de onderstaande inhoud en vervang crazytechgeek.info
door uw eigen domeinnaam.
<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>
Sla op en sluit het bestand af.
Schakel nu het virtuele hostbestand in door een symbolische koppeling te maken in de map sites-enabled
.
$ sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf
Aanpassen van SELinux-machtigingen voor virtuele hosts
CentOS 8 en RHEL 8 worden geleverd met SELinux, dat een beveiligingsmodule is om de beveiliging van het Linux-systeem te versterken. Aangezien je een aangepaste log map hebt geconfigureerd in de vorige stap, moet je enkele SELinux-beleidsregels bijwerken om de Apache-webserver te instrueren om naar de map te schrijven.
Er zijn 2 benaderingen voor het aanpassen van SELinux Apache-beleidsregels: universele aanpassing van beleidsregels en beleidsregels voor een map. De laatste heeft de voorkeur omdat deze meer voorkeur geniet.
Aanpassen van SELinux-beleidsregels voor een map
Het bewerken van SELinux machtigingen voor de logmap geeft je absolute controle over de beleidsregels van de Apache-webserver. Deze methode is vrij langdurig en vereist dat je handmatig het contexttype configureert voor aanvullende mappen die zijn gespecificeerd in het configuratiebestand van de virtuele host.
Voordat je begint, bevestig eerst het contexttype dat is toegewezen aan de logmap door SELinux:
$ sudo ls -dlZ /var/www/crazytechgeek.info/log/
De uitvoer zou vergelijkbaar moeten zijn met wat we hieronder hebben.

Uit de uitvoer blijkt dat de ingestelde context httpd_sys_content_t is. Dit geeft aan dat de webserver alleen bestanden in de logmap kan lezen. Je moet deze context wijzigen naar httpd_log_t om Apache in staat te stellen logboekvermeldingen te genereren en toe te voegen aan de map.
Voer daarom het commando uit:
$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"
Als je de onderstaande foutmelding krijgt “semanage: command not found“.
Impliceert dit dat de pakketten die nodig zijn voor het semanage commando niet zijn geïnstalleerd. Om deze fout op te lossen, moet je die pakketten installeren. Controleer eerst welke pakketten het semanage commando leveren door het volgende commando uit te voeren:
$ sudo dnf whatprovides /usr/sbin/semanage
De output geeft ons het pakket dat semanage levert, namelijk policycoreutils-python-utils.
Installeer nu het pakket zoals getoond met behulp van de DNF-pakketbeheerder.
$ sudo dnf install policycoreutils-python-utils
Het commando voor het wijzigen van de context zou nu moeten werken.
$ sudo semanage fcontext -a -t httpd_log_t "/var/www/crazytechgeek.info/log(/.*)?"
Om de wijzigingen op te slaan en persistent te maken, geef het restorecon commando zoals getoond:
$ sudo restorecon -R -v /var/www/crazytechgeek.info/log
Je kunt de wijzigingen bevestigen door het commando opnieuw uit te voeren:
$ sudo ls -dlZ /var/www/crazytechgeek.info/log/

Zorg ervoor dat het contexttype is gewijzigd in httpd_log_t
zoals te zien is in de output.
Herstart Apache om de wijzigingen toe te passen.
$ sudo systemctl restart httpd
Je kunt nu controleren of Apache logbestanden opslaat in de logmap door de inhoud ervan te tonen zoals getoond:
$ ls -l /var/www/crazytechgeek.info/log/
Je zou twee logbestanden moeten zien: foutlogboek en verzoeklogboekbestanden zoals weergegeven.

Apache Virtual Host testen
Tenslotte, moet je ervoor zorgen dat de Apache-webserver je virtuele hostbestand bedient. Om dit te controleren, open je browser en ga je naar het IP-adres of domeinnaam van je server:
http://domain-name

Perfect! Dit geeft aan dat alles goed is verlopen en dat onze virtuele host zoals verwacht wordt bediend.
Conclusie
In deze handleiding hebben we geleerd hoe we de Apache webserver kunnen installeren op CentOS 8 en RHEL 8, en ook hoe we een virtueel hostbestand kunnen configureren om content te serveren voor een extra domein. Voel je vrij om meerdere virtuele hostbestanden te configureren zoals je nodig acht om extra domeinen te accommoderen.
Als je een volledige hostingstack wilt opzetten, raad ik je aan om een LAMP-stack te installeren op CentOS 8.
Source:
https://www.tecmint.com/install-apache-with-virtual-host-on-centos-8/