Hoe Apache te installeren met virtuele host op CentOS 8

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
Verify Apache Version

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
Verify Apache Service Status

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
Find CentOS Server IP Address

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

Check Apache Webpage

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:Als u wijzigingen hebt aangebracht in een van de configuratiebestanden en u moet opnieuw opstarten om de wijzigingen toe te passen, voer dan het commando 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.

Set SELinux Policies on Apache Log Directory

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:Als je toevallig de volgende foutmelding krijgt: “semanage: command not found“.

$ 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/
Check SELinux Context Type

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.

Check Apache Log Files

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
Check Apache Virtual Host for Website

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/