Lespakket 18 - Project Webserver


Toevoegen van php en een databank

🎯
  • De leerlingen kunnen PHP installeren en testen op een Apache-webserver
  • De leerlingen kunnen MariaDB beveiligd installeren en configureren
  • De leerlingen kunnen een database en databasegebruiker aanmaken met beperkte rechten
  • De leerlingen kunnen PHP verbinden met een MySQL/MariaDB-database
  • De leerlingen kunnen een volledige LAMP-stack opzetten en valideren
📖

In de vorige lessen heb je een webserver (Apache) geïnstalleerd en beveiligd. Maar een moderne website is meer dan alleen tekst en plaatjes; het heeft een "brein" nodig om logica uit te voeren en een "geheugen" om gegevens op te slaan.

In deze les voegen we PHP toe om scripts uit te voeren en MariaDB om een database te beheren.

LAMP-stack overzicht
LAMP-stack

1. PHP Installeren

PHP is de scripttaal die op de server wordt uitgevoerd voordat de pagina naar de bezoeker wordt gestuurd.

  1. Open je terminal en log in op je VPS.
  2. Installeer PHP en de module die zorgt dat PHP met de database kan praten: sudo apt install php libapache2-mod-php php-mysql -y
  3. Controleer of PHP werkt door de versie op te vragen: php -v

Test je PHP-configuratie

We maken een klein scriptje om te kijken of Apache de PHP-bestanden wel begrijpt.

  1. Ga naar je webmap: cd /var/www/html (of de map van je domein).
  2. Maak een testbestand: sudo nano info.php
  3. Typ de volgende code in het bestand:
PHP
<?php
phpinfo();
?>

  1. Sla op (CTRL+O, Enter) en sluit af (CTRL+X).
  2. Surf naar https://jouwsubdomein.rakithi.online/info.php. Zie je een paarse tabel met gegevens? Dan werkt PHP!
PHP info pagina
phpinfo

Beveiligingstip: Verwijder dit bestand (sudo rm info.php) zodra je klaar bent. Het geeft teveel informatie over je server aan hackers.


2. De Database (MariaDB) instellen

We gebruiken MariaDB, een populaire en opensource versie van MySQL.

  1. Installatie: sudo apt install mariadb-server -y
  2. Beveiliging: Voer het beveiligingsscript uit om onnodige toegangen te blokkeren: sudo mysql_secure_installation
    • Set root password? Y (Maak een sterk paswoord aan met je paswoordmanager, bewaar het en vul het hier in!)
    • Remove anonymous users? Y
    • Disallow root login remotely? Y
    • Remove test database? Y
    • Reload privilege tables? Y
Status van MariaDB opvragen
De status van MariaDB opvragen.

3. Een Database en Gebruiker aanmaken

Het is onveilig om je website direct met het 'root'-account van de database te verbinden. We maken een specifieke database en een gebruiker aan.

Maak een sterk paswoord aan met je paswoordmanager en bewaar het. Gebruik het hieronder bij het aanmaken van de gebruiker.

  1. Log in op de database-monitor: sudo mariadb -u root -p
  2. Voer de volgende commando's uit (vervang de tekst tussen haakjes):
SQL
CREATE DATABASE mijn_website;
CREATE USER 'web_user'@'localhost' IDENTIFIED BY 'Wachtwoord123!'; -- use your generated password
GRANT ALL PRIVILEGES ON mijn_website.* TO 'web_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;

4. PHP koppelen aan de Database

Nu gaan we testen of PHP gegevens uit de database kan halen.

  1. Maak een nieuw bestand aan: sudo nano db_test.php
  2. Gebruik de volgende PHP-code om een verbinding te maken:
PHP
<?php
$host = "localhost";
$user = "web_user";
$pass = "Wachtwoord123!"; // use same password as above
$db   = "mijn_website";

$conn = new mysqli($host, $user, $pass, $db);

if ($conn->connect_error) {
    die("Verbinding mislukt: " . $conn->connect_error);
}
echo "Verbonden met de database! De LAMP-stack is nu volledig operationeel.";
?>

  1. Surf naar https://jouwsubdomein.rakithi.online/db_test.php. Als je de succesmelding ziet, ben je officieel een full-stack server beheerder!

Samenvatting

Je hebt nu een volledige LAMP-stack (Linux, Apache, MariaDB, PHP) draaien op je eigen VPS. Je kunt nu je eigen webapplicaties installeren.

🧠
  • PHP installeren en testen op Apache
  • MariaDB beveiligd installeren en configureren
  • Een database en databasegebruiker met beperkte rechten aanmaken
  • PHP verbinden met een MySQL/MariaDB-database
  • Een volledige LAMP-stack opzetten en valideren