Lespakket 15 - Project Webserver


Hosten van een website zonder domein (2)

🎯
  • De leerlingen kunnen verbinding maken met een VPS via SSH en een webserver opzetten
  • De leerlingen kunnen bestanden overzetten naar een server via SFTP
  • De leerlingen kunnen een website hosten en testen via HTTP en IP-adres
📖
  • Dit lespakket maakt gebruik van de leerstof die jullie gezien hebben in het sleutelboek Computernetwerken 3.0 en de cursus Linux (Yves Van Hal).

Cheat sheets kan je terugvinden op de pagina Cheat sheets

Overzicht: stappenplan voor het hosten van een website zonder domein en zonder certificaat

Je vindt hieronder een overzicht van de te volgen stappen voor het hosten van een website zonder domein en zonder certificaat. In de beschrijving van de meeste stappen herken je begrippen die we de voorbije maanden geleerd hebben.

Stap Beschrijving
1 Een paswoord manager installeren
2 SSH-client op onze eigen laptop installeren en configureren
3 Een SSH key registreren
4 Een account aanmaken bij een cloud-provider
5 Een firewall configureren
6 Een VPS (virtual private server) huren
7 Verbinden met de server via SSH en de server configureren als webserver
8 De firewall configuratie aanpassen voor http
9 SFTP client op onze eigen laptop installeren en configureren
10 HTML-bestanden overzetten naar de webserver
11 De website testen via http en het ip-adres
Van code naar cloud: je website hosten in 11 stappen
Van code naar cloud: je website hosten in 11 stappen

Stap 7 & 8: Verbinden met de server via SSH en de server configureren als webserver

1: IP-adres van je server opzoeken

  1. Ga naar het Hetzner dashboard
  2. Klik op Servers in het linker menu
  3. Klik op je server (bijv. ldr-webserver-1)
  4. Noteer het publieke IP-adres dat wordt weergegeven

2: Verbinding maken via SSH

  1. Open Terminal op je laptop
  2. Typ: ssh root@<IP-adres> (vervang <IP-adres> met het IP-adres van je server)
  3. Druk op Enter
  4. Bij de eerste verbinding wordt je gevraagd of je de sleutel wilt toevoegen. Typ yes en druk op Enter
  5. Je bent nu verbonden met je server

Wat is een package manager?

Een package manager is een hulpprogramma dat softwarepakketten voor je beheert. Het maakt installatie, update en verwijdering van software eenvoudig. In plaats van handmatig bestanden te zoeken en installeren, typ je eenvoudig één commando.

Package managers in Linux:

  • apt (Ubuntu, Debian)
  • yum (RedHat, CentOS)

Waarom updates uitvoeren?

  1. Veiligheidsupdates: Beveiligingsgaten worden regelmatig ontdekt en gefixt. Updates sluiten deze gaten.
  2. Stabiliteit: Bugfixes verbeteren stabiliteit en betrouwbaarheid van software.
  3. Nieuwe functies: Updates brengen soms verbeteringen en optimalisaties.

Hoe werkt apt?

apt = Advanced Package Tool

Aan de server zijn repositories gekoppeld (online catalogi met software). apt update haalt de nieuwste cataloguslijsten op en bekijkt welke versies beschikbaar zijn.

Stappen:

  1. Catalogus vernieuwen: apt update

    • Haalt de lijst van beschikbare pakketten en versies op van de repositories
    • Noodzakelijk voordat je upgrades of installaties uitvoert
  2. Upgradeable pakketten zien: apt list --upgradable

    • Toont alle geïnstalleerde pakketten waarvoor een nieuwere versie beschikbaar is
    • Handig om te controleren wat er kan worden bijgewerkt
  3. Pakketten upgraden: apt upgrade

    • Werkt alle pakketten bij naar hun nieuwste veilige versie
    • Gebruikt -y flag om automatisch ja te zeggen op vragen
apt update en upgrade
apt update en upgrade

3: Server bijwerken

  1. Typ: apt update
  2. Druk op Enter
  3. Wacht tot het proces voltooid is
  4. Typ: apt list --upgradable
  5. Druk op Enter
  6. Bekijk welke pakketten kunnen worden bijgewerkt
  7. Typ: apt upgrade -y
  8. Druk op Enter
  9. Wacht tot alle updates voltooid zijn

4: Webserver (Apache) installeren

  1. Typ: apt install apache2 -y
  2. Druk op Enter
  3. Wacht tot de installatie voltooid is

Wat is systemctl?

systemctl is een hulpprogramma in Linux voor het beheren van services (achtergrondprogramma's). Het stelt je in staat om services te starten, stoppen, herstarten en in te stellen voor automatisch starten bij boot.

Veelgebruikte commando's:

Commando Uitleg
systemctl start <service> Start een service
systemctl stop <service> Stopt een service
systemctl restart <service> Herstart een service
systemctl enable <service> Service start automatisch bij boot
systemctl disable <service> Service start niet meer automatisch bij boot
systemctl status <service> Toont de huidige status van een service

Voor Apache:

  • systemctl start apache2 - Start de webserver
  • systemctl enable apache2 - Zorg dat Apache automatisch opstart na een serverrestart
  • systemctl status apache2 - Controleer of Apache draait

Oefening: Apache status controleren

Laten we nu oefenen met systemctl om beter te begrijpen hoe je een service beheert.

Stap 1: Status controleren

  1. Typ: systemctl status apache2
  2. Druk op Enter

Je ziet nu iets als:

TXT
● apache2.service - The Apache HTTP Server
    Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
    Active: active (running) since Mon 2024-01-15 10:23:45 UTC; 2min 30s ago
      Docs: https://httpd.apache.org/docs/2.4/
    Process: 1234 ExecStart=/usr/sbin/apachectl start (code=exited, status=0/SUCCESS)
   Main PID: 1235 (apache2)
     Tasks: 55
    Memory: 45.2M
       CPU: 250ms
    CGroup: /system.slice/apache2.service

Wat betekent dit?

  • Active: active (running) → Apache draait momenteel
  • Enabled → Apache start automatisch op bij reboot
  • Main PID: 1235 → Het proces ID van Apache
  • Memory: 45.2M → Geheugen dat Apache gebruikt

Stap 2: Website testen in je browser

  1. Open je browser en ga naar: http://<jouw-IP-adres> (vervang met je server IP)
  2. Je ziet nu de standaard Apache pagina

Lukt dit niet? Waaraan ligt dit denk je? Denk aan stap 5. Wat moet je wijzigen?

Stap 3: Service disablen

  1. Typ: systemctl disable apache2
  2. Druk op Enter
  3. Typ: systemctl status apache2
  4. Let op: Loaded zegt nu disabled in plaats van enabled. De service draait nog wel!

Stap 4: Service stoppen

  1. Typ: systemctl stop apache2
  2. Druk op Enter
  3. Typ: systemctl status apache2
  4. Nu staat Active: inactive (dead) → Apache draait niet meer
  5. Je browser geeft nu een foutmelding als je het IP-adres bezoekt

Stap 5: Service opnieuw starten

  1. Typ: systemctl start apache2
  2. Druk op Enter
  3. Je website werkt weer in je browser

5: Webserver starten

  1. Typ: systemctl start apache2
  2. Druk op Enter
  3. Typ: systemctl enable apache2 (zodat Apache automatisch start bij server reboot)
  4. Druk op Enter

6: Webserver map voorbereidden

  1. Typ: mkdir -p /var/www/html/mysite
  2. Druk op Enter
  3. Je webbestanden zullen hier later via SFTP geplaatst worden

7: SSH-verbinding beëindigen

  1. Typ: exit
  2. Druk op Enter

Je server is nu geconfigureerd met een werkende webserver en klaar voor het ontvangen van webbestanden.

Stap 9: SFTP client op onze eigen laptop installeren en configureren

1: FileZilla installeren

  1. Ga naar https://filezilla-project.org/
  2. Klik op Download FileZilla Client
  3. Kies de juiste versie voor je besturingssysteem (Windows)
  4. Download en voer het installatiebestand uit
  5. Volg de installatiestappen en accepteer de voorwaarden
  6. FileZilla is nu geïnstalleerd

2: SFTP-verbinding configureren

  1. Open FileZilla
  2. Ga naar FileSite Manager (of druk op Ctrl+S)
  3. Klik op New Site en geef deze een naam volgens de conventie (bijv. ldr-webserver-1)
  4. Vul de verbindingsgegevens in:
    • Protocol: SFTP - SSH File Transfer Protocol
    • Host: Voer het publieke IP-adres van je server in
    • Port: 22 (standaard SSH/SFTP poort)
    • Logon Type: Key file
    • User: root
    • Key file: Klik op Browse en selecteer je privésleutel (id_ed25519) uit C:\Users\<jouw_gebruikersnaam>\.ssh\
  5. Klik op Connect

3: Mappen verkennen

  1. Aan de linkerkant zie je de mappen op je laptop
  2. Aan de rechterkant zie je de mappen op je server
  3. Navigeer op de server naar /var/www/html/mysite
  4. Dit is de map waar je webbestanden moeten komen

Op basis van je huidige setup zou de website bereikbaar zijn op:

TXT
http://<jouw-server-IP-adres>/mysite/index.html

Bijvoorbeeld: http://1.2.3.4/mysite/index.html

Opmerking: Dit werkt alleen als:

  • De firewall HTTP-verkeer (poort 80) toelaat
  • Apache correct is geconfigureerd
  • Je bestand in /var/www/html/mysite staat

Je kunt dit testen door in je browser naar dit adres te navigeren.

Stap 10: HTML-bestanden overzetten naar de webserver

1: Webbestanden voorbereidden op je laptop

  1. Maak op je laptop een map aan met je HTML-bestanden (bijv. mijn-website)
  2. Zorg ervoor dat je minstens een index.html bestand hebt
  3. Plaats alle benodigde bestanden (HTML, CSS, JavaScript, afbeeldingen) in deze map

2: Bestanden uploaden via SFTP

  1. Open FileZilla
  2. Verbind met je server via de eerder geconfigureerde site (ldr-webserver-1)
  3. Navigeer aan de linkerkant naar de map met je webbestanden
  4. Navigeer aan de rechterkant naar /var/www/html/mysite
  5. Sleep je bestanden van links naar rechts (of selecteer en klik Upload)
  6. Wacht tot alle bestanden zijn geüpload

Stap 11: De website testen via HTTP en het IP-adres

1: Website in browser openen

  1. Open je webbrowser
  2. Typ in de adresbalk: http://<jouw-server-IP-adres>/mysite/
  3. Druk op Enter
  4. Je website zou nu zichtbaar moeten zijn

2: Troubleshooten als het niet werkt

  1. Controleer of Apache draait: systemctl status apache2
  2. Controleer of je bestanden in de juiste map staan: ls -la /var/www/html/mysite/
  3. Controleer de firewall instellingen in Hetzner Cloud Console
  4. Controleer permissies: chmod -R 755 /var/www/html/mysite/
  5. Bekijk Apache error logs: tail -f /var/log/apache2/error.log

3: Browser cache wissen indien nodig

  1. Druk op Ctrl+Shift+Delete (Windows) of Cmd+Shift+Delete (Mac)
  2. Wis cache en koekjes
  3. Herlaad de pagina

Je website is nu live op het internet en bereikbaar via het IP-adres van je server!

🧠
  • Verbinding maken met een VPS via SSH, server bijwerken, Apache webserver installeren en configureren met systemctl
  • Bestandsoverzet naar server via SFTP met FileZilla door SSH-sleutel authenticatie
  • Website hosten en testen via HTTP met IP-adres door webbestanden in /var/www/html/mysite te plaatsen en firewall poort 80 in te stellen