Hulpartikel overzicht

Hulpartikel

Een apache webserver installeren in Ubuntu 16.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 16.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 16.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!

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

Apache-poorten openen in je firewall

 

Debian 9 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 7.3 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.


 

Stap 2

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

apt -y update
apt -y install php7.3 php7.3-cli php7.3-common php7.3-curl php7.3-mbstring php7.3-mysql php7.3-xml php7.3-fpm

Je PHP-versie is nu geüpgraded naar 7.3.5 (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 7.4, 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/7.3/fpm/php.ini

 

Stap 4

Schakel tot slot de php modules in en herstart Apache:

a2enmod actions fastcgi alias proxy_fcgi
a2enconf php7.3-fpm
systemctl restart apache2

Je Apache-server is nu helemaal klaar voor PHP. Vergeet niet MariaDB te installeren als er ook een database aan je website gekoppeld is en je VHost te configureren als je meerdere sites host.


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/php7.3-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 hier 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:

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.

Wil je dit artikel met andere gebruikers bespreken, laat dan vooral een bericht achter onder 'Reacties'.

Heb je ook een goed idee?

Stuur jouw idee in! Met genoeg stemmen komt jouw idee op onze wishlist!

Heeft dit artikel je geholpen?

Maak een account aan of log in om een beoordeling achter te laten.

Reacties

Maak een account aan of log in om een reactie te plaatsen.

Kom je er niet uit?

Ontvang persoonlijke hulp van onze supporters

Neem contact op