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.
sudo apt update
sudo apt install apache2
sudo systemctl enable --now apache2
sudo systemctl status apache2
curl -I http://127.0.0.1
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.
sudo cp /var/www/html/index.html /var/www/html/index.html.bak
sudo nano /var/www/html/index.html
<!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>
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.
sudo apt install mariadb-server
sudo systemctl enable --now mariadb
sudo systemctl status mariadb
sudo mariadb-secure-installation
sudo 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.
sudo apt install php libapache2-mod-php php-mysql php-xml php-mbstring php-curl php-zip php-gd
php -v
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.
sudo nano /etc/apache2/sites-available/greenleaf.conf
<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>
sudo a2enmod rewrite
sudo a2ensite greenleaf.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
WordPress via de browser afronden
- Open de testsite via de juiste hostname of het server-IP met Host-header.
- Selecteer Nederlands en geef database
greenleaf_wp, gebruikergreenleaf_useren je eigen wachtwoord op. Databasehost is meestallocalhost. - Maak een nieuw WordPress-beheerdersaccount met een andere naam dan
adminen een sterk uniek wachtwoord. - Controleer of je een pagina kunt aanmaken en bekijken.
- 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.
- Installeer Apache en test met
curl -I. - Installeer MariaDB en maak een aparte database en gebruiker.
- Installeer PHP en controleer de versie.
- Plaats WordPress in een eigen webmap met bijpassende VirtualHost.
- Rond de WordPress-installatie in de browser af en maak een testpagina.
- 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
- Welke vier onderdelen vormen LAMP?
- Waarom hoort WordPress geen MariaDB-rootaccount te gebruiken?
- Wat is de DocumentRoot?
- 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.
