Winkelwagen

    Sorry, we konden geen resultaten vinden voor jouw zoekopdracht.

    Een apache webserver installeren in Ubuntu 18.04 of 20.04

    In dit artikel leggen wij de installatie en initiële configuratie van een Apache web server (met httpd-tools, mod_ssl en PHP-FPM) in Ubuntu 18.04 en 20.04 uit. 

    Apache vormt samen met MariaDB en PHP de zogeheten LAMP-Stack (Linux Apache MySQL PHP) en wordt gebruikt voor het hosten van websites. Host je een dynamische website op je VPS (e.g. WordPress), dan heb je ook MariaDB (nodig (of een vergelijkbaar alternatief zoals MySQL).

    In dit artikel behandelen wij de volgende onderdelen:

    • Apache installeren
    • Apache-poorten openen in je firewall
    • PHP installeren
    • Vhosts gebruiken

    Daarnaast raden wij ook aan om een SFTP-server op te zetten, en de websites die je host te beveiligen met SSL.

    • Voer de stappen in dit artikel uit als root user, of gebruik sudo
    • Wil je je Apache server meteen kunnen testen? Wijs dan voor je begint de DNS van een domein naar je VPS (i.e. via het root A- en AAAA-record).

    Apache installeren

    Stap 1

    Verbind met je VPS via SSH of gebruik de VPS-console en update eerst je server:

    apt -y update
    apt -y upgrade

    Herstart nu eerst je VPS en herhaal na de herstart bovenstaande commando's (tenzij je VPS al up-to-date was). Sommige package updates zijn pas beschikbaar na het updaten en herstarten van je VPS.


    Stap 2

    Installeer Apache (en de benodigde extra packages) met het commando:

    apt -y install apache2

    Apache start automatisch na de installatie en na een herstart van je server. Je hoeft de service dus niet te enablen en starten.

    Na het updaten van Ubuntu 18.04, kan het zijn dat je onderstaande melding te zien krijgt. Voer in dat geval het onderste commando uit (de 1e maakt geen verschil), anders werkt Apache niet na een reboot van je VPS! Pas de versie uit dit voorbeeld aan naar degene die je op je VPS terugziet.

    NOTICE: Not enabling PHP 7.4 FPM by default
    NOTICE: To enable PHP 7.4 FPM in Apache2 do:
    NOTICE: a2enmod proxy_fcgi setenvif
    NOTICE: a2enconf php7.4-fpm

    Apache-poorten openen in je firewall

    Ubuntu 18.04 komt standaard met UFW als firewall en out-of-the-box staan alle poorten daarin dicht. Je zet de http-(80) en https-(443) poorten open met de commando's:

    ufw allow 80/tcp
    ufw allow 443/tcp

    Gebruik je de VPS-firewall? Open dan (ook) de HTTP- en HTTPS-poorten in je controlepaneel.

    cp vps firewall http


    Apache testen

    Je kunt nu direct de werking van je web server testen door in een browser naar http://voorbeeld.nl te gaan, waarbij je voorbeeld.nl vervangt door je hostname (te controleren met het commando 'hostname'), of het IP-adres van je VPS. Je ziet dan de standaard test-pagina: 


    PHP installeren

    Stap 1

    Apache komt na de installatie niet met een recente PHP-versie. Wil je een dynamische PHP-website hosten (e.g. WordPress), dan raden wij om veiligheidsredenen aan de meest recente versie van PHP te installeren. Voeg hiervoor eerst de PHP 8.1 PPA repository toe met:

    add-apt-repository ppa:ondrej/php

    Er zal om bevestiging gevraagd worden tijdens het toevoegen. Druk op 'Enter' om toestemming te geven.

    Krijg je de melding 'Command 'add-apt-repository' not found' te zien? Installeer dan eerst de add-apt-repository met:

    apt install software-properties-common

    Stap 2

    Update je VPS nogmaals zodat de nieuwe repository daadwerkelijk gebruikt kan worden en installeer vervolgens PHP8.1 met de meest relevante modules :

    apt -y update
    apt -y install php8.1 php8.1-cli php8.1-common php8.1-curl php8.1-mbstring php8.1-mysql php8.1-xml php8.1-fpm

    Je PHP-versie is nu geüpgraded naar 8.1.3 (of nieuwer). Je controleert de preciese versie met:

    php -v

    Wij streven ernaar onze documentatie up-to-date te houden, maar als er wanneer je dit leest een nieuwere versie is, zoals 8.2, pas dan in de commando's in stap 1 en 2 het versienummer aan naar de meest actuele.


    Stap 3

    Dit is een goed moment om eventueel aanpassingen te maken in de instellingen van php.ini als je wilt, zoals de memory_limit. De php.ini configuratie vind je in:

    nano /etc/php/8.1/fpm/php.ini

    Stap 4

    Schakel tot slot de php modules in en herstart Apache:

    a2enmod actions fastcgi alias proxy_fcgi 
    a2enconf php8.1-fpm
    systemctl restart apache2

    Je kunt nu PHP gebruiken op je Apache-server. Vergeet niet MariaDB te installeren als er ook een database aan je website gekoppeld moet worden (in het geval van dynamische websites zoals een WordPress-website) en je VHost te configureren als je meerdere sites host.

    Host je één website op je server? Dan kun je die nu uploaden (bijvoorbeeld via FTP) in de map /var/www/html (er staat daar al een voorbeeld bestand genaamd index.html).


    DNS

    Om een website te hosten is het niet alleen belangrijk dat de bestanden van je website op een server staan. Deze moet uiteraard ook vindbaar zijn via het internet. Hiervoor wordt wereldwijd gebruik gemaakt van DNS-records; DNS-records geven aan op welke servers diensten zoals webhosting of e-mail voor een domein te vinden zijn.

    Hieronder zie je een voorbeeld van hoe je DNS-records kunt instellen voor een domein dat bij TransIP geregistreerd staat en gehost wordt op een VPS. Een uitgebreidere uitleg over het instellen van DNS-records vind je in deze handleiding.

    cp domein geavanceerd domeinbeheer

    Gebruik je een SandboxVPS? Dan stel je enkel IPv6-records in.


    Een VHost gebruiken

    Wil je meer dan één domein hosten? Dan gebruik je een VHost-systeem (ook bekend als VirtualHost). Een VHost-file bevat o.a. de gegevens waar op je VPS specifieke domeinen gehost worden. Hierdoor worden bezoekers van domeinen die je op je VPS host automatisch naar de juiste mappen op je VPS gestuurd waar de websites zich bevinden (zonder dat die bezoekers daar iets van merken).

    Stap 1

    Maak de vhost file aan met het commando (vervang example.com door je domeinnaam):

    nano /etc/apache2/sites-available/example.com.conf

    Stap 2

    Neem de inhoud hieronder over, waarbij je example.com vervangt door de naam van het domein dat je wil hosten op je VPS.

    <VirtualHost *:80>
        ServerAdmin admin@example.com
        ServerName example.com
        ServerAlias www.example.com
        DocumentRoot /var/www/example.com/public_html
    
        <FilesMatch \.php$>
           SetHandler "proxy:unix:/var/run/php/php8.1-fpm.sock|fcgi://localhost/"
        </FilesMatch>
        ErrorLog /var/log/apache2/example.com/error.log
        CustomLog /var/log/apache2/example.com/access.log combined
    </VirtualHost>
    Toelichting
    • <VirtualHost *:80> </VirtualHost>: Opent en sluit een lijst aan richtlijnen voor een specifieke virtualhost. Iedere optie (e.g. ServerAdmin) is een richtlijn / directive voor de virtual host.
    • ServerAdmin: Stelt het contactadres in die de server gebruikt als het errormeldingen terugkoppelt.
    • ServerName: Eigenlijk is dit systeem bedoelt om de hostname van de server op te geven. Binnen een serveromgeving met Vhosts waar je meerdere domeinen host, wordt het gebruikt om specifieke domeinen op te nemen en te zorgen dat je server zich als die domeinen kan identificeren.
    • ServerAlias: Alternatieve namen voor de host die is ingesteld onder 'ServerName'. Je kunt hier ook een wildcard instellen door de syntax *.example.com te gebruiken.
    • DocumentRoot: De locatie op je VPS waar je website (de bijbehorende bestanden) zich bevinden.
    • <FilesMatch \.php$> </FilesMatch>: De SetHandler die hier gedefinieerd is, schakelt PHP-FPM in. PHP-FPM geeft vooral bij grotere websites een betere performance dan bijvoorbeeld FastCGI.
    • ErrorLog: Het bestand waar foutmeldingen naar worden weggeschreven.
    • CustomLog: Het bestand dat gebruikt wordt om requests naar de server te loggen. De optie combined voegt enkele extra headers toe in de logmeldingen wanneer een request wordt vastgelegd. Hiermee krijg je iets gedetailleerdere logbestanden.

    Stap 3

    De directories die in de vorige stap staan bestaan nog niet en maak je samen met de log files eerst aan. Vervang  example.com door de naam van het domein dat je toevoegt:

    mkdir -p /var/www/example.com/public_html
    mkdir -p /var/log/apache2/example.com
    touch /var/log/apache2/example.com/error.log
    touch /var/log/apache2/example.com/access.log

    De toevoeging -p (-parent) maakt indien nodig alle mapstructuren aan die voor /example.com staan. In principe zouden deze allemaal al moeten bestaan.


    Stap 4

    Schakel de virtual host in met de commando's (vervang opnieuw example.com door je domeinnaam):

    a2ensite example.com.conf
    systemctl reload apache2

    Extra domeinen

    Herhaal stap 1 t/m 4 voor ieder extra domein dat je wil toevoegen (ongeacht het aantal).


    Stap 5

    Je kunt nu direct aan de slag met je website, door deze via SFTP of FTPS te uploaden, of door met een teksteditor vanuit command-line een html-website te maken (voor PHP, zie PHP installeren). Je kunt bijvoorbeeld als volgt een info.php pagina maken:

    • Open php.info:
      nano /var/www/example.com/public_html/info.php
    • Voeg de volgende inhoud toe:
      <?php
      phpinfo();
      ?>

    Je kunt nu direct naar de pagina example.com/info.php navigeren in je browser om de output te testen.


    Je Apache-server is nu klaar! Gebruikt je website een database? Neem dan ook een kijkje in onze MariaDB-handleiding. Voor het beveiligen van je website kun je onze Apache SSL-handleiding gebruiken.

    Mocht je aan de hand van dit artikel nog vragen hebben, aarzel dan niet om onze supportafdeling te benaderen. Je kunt hen bereiken via de knop 'Neem contact op' onderaan deze pagina.

    Kom je er niet uit?

    Ontvang persoonlijke hulp van onze supporters

    Neem contact op