Complete gids voor Ubuntu-webserver | Apache + SSL + optimalisatie [Beginner-vriendelijk]

目次

1. Introductie

Wat is een Ubuntu-webserver?

Een webserver is een systeem dat websites via internet levert. Populaire webserversoftware omvat Apache, Nginx en LiteSpeed, maar het meest gebruikte op Ubuntu is Apache.
Ubuntu is lichtgewicht, zeer stabiel en open-source, waardoor het een populaire keuze is voor zowel particulieren als bedrijven. Het is bijzonder geschikt voor het bouwen van een LAMP‑stack (Linux, Apache, MySQL/MariaDB, PHP), die vaak wordt gebruikt voor het draaien van websites en webapplicaties.

Voor wie is deze gids bedoeld?

Dit artikel is bedoeld voor beginners die voor de eerste keer een webserver opzetten. Het biedt een stapsgewijze handleiding over hoe je Apache op Ubuntu installeert, virtuele hosts configureert, SSL‑certificaten instelt, de prestaties optimaliseert en de beveiliging verbetert.

Wat je zult leren

  • Hoe je een webserver op Ubuntu opzet (Apache installeren en configureren)
  • Virtuele hosts instellen om meerdere websites te beheren
  • Gratis SSL‑certificaten installeren met Let’s Encrypt
  • Beveiliging verbeteren en serverprestaties optimaliseren
  • Veelvoorkomende problemen met webservers oplossen
年収訴求

2. Installatie en initiële configuratie van Ubuntu

Systeemvereisten

Om Ubuntu als webserver te draaien, worden de volgende minimale systeemvereisten aanbevolen:

ComponentMinimum RequirementsRecommended Requirements
OSUbuntu 22.04 LTSUbuntu 22.04 LTS
CPU1GHz or higher2GHz or higher
Memory512MB2GB or higher
Storage10GB or more20GB or more
NetworkInternet connectionHigh-speed connection recommended

Ubuntu downloaden en installeren

Je kunt Ubuntu downloaden van de officiële website: https://ubuntu.com/download/server. Zodra je het ISO‑bestand hebt, kun je het installeren met VirtualBox of VMware voor een virtuele omgeving, of op een dedicated server of VPS.

Installatiestappen:

  1. Maak installatiemedium
  • Gebruik een USB‑stick (met tools zoals Rufus)
  • Mount het ISO‑bestand in een virtuele machine
  1. Volg de installatiewizard
  • Stel de taal in op Engels
  • Controleer de netwerkverbinding
  • Configureer gebruikersnaam en wachtwoord
  • Installeer SSH‑server (optioneel, kan later worden gedaan)
  1. Voltooi de OS‑configuratie en herstart
  2. Log in en begin met de initiële configuratie

Basis initiële configuratie

Na de installatie voer je de volgende initiële configuratiestappen uit:

  1. Systeempakketten bijwerken
sudo apt update && sudo apt upgrade -y

→ Dit zorgt ervoor dat beveiligingspatches en software‑updates worden toegepast.

  1. Stel de tijdzone in
sudo timedatectl set-timezone America/New_York

→ Stel de tijdzone in zodat deze overeenkomt met de locatie van je server.

  1. Schakel de firewall in
sudo ufw enable

→ Dit beschermt de server tegen ongeautoriseerde toegang.

  1. Configureer SSH (voor beheer op afstand)
  • Controleer of SSH is ingeschakeld: sudo systemctl status ssh
  • Indien niet ingeschakeld, start het: sudo systemctl enable --now ssh

Zodra deze initiële instellingen zijn toegepast, is de Ubuntu‑server klaar om als webserver te worden geconfigureerd.

3. Apache installeren en configureren

Wat is Apache?

Apache (officieel Apache HTTP Server) is een open‑source webserversoftware die bekend staat om zijn stabiliteit, schaalbaarheid en beveiliging. Ongeveer 30 % van de webservers wereldwijd gebruiken Apache.

Belangrijkste kenmerken:

  • Gratis en open-source
  • Modulaire architectuur voor eenvoudige aanpassing
  • Ondersteunt SSL/TLS voor beveiligde HTTPS‑verbindingen
  • Ondersteuning voor virtuele hosts om meerdere websites te beheren

Apache installeren

Op Ubuntu kan Apache eenvoudig worden geïnstalleerd met de apt‑pakketbeheerder.

Apache installeren

Voer de volgende commando’s uit om Apache te installeren:

sudo apt update
sudo apt install apache2 -y

Installatie verifiëren

Controleer na de installatie de Apache‑versie:

apache2 -v

Voorbeeldoutput:

Server version: Apache/2.4.52 (Ubuntu)
Server built:   2023-07-01T12:34:56

Als je dit bericht ziet, is Apache succesvol geïnstalleerd.

Apache starten, stoppen en herstarten

Apache wordt beheerd met het systemctl‑commando.

Apache starten

sudo systemctl start apache2

Apache inschakelen om bij opstarten te starten

sudo systemctl enable apache2

Apache‑status controleren

Om te bevestigen dat Apache draait:

sudo systemctl status apache2

Als Apache draait, zie je een status “active (running)”.

Apache herstarten of stoppen

Als je Apache moet herstarten na het aanbrengen van configuratiewijzigingen:

sudo systemctl restart apache2

Om Apache tijdelijk te stoppen:

sudo systemctl stop apache2

4. Virtuele hosts configureren (Meerdere websites beheren)

Wat is een virtuele host?

Een virtuele host is een functie die een enkele Apache-server in staat stelt meerdere domeinen (of subdomeinen) te hosten.
Bijvoorbeeld, een enkele server kan zowel example.com als test.com hosten.

Er zijn twee soorten virtuele hosts:

  1. Naamgebaseerde virtuele host
  • Hostt meerdere sites op hetzelfde IP-adres
  • De meest voorkomende manier om meerdere websites te beheren
  1. IP-gebaseerde virtuele host
  • Elke site krijgt een anders IP-adres toegewezen
  • Vereist meerdere netwerkinterfaces op de server

Meestal wordt naamgebaseerde virtuele hosting gebruikt.

Stappen om virtuele hosts te configureren

1. Maak mappen voor elke site

Elke virtuele host vereist een dedicatieve map om de websitebestanden op te slaan.

sudo mkdir -p /var/www/example.com/public_html
sudo mkdir -p /var/www/test.com/public_html

2. Verander het eigendom van de mappen

Om ervoor te zorgen dat Apache toegang heeft tot de bestanden, stel je de eigenaar in op www-data.

sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chown -R www-data:www-data /var/www/test.com/public_html

3. Maak een test-HTML-bestand

Voor verificatie, maak een index.html-bestand voor elke site.

echo "<h1>Welcome to example.com</h1>" | sudo tee /var/www/example.com/public_html/index.html
echo "<h1>Welcome to test.com</h1>" | sudo tee /var/www/test.com/public_html/index.html

4. Maak configuratiebestanden voor virtuele hosts

Configuraties voor virtuele hosts worden opgeslagen in /etc/apache2/sites-available/.

Configuratie voor example.com

Maak en bewerk een configuratiebestand:

sudo nano /etc/apache2/sites-available/example.com.conf

Voeg de volgende configuratie toe:

<VirtualHost *:80>
    ServerAdmin admin@example.com
    ServerName example.com
    ServerAlias www.example.com
    DocumentRoot /var/www/example.com/public_html

    <Directory /var/www/example.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/example.com_error.log
    CustomLog ${APACHE_LOG_DIR}/example.com_access.log combined
</VirtualHost>

Configuratie voor test.com

sudo nano /etc/apache2/sites-available/test.com.conf

Voeg de volgende inhoud toe:

<VirtualHost *:80>
    ServerAdmin admin@test.com
    ServerName test.com
    ServerAlias www.test.com
    DocumentRoot /var/www/test.com/public_html

    <Directory /var/www/test.com/public_html>
        Options -Indexes +FollowSymLinks
        AllowOverride All
        Require all granted
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/test.com_error.log
    CustomLog ${APACHE_LOG_DIR}/test.com_access.log combined
</VirtualHost>

5. Virtuele hosts inschakelen

Zodra de configuratiebestanden zijn aangemaakt, schakel je ze in met a2ensite.

sudo a2ensite example.com.conf
sudo a2ensite test.com.conf

Apache-configuratie testen

Controleer op syntaxisfouten:

sudo apachectl configtest

Als de uitvoer is:

Syntax OK

Herstart Apache om de wijzigingen toe te passen:

sudo systemctl restart apache2

6. Lokaal testen (het hosts-bestand bewerken)

Om te verifiëren dat de virtuele hosts correct werken, bewerk je je lokale hosts-bestand.

sudo nano /etc/hosts

Voeg de volgende regels toe:

127.0.0.1 example.com
127.0.0.1 test.com

Na het opslaan, open een browser en voer in:

http://example.com/

Als je “Welcome to example.com” ziet, is de configuratie geslaagd.

5. SSL/TLS inschakelen (HTTPS)

Wat is SSL/TLS?

SSL (Secure Sockets Layer) en TLS (Transport Layer Security) zijn encryptietechnologieën die communicatie via internet beveiligen.

Voordelen van SSL/TLS:

Versleutelt communicatie (vermindert risico’s op diefstal en manipulatie van gegevens)
Verhoogt SEO-ranking (Google geeft HTTPS-sites prioriteit in zoekresultaten)
Voorkomt browserwaarschuwingen (HTTP-sites kunnen “Niet veilig” tonen)
Beveiligt online betalingen en inloggegevens

Let’s Encrypt gebruiken voor gratis SSL

Let’s Encrypt is een certificeringsautoriteit die gratis SSL-certificaten levert. We gebruiken certbot om het eenvoudig in te stellen.

Certbot installeren

sudo apt update
sudo apt install certbot python3-certbot-apache -y

SSL automatisch configureren voor Apache

sudo certbot --apache -d example.com -d www.example.com

Verifieer dat HTTPS werkt

Na de installatie, controleer:

https://example.com/

Als je een slot‑icoon in de browser ziet, werkt SSL.

6. Webserverbeveiliging verbeteren

Een firewall instellen (UFW)

Firewall inschakelen en benodigde poorten openen

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp   # SSH
sudo ufw allow 80/tcp   # HTTP
sudo ufw allow 443/tcp  # HTTPS
sudo ufw enable

SSH beveiligen

SSH‑poort wijzigen

sudo nano /etc/ssh/sshd_config

Wijzig:

Port 2222  # Change 22 to a custom port

SSH herstarten:

sudo systemctl restart ssh

7. Prestatie‑optimalisatie

Apache afstemmen

Standaard is Apache niet altijd geoptimaliseerd voor het efficiënt afhandelen van veel verkeer. Je kunt de volgende instellingen aanpassen om de prestaties te verbeteren.

MPM optimaliseren (Multi‑Processing Module)

MPM (Multi‑Processing Module) bepaalt hoe Apache verzoeken verwerkt.

Controleer de huidige MPM‑configuratie:

apachectl -M | grep mpm

Voorbeeldoutput:

mpm_prefork_module (shared)

Als je mpm_prefork_module ziet, overweeg dan om over te schakelen naar mpm_event voor betere prestaties.

Overschakelen naar MPM Event:

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2

KeepAlive inschakelen

KeepAlive maakt persistente verbindingen mogelijk, waardoor het aantal nieuwe verzoeken wordt verminderd.

Bewerk het Apache‑configuratiebestand:

sudo nano /etc/apache2/apache2.conf

Voeg de volgende instellingen toe of wijzig ze:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

Apache herstarten:

sudo systemctl restart apache2

Caching benutten

Het gebruik van browser‑ en server‑caching vermindert overbodige verzoeken, waardoor de responstijden verbeteren.

mod_expires inschakelen voor browser‑caching

sudo a2enmod expires
sudo systemctl restart apache2

Bewerk je virtual‑host‑configuratiebestand:

sudo nano /etc/apache2/sites-available/example.com.conf

Voeg toe:

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 month"
    ExpiresByType image/jpg "access plus 1 year"
    ExpiresByType image/jpeg "access plus 1 year"
    ExpiresByType image/png "access plus 1 year"
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
</IfModule>

Apache herstarten:

sudo systemctl restart apache2

Gzip‑compressie inschakelen

Schakel compressie in om bestandsgroottes te verkleinen en de laadsnelheid te verbeteren.

mod_deflate inschakelen

sudo a2enmod deflate
sudo systemctl restart apache2

Bewerk het virtual‑host‑configuratiebestand:

sudo nano /etc/apache2/sites-available/example.com.conf

Voeg toe:

<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/plain text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE image/svg+xml
</IfModule>

Apache herstarten:

sudo systemctl restart apache2

Resources beperken

Om overmatig gebruik van bronnen te voorkomen, beperk je het aantal verbindingen per IP.

mod_ratelimit inschakelen

sudo a2enmod ratelimit
sudo systemctl restart apache2

Bewerk het virtual‑host configuratiebestand:

sudo nano /etc/apache2/sites-available/example.com.conf

Voeg toe:

<Location />
    SetOutputFilter RATE_LIMIT
    SetEnv rate-limit 200
</Location>

Herstart Apache:

sudo systemctl restart apache2

8. Probleemoplossing

Apache start niet of stopt onverwacht

Controleer Apache-status

sudo systemctl status apache2

Als de uitvoer bevat:

Active: failed

Dan is er een fout opgetreden.

Controleer foutlogboeken

sudo journalctl -xe
sudo tail -f /var/log/apache2/error.log

Controleer poortconflicten

sudo netstat -tulnp | grep ':80'

Of:

sudo lsof -i:80

SSL‑certificaatproblemen

SSL‑certificaat verlopen

sudo certbot renew --force-renewal

Apache SSL‑configuratiefout

Bewerk het Apache SSL‑configuratiebestand:

sudo nano /etc/apache2/sites-available/example.com-le-ssl.conf

Verifieer:

SSLCertificateFile /etc/letsencrypt/live/example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem

Herstart Apache:

sudo systemctl restart apache2

Website laadt niet (403, 404, 500 fouten)

403 Verboden

sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chmod -R 755 /var/www/example.com/public_html

404 Niet gevonden

Controleer de virtual‑host configuratie:

DocumentRoot /var/www/example.com/public_html

Schakel mod_rewrite in indien nodig:

sudo a2enmod rewrite
sudo systemctl restart apache2

500 Interne serverfout

Controleer foutlogboeken:

sudo tail -f /var/log/apache2/error.log

Probeer .htaccess te hernoemen:

mv /var/www/example.com/public_html/.htaccess /var/www/example.com/public_html/.htaccess.bak

9. Samenvatting

Wat je hebt geleerd

Laten we de belangrijkste onderwerpen die in deze gids behandeld zijn, doornemen.

SectionKey Points
1. IntroductionOverview of Ubuntu Web Server and the purpose of this guide
2. Installing and Initial Setup of UbuntuSetting up Ubuntu, updating packages, and configuring the firewall
3. Installing and Configuring ApacheInstalling Apache, starting the service, and verifying functionality
4. Configuring Virtual HostsHosting multiple websites on a single Apache server
5. Enabling SSL/TLSUsing Let’s Encrypt for HTTPS setup
6. Enhancing Web Server SecurityFirewall setup, SSH security, and Apache hardening
7. Performance OptimizationUsing caching, compression, and tuning Apache settings
8. TroubleshootingFixing Apache errors, SSL issues, and common website errors

Volgende stappen

Nu je Ubuntu‑webserver operationeel is, overweeg dan om meer geavanceerde onderwerpen te leren om de mogelijkheden van je server uit te breiden:

WordPress of PHP‑toepassingen implementeren
Een databaseserver opzetten (MySQL / MariaDB)
Nginx configureren als reverse proxy voor Apache
Auto‑scaling implementeren met cloudplatformen (AWS, GCP, Azure)
Geavanceerde logging en monitoring (Fail2Ban, Logwatch, Prometheus)

Veelgestelde vragen (FAQ)

V1: Moet ik Nginx of Apache kiezen voor mijn webserver?

A1: Als je website voornamelijk statische inhoud levert, is Nginx aanbevolen. Als je dynamische inhoud (zoals PHP) nodig hebt, is Apache een betere keuze. Je kunt Nginx ook als reverse proxy voor Apache gebruiken.

V2: Kunnen SSL‑certificaten automatisch worden verlengd?

A2: Ja, Certbot ondersteunt automatische vernieuwing. Je kunt de vernieuwingstatus controleren met:

sudo certbot renew --dry-run

Voor volledige automatische vernieuwing wordt aanbevolen een cron‑taak in te stellen.

V3: Hoe kan ik de beveiliging van mijn server verder verbeteren?

A3: Implementeer Fail2Ban om brute‑force‑aanvallen te voorkomen, verberg Apache‑versiedetails, schakel ongebruikte modules uit en handhaaf sterke SSH‑beveiligingspraktijken.

V4: Hoe kan ik de prestaties van Apache verbeteren?

A4: Schakel over naar MPM Event, schakel caching (mod_cache) in, gebruik gzip‑compressie (mod_deflate) en optimaliseer de KeepAlive‑instellingen.

V5: Waarom krijg ik een “403 Forbidden” fout?

A5: Zorg ervoor dat de eigendom van de map is ingesteld op www-data en pas de bestandsrechten aan:

sudo chown -R www-data:www-data /var/www/example.com/public_html
sudo chmod -R 755 /var/www/example.com/public_html

Slotgedachten

Het opzetten van een Ubuntu‑webserver omvat meerdere stappen, van installatie en configuratie tot optimalisatie en probleemoplossing. Zodra je het proces begrijpt, kun je een krachtige webhostingomgeving bouwen en beheren.

🚀 Volg deze gids om een veilige, snelle en betrouwbare webserver te maken, en blijf je vaardigheden als serverbeheerder verbeteren! 🚀

侍エンジニア塾