Introductie
Apache is momenteel de meest gebruikte webserver ter wereld. Het is open-source software die meer dan twintig jaar geleden is ontwikkeld en wordt onderhouden door the Apache Software Foundation. Vanaf september 2020 bedient het naar schatting 35% van al het websiteverkeer ter wereld.
Ontwikkelaars geven de voorkeur aan Apache vanwege de snelheid, beveiliging, betrouwbaarheid, robuustheid en het installatiegemak. Daarnaast is Apache in staat om aan de behoeften van veel omgevingen te voldoen, omdat het de installatie van verschillende extensies en modules mogelijk maakt. Dit is mogelijk dankzij een reeks configuraties die ontwikkelaars en serverbeheerders kunnen aanpassen voor verschillende doeleinden. In deze handleiding leiden we je door de algemene configuratiebestanden en opties die verschillende resultaten kunnen beïnvloeden op Ubuntu- en Debian-servers.
Debian en Ubuntu behoren tot de meest gekozen serverbesturingssystemen. De twee hebben veel overeenkomsten. Ze gebruiken bijvoorbeeld allebei de APT-pakketbeheerder en DEB-pakketten voor handmatige installatie. Ze gaan op vergelijkbare wijze om met Apache-instellingen en de mappenstructuur. Daarom zou je deze handleiding met beide besturingssystemen moeten kunnen volgen. Eerst kun je deze handleiding volgen om in een paar stappen een Ubuntu-server in te richten.
Log vervolgens in als een niet-rootgebruiker met sudo-rechten, en laten we beginnen!
Apache installeren op Ubuntu and Debian
Als je server nog geen Apache heeft, kun je dit eenvoudig installeren met één commando. Voer eerst het update-commando uit:
|
1 |
sudo apt-get update |
Daarna kun je Apache installeren door het volgende commando uit te voeren:
|
1 |
sudo apt-get install apache2 |
Wanneer de installatie is voltooid, kun je de geïnstalleerde versie controleren met het commando:
|
1 |
apache2 -v |
Ten tijde van het schrijven van deze handleiding was de versie:

Bezoek daarna het IP-adres of de domeinnaam van je server. Je zou de standaard indexpagina van Apache moeten kunnen zien:

De Apache-bestandshiërarchie in Ubuntu- en Debian-distributies
Zowel Ubuntu- als Debian-distributies gebruiken de apt-pakketbeheerder. Op dezelfde manier creëert het installeren van een pakket vergelijkbare bestandshiërarchieën. In ons geval bewaart Apache, voor zowel Ubuntu als Debian, zijn configuratiebestanden in de map “/etc/apache2” directory. Ga naar de map met het volgende commando en toon de inhoud van de map:
|
1 2 |
cd /etc/apache2 ls -F |
Je kunt de uitvoer van het commando zien in de onderstaande schermafbeelding:

Je ziet een aantal bestanden en submappen waarmee je vertrouwd moet zijn bij het configureren van een Apache-server. Hier is hun beschrijving:
- apache2.conf – Dit is het hoofdconfiguratiebestand voor een Apache-server. Het bevat ook alle standaardconfiguraties. Hoewel bijna alle configuraties vanuit dit bestand kunnen worden gedaan, wordt het altijd aanbevolen om aparte, daarvoor bestemde bestanden te gebruiken voor de eenvoud en om dit standaardbestand te beschermen tegen beschadiging.
- conf-available – Dit is de map met aanvullende lokale configuratiebestanden en bestanden van andere applicaties die nog niet aan modules zijn gekoppeld. De configuraties in deze map zijn niet actief tenzij je ze inschakelt. Het commando a2enconf kan een configuratiebestand inschakelen. Dit is de inhoud van deze map:

- conf-enabled – Dit is de map met aanvullende lokale configuraties en configuratiebestanden van andere applicaties die gekoppeld zijn aan hun bijbehorende modules. De configuratiebestanden in deze map zijn actief en beïnvloeden het gedrag van Apache. Je kunt een configuratiebestand uitschakelen met het commando a2disconf. Dit is de inhoud van deze map:

- envvars – Dit is het bestand met de omgevingsvariabelen van Apache2. De variabelen in dit bestand hebben alleen invloed op Apache en hebben geen betrekking op je Linux-systeem. Dit is de inhoud van het bestand:

- magic – Dit is het bestand met instructies voor het bepalen van het MIME-type van een bestand. Het helpt de server om het type van een bestand te bepalen.
- mods-available –Dit is de map met configuratiebestanden om modules te laden en te configureren. Ze zijn echter nog niet ingeschakeld. Je kunt ze inschakelen met het a2enmod-commando.
- mods-enabled – Dit is de map met configuratiebestanden om modules te laden en te configureren. De configuraties in deze map zijn al ingeschakeld en verwijzen naar de bijbehorende modules. Je kunt de modules uitschakelen met het a2dismod-commando.
- ports-conf –Dit is het bestand dat de poorten specificeert die beschikbaar zijn voor virtuele hosts en de TCP-poorten waarnaar Apache luistert.
- sites-available –Dit is de map met de beschikbare configuratiebestanden voor virtuele hosts van Apache. Virtuele hosts zorgen ervoor dat Apache verschillende websites kan bedienen. De bestanden in deze map zijn nog niet actief. Je kunt een virtueel hostbestand inschakelen met het commando a2ensite.
- sites-enabled – Dit is de map met de geactiveerde configuratiebestanden voor virtuele hosts. Deze bevat meestal symbolische koppelingen naar de bestanden in de map sites-available. Je kunt een virtueel hostbestand uitschakelen met het commando a2dissite.
Het modulaire ontwerp van de Apache-configuratiebestanden stelt je in staat om bestanden naar behoefte aan te passen en toe te voegen.
Inhoud van het Apache2.conf-bestand
Het bestand op “/etc/apache2/apache2.conf– bevat de belangrijkste configuratiebestanden voor Apache. Meer specifiek bevat het de configuratierichtlijnen die de server zijn instructies geven. Het bestaat uit drie secties om de globale server-procesconfiguraties, de standaardserver-configuratie en de virtuele hosts configuraties.
In Ubuntu- en Debian-systemen bevat het grootste deel van het bestand de globale serverprocesconfiguraties. Onderaan vind je de configuraties voor de standaardserver en de virtuele hosts door gebruik te maken van de “Include”-richtlijn. Apache gebruikt de “Include”-richtlijn om andere configuratiebestanden te lezen en deze vervolgens op te nemen in het huidige configuratiebestand, vanaf het punt waar de richtlijn verschijnt. Dit gebeurt bij het opstarten van de Apache-server.
Als je naar de onderkant van het apache2.conf-bestand scrollt, zou je verschillende include-richtlijnen moeten zien. De richtlijnen laden de definities van de modules in de map mods-enabled, het ports.conf-bestand, de lokale configuraties in de map conf-enabled en de configuraties van de virtuele hosts in de map sites-enabled.
Sectie voor globale serverconfiguratie
De sectie voor globale serverconfiguratie bevat de instellingen en instructies die bepalen hoe Apache globaal werkt. Deze bevat enkele richtlijnen waarvan je de waarden kunt wijzigen om het gedrag van Apache aan te passen. Laten we er een paar bespreken:
- Timeout – Deze richtlijn specificeert de maximale tijd voor de server om aan een verzoek te voldoen. Standaard is dit 300 seconden, wat waarschijnlijk te hoog is als je een sneller reagerende app ontwikkelt. Je kunt dit wijzigen naar een lagere waarde als je server voldoende bronnen heeft.
- KeepAlive – Specificeert dat elke verbinding open moet blijven om meerdere verzoeken van dezelfde client af te handelen. Standaard is dit ingesteld op “On”. Als het echter is ingesteld op “Off”, moet elk verzoek een nieuwe verbinding tot stand brengen, zelfs als dit van dezelfde client is. Dit kan leiden tot aanzienlijke overbelasting van de server.
- MaxKeepAliveRequests – Dit regelt het maximale aantal verzoeken dat is toegestaan tijdens een enkele persistente verbinding voordat deze wordt verbroken. Om een onbeperkt aantal verbindingen toe te staan, stel je de waarde in op 0. Voor maximale prestaties en efficiëntie stel je het getal zo hoog mogelijk in.
- KeepAliveTimeout – Dit bepaalt het maximale aantal seconden dat wordt gewacht op het volgende verzoek van dezelfde client na het laatste verzoek voordat de verbinding wordt verbroken. De standaardwaarde is 5 seconden. Als de tijd verstrijkt, wordt bij het volgende verzoek een nieuwe verbinding gemaakt om het verzoek af te handelen.
- HostnameLookups – Bepaalt of DNS-lookup moet worden ingeschakeld of niet. Standaard is dit uitgeschakeld. Als je het inschakelt, zal elk verzoek resulteren in ten minste één lookup naar de nameserver, wat de prestaties van je server aanzienlijk negatief zal beïnvloeden.
Standaard virtueel hostbestand
Een schone installatie van de Apache-server wordt geleverd met een standaard virtual host-bestand genaamd 000-default.conf. Dit is het bestand dat de standaard Apache index.html-pagina serveert. Het hoort in de map sites-available. De inhoud van dit bestand geeft u een algemeen idee van de indeling van Apache virtual host-bestanden. Voer de volgende opdracht uit om het bestand te openen:
|
1 |
sudo nano /etc/apache2/sites-available/000-default.conf |
Hier is de inhoud van het bestand. We hebben de opmerkingen weggelaten voor de beknoptheid:
|
1 2 3 4 5 6 7 8 9 |
<VirtualHost *:80> ServerAdmin webmaster@localhost DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined </VirtualHost> |
Zoals u kunt zien in de configuratiekop VirtualHost *:80, is deze virtual host standaard geconfigureerd om verzoeken op poort 80 af te handelen. Dit is de standaard HTTP-poort.
Apache is ontworpen om de meest specifieke virtual host-definitie te gebruiken die overeenkomt met een bepaald verzoek. Dit betekent dat deze specifieke virtual host niet noodzakelijkerwijs elk verzoek aan de server afhandelt. Als er een ander virtual host-bestand met een specifiekere definitie zou zijn, zou dat dit bestand overschrijven.
Hier zijn de beschrijvingen van de richtlijnen in het virtual host-bestand:
- ServerAdmin – Specificeert het e-mailadres voor contact dat moet worden gebruikt als er serverproblemen zijn. Apache geeft dit meestal weer op de gegenereerde foutpagina. Als u ServerSignature to “Email” in the /etc/apache2/conf-enabled/security.conf bestand, wordt het hier opgegeven e-mailadres weergegeven met een mailto
- DocumentRoot – Deze richtlijn verwijst naar de map die de websitebestanden bevat. U vindt de standaard Apache-welkomstpagina in de map /var/www/html in Ubuntu 20.04.
- ErrorLog – Deze richtlijn bepaalt de locatie van het foutenlogbestand.
- CustomLog – Deze richtlijn toont de locatie van het toegangslogboek en de weergave-indeling van het logboek.
Aanvullende Virtual Host-richtlijnen
- ServerName – Dit specificeert de domeinnaam of het IP-adres dat de virtual host moet afhandelen. Als we meerdere virtual hosts zouden definiëren zodat onze Apache-server meerdere websites kan bedienen, zouden we een ServerName-richtlijn toevoegen en het domein specificeren dat elke virtual host moet bedienen.
- ServerAlias – Deze richtlijn zorgt ervoor dat één virtual host-bestand van toepassing is op meer dan één naam, waardoor alternatieve domeinen worden geboden om bij dezelfde inhoud te komen. Bijvoorbeeld wanneer uw gebruikers toegang hebben tot dezelfde inhoud als ze uw domeinnaam voorafgaan door www. We zouden bijvoorbeeld het volgende kunnen toevoegen aan de virtual host voor het domein example.com domein:
|
1 2 |
ServerName example.com ServerAlias www.example.com |
De Directory-definitierichtlijn
In praktijksituaties zult u uw websitebestanden waarschijnlijk in verschillende mappen hebben staan. Het standaard virtual host-bestand heeft de richtlijn Directory niet, omdat het slechts één index.html-bestand kan serveren. De richtlijn Directory specificeert hoe Apache omgaat met verschillende mappen binnen de document root van de website. In deze richtlijn definieert u ook de toegangsbeperkingen tot het bestandssysteem. Standaard staat Apache alleen internettoegang toe tot de bestanden in de map /var/www. In deze map kunt u andere mappen maken die uw websitebestanden zullen bevatten. Daarnaast kunt u opgeven hoe u wilt dat de bestanden in de map worden geopend. Een voorbeelddefinitie kan er als volgt uitzien:
|
1 2 3 4 5 |
<Directory /var/www/html> Options Indexes FollowSymLinks MultiViews Require all granted AllowOverride all </Directory> |
De <Directory /var/www/html> specificeert de map waarop deze regels van toepassing zijn. De “AllowOverride” optie specificeert of een “.htaccess”-bestand de instellingen moet overschrijven als u het in de opgegeven map plaatst. Dit is nodig bij het werken met frameworks zoals Laravel die werken met .htaccess en URL-rewriting.
Voor meer informatie over virtual hosts kunt u onze tutorial on het instellen van Apache virtual hosts op Ubuntu 20.04 bezoeken. Hier is een voorbeeld van een virtual host-bestand met alle richtlijnen die we hebben gedefinieerd:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
<VirtualHost *:80> ServerName example.com ServerAlias www.example.com ServerAdmin webmaster@localhost.com DocumentRoot /var/www/html ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined <Directory /var/www/html> Options Indexes FollowSymLinks MultiViews Require all granted AllowOverride all </Directory> </VirtualHost> |
Redirect-, Alias- en ScriptAlias-richtlijnen
In sommige gevallen wilt u wellicht toegang tot websitebestanden of uitvoerbare bestanden die zich niet direct onder de DocumentRoot-map bevinden. Dit is waar deze drie richtlijnen van pas komen.
The Redirect richtlijn instrueert clients om een nieuwe aanvraag te doen met een andere URL. Meestal gebruikt u deze wanneer u uw websitebezoekers naar een andere domeinnaam of IP-adres wilt sturen. Let op dat Redirect eerst wordt uitgevoerd vóór Alias en ScriptAlias. De Alias richtlijn koppelt een URL aan een mappad. De ScriptAlias richtlijn koppelt een URL aan de mappen die uitvoerbare scripts bevatten. Om Alias en ScriptAlias te laten werken, moet u de maprechten instellen voor de www-data-gebruiker die het web gebruikt.
Sites en modules inschakelen in Apache
Virtual hosts en modules moeten worden ingeschakeld voordat ze actief en toegankelijk worden voor het Apache-proces. Bovendien worden virtual hosts gemaakt in de sites-available map zoals uitgelegd. Als u een virtual host-bestand hebt met de naam example.com.conf, kunt u dit inschakelen met de volgende opdracht:
|
1 |
sudo a2ensite example.com.conf |
De opdracht schakelt de virtual host in. Om de wijzigingen door te voeren, moet u Apache echter opdracht geven de configuratiebestanden opnieuw te laden door de volgende opdracht in te voeren:
|
1 |
sudo service apache2 reload |
U wilt wellicht een virtual host-bestand genaamd example.com.conf zodat Apache dit niet gebruikt om verzoeken te beantwoorden. Voer de volgende opdracht in om een bestand uit te schakelen:
|
1 |
sudo a2dissite example.com.conf |
Om de wijzigingen onmiddellijk van kracht te laten worden, moet u Apache opnieuw opdracht geven de configuratiebestanden opnieuw te laden door de volgende opdracht in te voeren:
|
1 |
sudo service apache2 reload |
Op dezelfde manier kunt u modules in- en uitschakelen met dezelfde syntaxis. De opdracht voor het inschakelen van een module is “a2enmod” en de opdracht voor het uitschakelen van een module is “a2dismod.” Er is bijvoorbeeld een Apache-module genaamd mod_rewrite die helpt bij het herschrijven van URL's afhankelijk van .htaccess-configuraties. U moet deze module inschakelen om het .htaccess-bestand te laten werken. U kunt dat doen door de volgende opdracht in te voeren:
|
1 |
sudo a2enmod rewrite |
Om deze wijziging van kracht te laten worden, moet u de Apache-configuraties opnieuw laden. U kunt de module ook uitschakelen door de volgende opdracht in te voeren:
|
1 |
sudo a2dismod rewrite |
Laad daarna de Apache2-configuraties opnieuw om de wijzigingen onmiddellijk van kracht te laten worden.
Tot slot zijn hier nog enkele bronnen die u helpen vertrouwd te raken met de Apache-webserver:
- Apache Server installeren op Ubuntu 18.04: Een handleiding
- Hoe installeer je de Linux, Apache, MySQL, PHP (LAMP) stack op CentOS 7
- Apache beveiligen met Let’s Encrypt op Ubuntu 18.04
- De wereld van webservers: Apache vs. Nginx
Conclusie
In deze handleiding hebben we de basisconfiguratiebestanden van Apache op Ubuntu- en Debian-systemen gedefinieerd. Zoals we hebben aangetoond, is Apache zeer modulair, wat betekent dat je veel modules kunt installeren om verschillende taken uit te voeren.
Je kunt deze modules eenvoudig in- en uitschakelen en andere configuraties wijzigen om verschillende resultaten te behalen. Je kunt nu lokale configuratiebestanden aanpassen die vervolgens in het hoofdconfiguratiebestand worden opgenomen. Hierdoor hoef je je geen zorgen te maken over het beschadigen van het globale configuratiebestand.
Veel computerplezier!
Reacties
Nog geen reacties. Wees de eerste.