Ga naar inhoud
CursussenLinuxHoofdstuk 10

Hoofdstuk 10 van 12 · Serverbeheer

Een webserver bouwen

4 lesuren

Je maakt van de Ubuntu Server een complete LAMP-omgeving voor GreenLeaf: Linux, Apache, MariaDB en PHP. Daarna installeer je WordPress als praktijkproject.

Na dit hoofdstuk kun je

  • Apache installeren, testen en beheren.
  • MariaDB met een aparte databasegebruiker configureren.
  • PHP installeren en de webserver controleren.
  • WordPress in een geïsoleerde oefenomgeving installeren.

Wat doet een webserver?

Een browser verstuurt een HTTP(S)-verzoek naar een webserver. Apache verwerkt het verzoek en stuurt de juiste pagina terug. Bij een dynamische website kan PHP servercode uitvoeren en gegevens ophalen uit een database.

Een LAMP-omgeving bestaat uit Linux, Apache, MariaDB/MySQL en PHP. Het praktijkbedrijf GreenLeaf gebruikt deze onderdelen voor een eenvoudige website.

  • HTTP (80): onbeveiligd webverkeer.
  • HTTPS (443): webverkeer beschermd met TLS.
  • DocumentRoot: map met de websitebestanden.
  • Database: gestructureerde opslag van onder meer gebruikers en inhoud.

Apache installeren

Installeer Apache vanuit de Ubuntu-pakketbronnen. Standaard worden websitebestanden geplaatst onder /var/www/html. Na installatie krijg je de standaard Apache-pagina te zien als je het IP-adres van de server bezoekt.

Installeer Apache2
sudo apt update
sudo apt install apache2
Controleer de webserver
sudo systemctl enable --now apache2
sudo systemctl status apache2
Controleer de HTTP-respons lokaal
curl -I http://127.0.0.1
Bekijk de DocumentRoot
ls -la /var/www/html

Services en een eigen webpagina

Pas de standaardwebsite aan op je oefenserver en controleer de Apache-configuratie voordat je deze herlaadt.

Maak een reservekopie van de standaardpagina
sudo cp /var/www/html/index.html /var/www/html/index.html.bak
Open de testpagina
sudo nano /var/www/html/index.html
Voorbeeld HTML voor GreenLeaf
<!doctype html>
<html lang="nl">
<head><meta charset="utf-8"><title>GreenLeaf</title></head>
<body><h1>Welkom bij GreenLeaf</h1><p>Onze eerste Linux-webserver werkt.</p></body>
</html>
Controleer de configuratie en herlaad Apache
sudo apache2ctl configtest
sudo systemctl reload apache2

MariaDB als databaseserver

MariaDB slaat applicatiegegevens op. Een website hoort niet als root op de database in te loggen. Maak daarom een database en een eigen databasegebruiker met uitsluitend de noodzakelijke rechten.

Start met een beveiligingscontrole en laat root zoveel mogelijk via het lokale Unix-socket authenticeren. De vragen van mariadb-secure-installation kunnen per versie verschillen; lees de vragen in plaats van vaste antwoorden blind over te nemen.

Installeer en controleer MariaDB
sudo apt install mariadb-server
sudo systemctl enable --now mariadb
sudo systemctl status mariadb
Doorloop de beveiligingswizard
sudo mariadb-secure-installation
Open de MariaDB-console als systeembeheerder
sudo mariadb
Maak een database aan (in MariaDB)
CREATE DATABASE greenleaf_wp CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
CREATE USER 'greenleaf_user'@'localhost' IDENTIFIED BY 'VUL_HIER_EEN_UNIEK_STERK_WACHTWOORD_IN';
GRANT ALL PRIVILEGES ON greenleaf_wp.* TO 'greenleaf_user'@'localhost';
SHOW GRANTS FOR 'greenleaf_user'@'localhost';
EXIT;

PHP en de verbinding met Apache

PHP maakt dynamische pagina’s mogelijk. Apache kan PHP in dit lab verwerken via de pakketmodule; in grotere productieomgevingen wordt vaak PHP-FPM gebruikt.

Installeer de gebruikelijke modules voor WordPress en controleer de PHP-versie.

Installeer PHP voor Apache en MariaDB
sudo apt install php libapache2-mod-php php-mysql php-xml php-mbstring php-curl php-zip php-gd
Controleer de PHP-versie
php -v
Herstart Apache na installatie
sudo systemctl restart apache2

WordPress op de labserver installeren

Maak voor de labsite een Apache VirtualHost die naar /var/www/greenleaf wijst. Je kunt dit met nano aanmaken en via a2ensite inschakelen.

Open een VirtualHost-bestand
sudo nano /etc/apache2/sites-available/greenleaf.conf
Voorbeeld VirtualHost voor het lab
<VirtualHost *:80>
    ServerName greenleaf.local
    DocumentRoot /var/www/greenleaf
    <Directory /var/www/greenleaf>
        AllowOverride All
        Require all granted
    </Directory>
    ErrorLog ${APACHE_LOG_DIR}/greenleaf-error.log
    CustomLog ${APACHE_LOG_DIR}/greenleaf-access.log combined
</VirtualHost>
Activeer configuratie en herschrijfregels
sudo a2enmod rewrite
sudo a2ensite greenleaf.conf
sudo apache2ctl configtest
sudo systemctl reload apache2

WordPress via de browser afronden

  1. Open de testsite via de juiste hostname of het server-IP met Host-header.
  2. Selecteer Nederlands en geef database greenleaf_wp, gebruiker greenleaf_user en je eigen wachtwoord op. Databasehost is meestal localhost.
  3. Maak een nieuw WordPress-beheerdersaccount met een andere naam dan admin en een sterk uniek wachtwoord.
  4. Controleer of je een pagina kunt aanmaken en bekijken.
  5. Maak een snapshot na de werkende installatie en noteer de gebruikte softwareversies.

Praktijkopdracht

Publiceer de GreenLeaf-labwebsite

Maak een lokale LAMP-server waarop WordPress draait.

  1. Installeer Apache en test met curl -I.
  2. Installeer MariaDB en maak een aparte database en gebruiker.
  3. Installeer PHP en controleer de versie.
  4. Plaats WordPress in een eigen webmap met bijpassende VirtualHost.
  5. Rond de WordPress-installatie in de browser af en maak een testpagina.
  6. Maak een snapshot en controleer Apache- en MariaDB-services.

Bewijs voor je logboek: Screenshots van de werkende WordPress-site, actieve diensten en documentatie van je labopstelling zonder wachtwoorden.

Controleer je kennis

  1. Welke vier onderdelen vormen LAMP?
  2. Waarom hoort WordPress geen MariaDB-rootaccount te gebruiken?
  3. Wat is de DocumentRoot?
  4. Welke beveiligingsmaatregelen ontbreken vaak in een eerste labinstallatie?

Begrippen

Apache2
Webserver voor HTTP(S)-verzoeken.
DocumentRoot
Map met de websitebestanden.
MariaDB
Relationele databaseserver.
PHP
Programmeertaal voor dynamische webpagina’s.
VirtualHost
Apache-configuratie voor één website.
WordPress
CMS dat PHP en een database gebruikt.

Hoofdstuk afgerond?

Voer eerst de praktijkopdracht uit en sla je bewijs op in je eigen logboek.