Zoeken op website

Apache met virtuele host installeren op CentOS 8


De Apache webserver is een opensource en populaire HTTP-webserver die nog steeds een enorm marktaandeel geniet in de hostingindustrie. Het wordt geleverd met een groot aantal functies, waaronder moduleverbeteringen, ondersteuning voor meerdere protocollen, vereenvoudigde configuratie en ondersteuning voor meerdere talen, om er maar een paar te noemen.

Lees ook: Nginx installeren op CentOS 8

In deze handleiding begeleiden we u bij de installatie van de Apache webserver op CentOS 8 en RHEL 8 met een virtuele hostomgeving. Op het moment dat deze tutorial wordt geschreven, is de nieuwste versie van Apache Apache 2.2.43.

Apache-webserver installeren

Om aan de slag te gaan, updatet u eerst uw CentOS 8- of RHEL 8-systeempakketlijst met de volgende dnf-opdracht.

sudo dnf update

Zodra de update voltooid is, installeert u de Apache webserver door de volgende opdracht uit te voeren.

sudo dnf install httpd

Eenmaal geïnstalleerd, kunt u de versie van Apache verifiëren door de opdracht rpm uit te voeren.

rpm -qi httpd

De opdracht drukt een reeks informatie af, zoals de versie, releasedatum, build en architectuur van het pakket.

Om de Apache HTTP-webservice te starten, voert u de opdracht systemctl uit.

sudo systemctl start httpd

Voer uit om te bevestigen of de service actief is.

sudo systemctl status httpd

Uit de uitvoer blijkt dat de status ‘actief’ in het groen aangeeft dat de Apache-webserver actief is.

Om eventuele twijfels of de webserver actief is weg te nemen, kunt u een testpagina van Apache aanvragen door naar het IP-adres of de domeinnaam van uw server te bladeren, zoals weergegeven.

http://server-ip  

U kunt uw server-IP verkrijgen door de opdracht ifconfig uit te voeren. Als uw server in de cloud wordt gehost, kunt u het openbare IP-adres verkrijgen door de opdracht curl uit te voeren.

curl ifconfig.me 
OR
curl -4 icanhazip.com

Wanneer u door het IP-adres van de server bladert, zou de volgende webpagina moeten verschijnen.

Dit is een zekere bevestiging dat de webserver actief is.

Apache-webserver beheren

Als Apache geïnstalleerd en actief is, kunt u de systemctl inspectietool gebruiken om Apache te beheren.

Om Apache bijvoorbeeld te stoppen, voert u de opdracht uit:

sudo systemctl stop httpd

Voer het volgende uit om de service opnieuw te starten:

sudo systemctl start httpd

Als u wijzigingen heeft aangebracht in een van de configuratiebestanden en u moet opnieuw opstarten om de wijzigingen toe te passen, voert u de opdracht uit:

sudo systemctl restart httpd

Het opnieuw starten van de service veroorzaakt meestal een serviceonderbreking. Een beter alternatief is om simpelweg opnieuw te laden zonder enige onderbreking van de verbinding.

sudo systemctl reload httpd

Om de Apache-webserver automatisch te starten bij het opstarten of herstarten, voert u de onderstaande opdracht uit. Dit zorgt ervoor dat Apache automatisch start zonder uw tussenkomst.

sudo systemctl enable httpd

Als u ervoor kiest om de service niet automatisch te starten tijdens het opstarten, voert u het volgende uit:

sudo systemctl disable httpd

Apache virtuele hosts instellen

Standaard is de Apache-webserver geconfigureerd om slechts één website te bedienen of te hosten. Als u slechts één website wilt hosten, is deze stap niet vereist. Maar als u van plan bent meerdere domeinen op uw server te hosten, moet u virtuele Apache-hosts configureren.

Een virtuele host is een afzonderlijk bestand dat configuraties bevat waarmee u een apart domein kunt instellen dan het standaarddomein. Voor deze handleiding zullen we een virtuele host opzetten voor het domein crazytechgeek.info.

De standaard virtuele host bevindt zich in de map /var/www/html. Dit werkt alleen voor één enkele site. Om een aparte virtuele host voor ons domein te maken, zullen we een andere mapstructuur maken binnen de map /var/www, zoals weergegeven.

sudo mkdir -p /var/www/crazytechgeek.info/html

Bovendien kunt u ook een map maken voor het opslaan van logbestanden.

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

Bewerk vervolgens de bestandsrechten en gebruik de omgevingsvariabele $USER zoals weergegeven.

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

Pas ook de machtigingen van de webroot-map aan, zoals weergegeven.

sudo chmod -R 755 /var/www

Maak vervolgens een voorbeeldbestand index.html, zoals weergegeven.

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

Druk op de letter 'i' op het toetsenbord en plak wat voorbeeldinhoud zoals weergegeven, die in de webbrowser wordt weergegeven tijdens het testen van de virtuele host.

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

Nu het voorbeeldindexbestand en de sitemap zijn gemaakt, kunt u nu doorgaan met het maken van het virtuele hostbestand. Het virtuele hostbestand bevat de siteconfiguratie van uw domein en instrueert Apache hoe deze zal reageren op verzoeken van klanten.

Het virtuele hostbestand bevat de siteconfiguratie van uw domein en instrueert Apache hoe deze zal reageren op verzoeken van klanten. Maar als u verdergaat, moet u twee mappen maken: de mappen sites-available en sites-enabled.

Het virtuele hostbestand wordt opgeslagen in de map sites-available, terwijl de map sites-enabled de symbolische link naar de virtuele host bevat.

Maak beide mappen zoals weergegeven.

sudo mkdir /etc/httpd/sites-available
sudo mkdir /etc/httpd/sites-enabled

Wijzig vervolgens het hoofdconfiguratiebestand van de Apache-webserver en instrueer Apache waar de virtuele host in de map met sites moet worden gevonden.

sudo vim /etc/httpd/conf/httpd.conf

Voeg de regel toe zoals weergegeven helemaal aan het einde van het configuratiebestand.

IncludeOptional sites-enabled/*.conf

Opslaan en afsluiten.

Maak nu een virtueel hostbestand zoals 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 het bestand op en sluit het af.

Schakel nu het virtuele hostbestand in door een symbolische link te maken in de map sites-enabled.

sudo ln -s /etc/httpd/sites-available/crazytechgeek.info.conf /etc/httpd/sites-enabled/crazytechgeek.info.conf

SELinux-rechten voor virtuele hosts aanpassen

CentOS 8 en RHEL 8 worden geleverd met SELinux, wat een beveiligingsmodule is om de beveiliging van het Linux-systeem te versterken. Omdat je in de vorige stap een aangepaste log map hebt geconfigureerd, moet je een aantal SELinux-beleidsregels bijwerken om de Apache-webserver te instrueren om naar de map te schrijven.

Er zijn 2 benaderingen bij het aanpassen van SELinux Apache beleid: Het universeel aanpassen van beleid en het beleid op een directory. Dit laatste heeft de voorkeur omdat het meer de voorkeur heeft.

SELinux-beleid aanpassen op een directory

Het bewerken van SELinux rechten voor de log directory geeft je absolute controle over het beleid van de Apache webserver. Deze methode is behoorlijk lang en vereist dat u het contexttype handmatig configureert voor extra mappen die zijn opgegeven in het configuratiebestand van de virtuele host.

Voordat je begint, bevestig eerst het contexttype dat door SELinux aan de log directory is toegewezen:

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 logdirectory kan lezen. U moet deze context wijzigen in httpd_log_t om Apache in staat te stellen logboekvermeldingen te genereren en aan de map toe te voegen.

Voer daarom het commando uit:

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

Als u toevallig de onderstaande foutmelding krijgt: "semanage: command not found".

Het impliceert dat de pakketten die voorzien in het semanage commando niet zijn geïnstalleerd. Om deze fout te verhelpen, moet u deze pakketten installeren. Maar controleer eerst welke pakketten semanage-opdrachten bieden door het volgende uit te voeren:

sudo dnf whatprovides /usr/sbin/semanage

De uitvoer geeft ons het pakket dat voor semanage zorgt, namelijk policycoreutils-python-utils.

Installeer nu het pakket zoals weergegeven 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 ze persistent te maken, voert u de opdracht restorecon uit, zoals weergegeven:

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

U kunt de wijzigingen bevestigen door nogmaals de opdracht uit te voeren:

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

Houd er rekening mee dat het contexttype is gewijzigd in httpd_log_t, zoals te zien is in de uitvoer.

Start Apache opnieuw op om de wijzigingen toe te passen.

sudo systemctl restart httpd

U kunt nu bevestigen of Apache logbestanden in de logmap opslaat door de inhoud ervan op te sommen zoals weergegeven:

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

U zou twee logbestanden moeten kunnen zien, zoals weergegeven: foutenlogboek en verzoeklogboekbestanden.

Apache virtuele host testen

Ten slotte moet u er zeker van zijn dat de Apache-webserver uw virtuele hostbestand bedient. Open hiervoor uw browser en ga naar het IP-adres of de domeinnaam van uw server:

http://domain-name

Perfect! Dit geeft aan dat alles goed is gegaan en dat onze virtuele host wordt bediend zoals verwacht.

Conclusie

In deze handleiding hebben we geleerd hoe u de Apache webserver op CentOS 8 en RHEL 8 kunt installeren en ook hoe u een virtueel hostbestand kunt configureren inhoud aanbieden voor een extra domein. Voel je vrij om meerdere virtuele hostbestanden te configureren zoals jij dat nodig acht om extra domeinen te huisvesten.

Als je een complete hostingstack wilt opzetten, raad ik je aan een LAMP-stack op CentOS 8 te installeren.