Hoe de Apache-webserver te configureren op een Ubuntu- of Debian-VPS

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

  1. De Apache-bestandshiërarchie
  2. Verken het Apache2.conf-bestand
  3. Stel Apache Globale Configuraties In
  4. Opzetten van Apache Virtuele Hostbestand
  5. 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:

  1. ls -f /etc/apache2
Output
envars 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/ en sites-enabled/: De map sites-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 map sites-enabled, die geactiveerde configuratiebestanden voor virtuele hosts opslaat. Wanneer Apache start of herladen wordt, leest het de configuratiebestanden en links vanuit de map sites-enabled terwijl het een volledige configuratie compileert.
  • conf-available/ en conf-enabled/: In deze mappen bevinden zich configuratiefragmenten die niet zijn gekoppeld aan de configuratiebestanden voor virtuele hosts.
  • mods-enabled/ en mods-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:

  1. sudo nano /etc/apache2/apache2.conf

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/:

/etc/apache2/apache2.conf
…
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:

  1. apache2 -L
Output
Compiled 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:

  1. a2query -M
Output
event

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:

  1. sudo nano /etc/apache2/sites-available/000-default.conf
/etc/apache2/sites-available/000-default.conf
<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/:

  1. sudo nano /etc/apache2/conf-available/security.conf

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:

/etc/apache2/conf-available/security.conf
…
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:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

Voeg uw_domein toe aan de ServerName directive:

/etc/apache2/sites-available/your_domain.conf
…
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:

/etc/apache2/sites-available/your_domain.conf
…
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:

/etc/apache2/sites-available/your_domain.conf
…
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:

  1. sudo nano /etc/apache2/apache2.conf
/etc/apache2/apache2.conf
…
<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:

  1. sudo nano /etc/apache2/sites-available/your_domain.conf

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/:

/etc/apache2/sites-available/your_domain.conf
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:

/etc/apache2/sites-available/your_domain.conf
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:

  1. sudo a2ensite your_domain

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:

  1. sudo systemctl restart apache2

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:

  1. sudo a2dissite 000-default

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:

  1. sudo a2enmod info

Op dezelfde manier kunt u een module uitschakelen met behulp van het a2dismod commando:

  1. sudo a2dismod info

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.

Source:
https://www.digitalocean.com/community/tutorials/how-to-configure-the-apache-web-server-on-an-ubuntu-or-debian-vps