Inleiding
Apache is een van de meest populaire webservers op het internet. Het wordt gebruikt om meer dan de helft van alle actieve websites te bedienen. Hoewel er veel bruikbare webservers zijn die uw inhoud kunnen serveren, is het handig om te begrijpen hoe Apache werkt vanwege zijn alomtegenwoordigheid.
In dit artikel zullen we enkele algemene configuratiebestanden bekijken en de opties die daarin kunnen worden gecontroleerd. Dit artikel volgt de lay-out van Apache-bestanden voor Ubuntu/Debian, die verschilt van hoe andere distributies de configuratiehiërarchie opbouwen.
Vereisten
Als u Ubuntu-versie 16.04 of lager gebruikt, raden we u aan te upgraden naar een nieuwere versie, aangezien Ubuntu geen ondersteuning meer biedt voor deze versies. Deze verzameling handleidingen zal u helpen bij het upgraden van uw Ubuntu-versie.
-
Een server die Ubuntu draait, samen met een niet-rootgebruiker met
sudo
-rechten en een actieve firewall. Voor begeleiding bij het instellen hiervan, kiest u alstublieft uw distributie uit deze lijst en volgt u onze Handleiding voor de initiële serverconfiguratie. -
Voordat u uw Apache-configuraties gaat verkennen, moet u Apache geïnstalleerd hebben op uw server. U kunt leren hoe dit te doen door onze tutorial “Hoe de Apache-webserver te installeren op Ubuntu” 22.04 / 20.04 / 18.04 te volgen of de tutorial Hoe de Apache-webserver te installeren op Debian 10.
5 Stappen om Apache Webserver te configureren op Ubuntu
- De Apache-bestandshiërarchie
- Verken het Apache2.conf-bestand
- Stel Apache Globale Configuraties In
- Opzetten van Apache Virtuele Hostbestand
- Activeer Sites en Modules
Stap 1: De Apache-bestandshiërarchie
Apache bewaart zijn hoofdconfiguratiebestanden binnen de map /etc/apache2
. Het uitvoeren van het volgende commando zal alle bestanden binnen deze map weergeven:
Outputenvars sites-available . apache2.conf .. sites-enabled mods-available ports.conf magic mods-enabled conf-enabled conf-available
Er zijn een aantal tekstbestanden en enkele submappen binnen deze directory. Hier zijn enkele handige locaties om bekend mee te zijn:
apache2.conf
: Dit is het hoofdconfiguratiebestand voor de server. Bijna alle configuratie kan worden gedaan vanuit dit bestand, hoewel het wordt aanbevolen om aparte, aangewezen bestanden te gebruiken voor eenvoud. Dit bestand zal standaardinstellingen configureren en het centrale toegangspunt zijn voor de server om configuratiedetails te lezen.ports.conf
: Dit bestand wordt gebruikt om de poorten te specificeren waarop virtuele hosts moeten luisteren. Zorg ervoor dat dit bestand correct is geconfigureerd als u SSL configureert.sites-available/
ensites-enabled/
: De mapsites-available
bevat configuratiebestanden voor virtuele hosts. Configuraties binnen deze map zullen bepalen welke inhoud wordt geserveerd voor welke verzoeken. Dit wordt mogelijk gemaakt door te linken naar de mapsites-enabled
, die geactiveerde configuratiebestanden voor virtuele hosts opslaat. Wanneer Apache start of herladen wordt, leest het de configuratiebestanden en links vanuit de mapsites-enabled
terwijl het een volledige configuratie compileert.conf-available/
enconf-enabled/
: In deze mappen bevinden zich configuratiefragmenten die niet zijn gekoppeld aan de configuratiebestanden voor virtuele hosts.mods-enabled/
enmods-available/
: Deze mappen definiëren modules die optioneel geladen kunnen worden. De mappen bevatten twee onderdelen: bestanden eindigend op.load
, die fragmenten bevatten die bepaalde modules laden, en bestanden eindigend op.conf
, die de configuraties van deze modules opslaan.
De Apache-configuratie vindt niet plaats in één monolithisch bestand, maar gebeurt in plaats daarvan via een modulair ontwerp waar nieuwe bestanden kunnen worden toegevoegd en aangepast indien nodig.
Stap 2: Verkenning van het Apache2.conf Bestand
De belangrijkste configuratiedetails voor uw Apache-server worden bewaard in het bestand /etc/apache2/apache2.conf
.
Dit bestand is verdeeld in drie hoofdsecties:
- Configuratie voor het globale Apache-serverproces
- Configuratie voor de standaardserver
- Configuratie van virtuele hosts.
Open dit bestand met uw voorkeursteksteditor. Het volgende voorbeeld gebruikt nano
:
In Ubuntu en Debian wordt dit bestand gebruikt om globale definities te configureren. De configuratie van de standaardserver en virtuele hosts wordt afgehandeld door gebruik te maken van de Include
-richtlijn.
De Include
-richtlijn stelt Apache in staat om andere configuratiebestanden in het huidige bestand te lezen op de locatie waar de verklaring verschijnt. Het resultaat is dat Apache dynamisch een overkoepelend configuratiebestand genereert bij het opstarten.
Binnen dit bestand bevinden zich verschillende Include
– en IncludeOptional
-verklaringen. Deze richtlijnen laden moduledefinities, het document ports.conf
, de specifieke configuratiebestanden in de map conf-enabled/
, en de virtuele hostdefinities in de map sites-enabled/
:
…
IncludeOptional mods-enabled/*.load
IncludeOptional mods-enabled/*.conf
…
Include ports.conf
…
IncludeOptional conf-enabled/*.conf
…
IncludeOptional sites-enabled/*.conf
Stap 3: Apache Globale Configuraties Instellen
Er zijn enkele opties die u mogelijk wilt aanpassen in de Globale Configuratie:
Timeout
Standaard is deze parameter ingesteld op 300
. Dit betekent dat de server maximaal 300 seconden heeft om elk verzoek te verwerken. Deze parameter kan veilig worden verlaagd naar iets tussen 30
en 60
seconden.
KeepAlive
Deze optie, indien ingesteld op Aan
, staat elke verbinding toe om open te blijven om meerdere verzoeken van dezelfde client af te handelen.
Indien dit ingesteld is op Uit
, zal elk verzoek een nieuwe verbinding moeten opzetten, wat kan leiden tot aanzienlijke overhead afhankelijk van je opstelling en verkeerssituatie.
MaxKeepAliveRequests
Dit regelt hoeveel afzonderlijke verzoeken elke verbinding zal afhandelen voordat deze wordt beëindigd. Een hoog aantal houden zal Apache in staat stellen om inhoud effectiever aan elke client te serveren.
De standaardinstelling is ingesteld op 100
. Het instellen van deze waarde op 0
zal Apache in staat stellen om een onbeperkt aantal verzoeken voor elke verbinding af te handelen.
KeepAliveTimeout
Deze instelling geeft aan hoelang gewacht moet worden op het volgende verzoek nadat het laatste is voltooid. Als de time-outdrempel is bereikt, zal de verbinding worden verbroken.
Dit betekent dat de volgende keer dat inhoud wordt opgevraagd, de server een nieuwe verbinding zal opzetten om het verzoek voor de inhoud die de pagina van de client vormt, af te handelen. De standaardinstelling is ingesteld op 5
.
Na het bekijken van de inhoud van dit configuratiebestand, kun je het afsluiten door CTRL+X
in te drukken.
Multi-Processing Modules
A Multi-Processing Module (MPM) extends Apache’s modular design. MPMs are responsible for listening, directing, and handling different network requests. You can cross-reference which section your Apache installation was compiled in with using the following command:
OutputCompiled in modules:
core.c
mod_so.c
mod_watchdog.c
http_core.c
mod_log_config.c
mod_logio.c
mod_version.c
mod_unixd.c
U kunt het MPM-type op uw server controleren met het a2query -M
-commando:
Outputevent
De uitvoer onthult dat het event
MPM wordt gebruikt op deze server. Uw installatie kan er meerdere hebben om uit te kiezen, maar er kan er slechts één worden geselecteerd.
Stap 4: Update Apache Virtual Host-bestand
De standaard virtuele host-verklaring is te vinden in een bestand genaamd 000-default.conf
binnen de sites-available/
map. U kunt meer te weten komen over het algemene formaat van een virtueel host-bestand door dit bestand te onderzoeken.
Open het bestand met het volgende commando:
<VirtualHost *:80>
…
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
…
ErrorLog ${APACHE LOG DIR}/error.log
CustomLog ${APACHE LOG DIR}/access.log combined
…
De standaard virtuele host is geconfigureerd om elk verzoek op poort 80
af te handelen, de standaard HTTP-poort. Dit is gedefinieerd in de declaratiekop waar staat *:80
, wat betekent poort 80
op elk interface.
Dit betekent echter niet dat het noodzakelijkerwijs elk verzoek naar de server op deze poort zal afhandelen. Apache gebruikt de meest specifieke virtuele hostdefinitie die overeenkomt met het verzoek. Als er een meer specifieke definitie was, zou deze deze definitie kunnen overschrijven. Nadat u het bestand hebt onderzocht, kunt u het sluiten door op CTRL+X
te drukken.
Apache Virtuele Hostconfiguratie
De volgende opties worden ingesteld binnen de definitie van de virtuele host buiten alle andere lagere subdeclaratie. Ze zijn van toepassing op de hele virtuele host.
Om te beginnen, open het bestand security.conf
binnen de map conf-available/
:
Dit bestand bevat de Server Handtekening
richtlijn, waarmee u een contact-e-mailadres kunt specificeren dat moet worden gebruikt wanneer er serverproblemen zijn. U kunt de standaardoptie wijzigen van Aan
naar E-mail
om het e-mailadres van de serverbeheerder te onthullen. Zorg ervoor dat u de mail wilt ontvangen als u deze instelling aanpast:
…
ServerSignature EMail
…
Verlaat het bestand door op CTRL+X
te drukken. Na het bewerken van een configuratiebestand wordt u gevraagd uw wijzigingen te bevestigen. Druk op Y
om de wijzigingen op te slaan in uw bestand of druk op N
om ze te negeren.
Binnen uw virtuele hostbestand kunt u een ServerNaam
richtlijn toevoegen die de domeinnaam of het IP-adres specificeert dat deze aanvraag moet verwerken. Dit is de optie die specificiteit zou toevoegen aan de virtuele host, waardoor deze de standaarddefinitie kan overschrijven als deze overeenkomt met de waarde van ServerNaam
.
Voer de volgende opdracht uit om uw virtuele hostbestand te openen, waarbij u de variabele uw_domein
vervangt door uw daadwerkelijke domeinnaam:
Voeg uw_domein
toe aan de ServerName
directive:
…
ServerName your_domain
…
Evenzo kunt u de virtuele host ook laten gelden voor meer dan één naam door gebruik te maken van de ServerAlias
directive. Dit biedt alternatieve paden om toegang te krijgen tot dezelfde inhoud. Een goed gebruik hiervoor is het toevoegen van hetzelfde domein, voorafgegaan door www
:
…
ServerAlias www.your_domain.com
…
De DocumentRoot
directive geeft aan waar de inhoud die wordt aangevraagd voor deze virtuele host zich bevindt. Op Ubuntu is de standaard virtuele host ingesteld om inhoud te serveren vanuit de /var/www/
directory:
…
DocumentRoot /var/www/your_domain/public_html
…
Mapdefinities
Binnen de definitie van de virtuele host zijn er definities voor hoe de server verschillende mappen binnen het bestandssysteem behandelt. Apache past al deze richtlijnen toe in volgorde van kortste naar langste, dus er is opnieuw een kans om eerdere opties te overschrijven.
Open het apache2.conf
bestand met deze opdracht:
…
<Directory />
Options FollowSymLinks
AllowOverride None
Require all denied
</Directory>
<Directory /usr/share>
AllowOverride None
Require all granted
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
…
De eerste mapdefinitie geldt voor de /
, of root, directory. Dit zal de basisconfiguratie bieden voor uw virtuele host, aangezien het van toepassing is op alle bestanden die worden bediend op het bestandssysteem. Let op de mapconfiguratieopties, samen met enkele nuttige opmerkingen, die in dit bestand zijn opgenomen. Deze standaardconfiguratie verhindert de toegang tot alle inhoud tenzij anders is aangegeven in latere mapdefinities.
De Require
richtlijn kan de toegang tot verschillende bronnen binnen uw server beperken of openen.
De AllowOverride
richtlijn wordt gebruikt om te beslissen of een .htaccess
-bestand instellingen kan overschrijven als het in de inhoudsmap wordt geplaatst. Dit is standaard niet toegestaan, maar kan nuttig zijn om in verschillende omstandigheden in te schakelen.
Na het bekijken van de inhoud van dit bestand, kunt u het afsluiten door op CTRL+X
te drukken.
Alias en ScriptAlias Verklaringen
Mapdefinities worden soms voorafgegaan door Alias
of ScriptAlias
richtlijnen.
Open uw virtueel host configuratiebestand met deze opdracht en vervang de your_domain
variabele door uw domeinnaam:
De Alias
richtlijn koppelt een URL-pad aan een directory-pad. Bijvoorbeeld, in een virtuele host die verzoeken naar your_domain
afhandelt, zou het volgende toegang mogelijk maken tot de inhoud binnen /usr/local/apache/content/
bij het navigeren naar your_domain.com/content/
:
Alias “/content/” “/usr/local/apache/content/”
De ScriptAlias
richtlijn werkt op dezelfde manier, maar wordt gebruikt om directories te definiëren die uitvoerbare componenten bevatten:
ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"
Vergeet niet om de map met toegangsrechten te definiëren zoals besproken in de vorige sectie. Nadat u uw bewerkingen op het bestand hebt voltooid, verlaat u het bestand door op CTRL+X
te drukken. Als u wijzigingen hebt aangebracht in dit bestand, drukt u op Y
om de wijzigingen op te slaan in uw bestand of drukt u op N
om het bestand achter te laten zoals het was voor eventuele wijzigingen aan de configuratie.
Stap 5: Sites en modules inschakelen
Zodra u een virtueel hostbestand heeft dat aan uw eisen voldoet, kunt u de tools die bij Apache zijn inbegrepen gebruiken om deze om te zetten naar live websites.
Om een symbolische koppeling te maken in de sites-enabled
map naar een bestaand bestand in de sites-available
map, gebruikt u het volgende commando. Zorg ervoor dat u uw_domein
vervangt door de naam van uw eigen configuratiebestand voor virtuele hosts:
Nadat u een site heeft ingeschakeld, gebruikt u het volgende commando om Apache te vertellen zijn configuratiebestanden opnieuw te laden, waardoor de wijziging wordt doorgevoerd:
Er is ook een bijbehorend commando om een virtuele host uit te schakelen. Dit werkt door de symbolische koppeling uit de sites-enabled
map te verwijderen. Bijvoorbeeld, met uw virtuele hostsite ingeschakeld, kunt u de standaard 000-default
site uitschakelen:
Modules kunnen worden ingeschakeld of uitgeschakeld door gebruik te maken van de a2enmod
en a2dismod
commando’s respectievelijk. Ze werken op dezelfde manier als de a2ensite
en a2dissite
versies van deze commando’s. Bijvoorbeeld, om de info
module in te schakelen, kunt u het volgende commando gebruiken:
Op dezelfde manier kunt u een module uitschakelen met behulp van het a2dismod
commando:
Vergeet niet om Apache te herstarten na het aanpassen van de configuratiebestanden en het inschakelen of uitschakelen van modules.
Conclusie
Apache is veelzijdig en zeer modulair, dus de configuratiebehoeften zullen verschillen afhankelijk van uw opstelling. Na het bekijken van enkele algemene gebruiksscenario’s hierboven, zou u een goed begrip moeten hebben van waar de belangrijkste configuratiebestanden voor worden gebruikt en hoe ze met elkaar interageren. Als u meer wilt weten over specifieke configuratieopties, zijn de meegeleverde bestanden goed van commentaar voorzien en levert Apache uitstekende documentatie. Hopelijk zullen de configuratiebestanden nu niet meer zo intimiderend zijn en zult u zich comfortabeler voelen om te experimenteren en aanpassingen te maken naar uw behoeften.