Wie man einen sicheren und hochperformanten Ubuntu-Webserver mit Apache erstellt (Komplette Anleitung)

目次

1. Einführung

Was ist ein Ubuntu-Webserver?

Ein Webserver ist ein System, das Websites über das Internet bereitstellt. Beliebte Webserver-Software umfasst Apache, Nginx und LiteSpeed, aber die am weitesten verbreitete Option auf Ubuntu ist Apache.
Ubuntu ist leichtgewichtig, stabil und open-source, was es bei Einzelpersonen und Unternehmen gleichermaßen beliebt macht. Es eignet sich besonders gut für den Betrieb von LAMP-Umgebungen (Linux, Apache, MySQL/MariaDB, PHP), die viele Websites und Anwendungen antreiben.

Für wen ist dieser Artikel gedacht

Diese Anleitung ist für Anfänger gedacht, die zum ersten Mal einen Webserver aufbauen. Sie erklärt, wie man einen Webserver auf Ubuntu startet, Apache installiert, virtuelle Hosts und SSL-Zertifikate konfiguriert und Optimierungen sowie Sicherheitsverbesserungen umsetzt.

Was Sie lernen werden

  • Wie man einen Webserver auf Ubuntu aufbaut (Installation und Konfiguration von Apache)
  • Wie man virtuelle Hosts einrichtet und mehrere Websites verwaltet
  • Wie man kostenloses SSL mit Let’s Encrypt installiert
  • Wie man Sicherheitsverstärkung und Leistungsoptimierung anwendet
  • Häufige Fehlerbehebungsschritte und Lösungen

2. Installation von Ubuntu und Durchführung der anfänglichen Einrichtung

Erforderliche Systemanforderungen

Um Ubuntu als Webserver zu betreiben, werden folgende Mindestanforderungen empfohlen:

ItemMinimum 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

Herunterladen und Installieren von Ubuntu

Ubuntu kann von der offiziellen Website heruntergeladen werden (https://ubuntu.com/download/server). Laden Sie die ISO-Datei herunter und installieren Sie sie in einer virtuellen Maschine wie VirtualBox oder VMware oder auf einem dedizierten Server oder VPS.

Installationsschritte:

  1. Installationsmedium erstellen
  • USB-Stick (mit Tools wie Rufus)
  • ISO-Datei in einer virtuellen Maschine mounten
  1. Den Installationsassistenten folgen
  • Wählen Sie Ihre bevorzugte Sprache aus
  • Überprüfen Sie die Netzwerkverbindung
  • Legen Sie Benutzername und Passwort fest
  • Installieren Sie den SSH-Server (optional – Sie können ihn später installieren)
  1. Nach Abschluss der Installation neu starten
  2. Anmelden und mit der anfänglichen Konfiguration beginnen

Grundlegende anfängliche Einrichtung

Nach der Installation führen Sie die folgenden anfänglichen Einrichtungsschritte durch.

  1. Alle Pakete aktualisieren
    sudo apt update && sudo apt upgrade -y
    

→ Wendet Sicherheitsupdates an und aktualisiert Softwarepakete.

  1. Zeitzone einstellen
    sudo timedatectl set-timezone Asia/Tokyo
    

→ Stellt die Systemzeit auf Japan Standard Time (JST) ein.

  1. Firewall aktivieren
    sudo ufw enable
    

→ Aktiviert die Firewall, um das System vor unbefugtem Zugriff zu schützen.

  1. SSH konfigurieren (für Remote-Verwaltung)
  • Überprüfen, ob SSH aktiviert ist sudo systemctl status ssh
  • Wenn deaktiviert, aktivieren sudo systemctl enable --now ssh

Nach Abschluss dieser Schritte ist Ihr Ubuntu-Server bereit, als voll funktionsfähiger Webserver eingerichtet zu werden.

3. Installation und Konfiguration von Apache

Was ist Apache?

Apache (Apache HTTP Server) ist ein open-source Webserver, der für seine Stabilität, Erweiterbarkeit und starken Sicherheitsfunktionen bekannt ist. Etwa 30 % der Server weltweit verwenden Apache.

Wichtige Merkmale:

  • Kostenlos und open-source
  • Modulare Architektur für einfache Erweiterungen
  • SSL/TLS-Unterstützung für HTTPS-Konfiguration
  • Virtuelle Hosts für das Hosten mehrerer Websites

Installation von Apache

Auf Ubuntu kann Apache einfach mit dem apt-Paketmanager installiert werden.

Apache installieren

Führen Sie die folgenden Befehle aus, um Apache zu installieren:

sudo apt update
sudo apt install apache2 -y

Installation überprüfen

Nach der Installation überprüfen Sie die Apache-Version:

apache2 -v

Beispielausgabe:

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

Wenn Versionsinformationen angezeigt werden, wurde Apache korrekt installiert.

Starten, Stoppen und Neustarten von Apache

Apache wird mit dem systemctl-Befehl verwaltet.

Apache starten

sudo systemctl start apache2

Apache beginnt nun, Web-Anfragen zu akzeptieren.

Automatischen Start aktivieren

sudo systemctl enable apache2

Apache-Status überprüfen

Verwenden Sie diesen Befehl, um zu überprüfen, ob Apache läuft:

sudo systemctl status apache2

Beispielausgabe:

● apache2.service - The Apache HTTP Server
   Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor preset: enabled)
   Active: active (running) since ...

Apache neu starten oder stoppen

Starten Sie Apache nach der Änderung der Konfigurationseinstellungen neu:

sudo systemctl restart apache2

Um Apache vorübergehend zu stoppen:

sudo systemctl stop apache2

Überprüfen der Apache-Betriebsfunktion

Um zu bestätigen, dass Apache ordnungsgemäß läuft, greifen Sie auf die IP-Adresse des Servers zu.

1. Überprüfen Sie die IP-Adresse Ihres Servers

hostname -I

Oder überprüfen Sie die externe IP:

curl ifconfig.me

2. In einem Webbrowser überprüfen

Geben Sie Folgendes in Ihrem Browser ein:

http://<your-server-ip>/

Für lokale Einrichtungen:

http://localhost/

Sie sollten die Standardseite von Apache sehen (/var/www/html/index.html).

Beispiel für die Standardseite:

Apache2 Ubuntu Default Page
It works!

Wenn diese Nachricht erscheint, funktioniert Apache ordnungsgemäß.

Firewall konfigurieren

Ubuntu verwendet UFW (Uncomplicated Firewall), um Firewall-Regeln zu verwalten.
Nach der Installation von Apache kann der externe Zugriff auf HTTP (Port 80) und HTTPS (Port 443) immer noch blockiert sein.

Apache durch die Firewall zulassen

sudo ufw allow 'Apache'

Um auch HTTPS zu erlauben:

sudo ufw allow 'Apache Full'

Firewall-Status überprüfen

sudo ufw status

Beispielausgabe:

Status: active

To                         Action      From
--                         ------      ----
Apache                     ALLOW       Anywhere
Apache (v6)                ALLOW       Anywhere (v6)

Wenn dies erscheint, ist Apache-Verkehr durch die Firewall erlaubt.

Zusammenfassung

Bis jetzt haben Sie Apache auf Ubuntu installiert und wesentliche Einrichtungsschritte abgeschlossen.
Wichtige Punkte, die abgedeckt wurden:

  • Wie man Apache installiert
  • Wie man Apache startet und aktiviert
  • Wie man die Apache-Betriebsfunktion in einem Browser überprüft
  • Wie man UFW-Firewall-Regeln konfiguriert
  • Überblick über die grundlegenden Konfigurationsdateien von Apache

4. Virtuelle Hosts konfigurieren (Verwalten mehrerer Sites)

Was sind virtuelle Hosts?

Virtuelle Hosts ermöglichen es Ihnen, mehrere Domains (oder Subdomains) auf einem einzigen Apache-Server zu hosten.
Zum Beispiel kann ein Server sowohl example.com als auch test.com hosten.

Es gibt zwei Arten von virtuellen Hosts:

  1. Namenbasierte virtuelle Hosts
  • Mehrere Sites teilen sich die gleiche IP-Adresse
  • Die gängigste Methode
  1. IP-basierte virtuelle Hosts
  • Jede Site verwendet eine andere IP-Adresse
  • Erfordert mehrere Netzwerkschnittstellen auf einem einzigen Server

In den meisten Fällen werden namenbasierte virtuelle Hosts verwendet.

Schritte zur Konfiguration virtueller Hosts

1. Erforderliche Verzeichnisse erstellen

Erstellen Sie ein separates Verzeichnis für jede Website:

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

2. Verzeichniseigentum ändern

Stellen Sie sicher, dass Apache die Dateien lesen kann, indem Sie den Eigentümer auf www-data setzen:

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. Platzhalter-HTML-Dateien erstellen

Erstellen Sie eine grundlegende index.html-Datei zum Testen:

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. Virtuelle Host-Konfigurationsdateien erstellen

Virtuelle Host-Konfigurationsdateien werden im Verzeichnis /etc/apache2/sites-available/ gespeichert.

Virtuelle Host-Konfiguration für example.com

Erstellen und bearbeiten Sie die Konfigurationsdatei mit dem folgenden Befehl:

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

Inhalt der Konfigurationsdatei:

<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>

Virtual-Host-Konfiguration für test.com

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

Fügen Sie den folgenden Inhalt hinzu:

<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. Aktivieren der Virtual Hosts

Nachdem Sie die Konfigurationsdateien erstellt haben, aktivieren Sie die Virtual Hosts mit a2ensite:

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

Testen der Apache-Konfiguration

Auf Syntaxfehler prüfen:

sudo apachectl configtest

Beispielausgabe:

Syntax OK

Wenn keine Fehler auftreten, Apache neu starten:

sudo systemctl restart apache2

6. Lokal überprüfen (Hosts-Datei bearbeiten)

Um Virtual Hosts lokal zu testen, bearbeiten Sie die hosts‑Datei Ihres PCs.

sudo nano /etc/hosts

Fügen Sie die folgenden Zeilen hinzu:

127.0.0.1 example.com
127.0.0.1 test.com

Speichern Sie die Datei, öffnen Sie dann einen Browser und rufen Sie auf:

http://example.com/

Sie sollten „Welcome to example.com“ sehen.

Ebenso sollte beim Aufruf von

http://test.com/

„Welcome to test.com“ angezeigt werden.

7. Fehlersuche bei Virtual Hosts

Falls die Virtual Hosts nicht korrekt funktionieren, prüfen Sie Folgendes:

1. Apache-Fehlerprotokolle prüfen

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

2. Bestätigen, dass die Konfigurationsdateien aktiviert sind

ls /etc/apache2/sites-enabled/

Wenn die richtigen .conf‑Dateien aufgelistet sind, sind die Virtual Hosts aktiv.

3. Apache-Port‑Einstellungen prüfen

Vergewissern Sie sich, dass Port 80 (HTTP) konfiguriert ist:

sudo nano /etc/apache2/ports.conf

Stellen Sie sicher, dass die folgende Zeile vorhanden ist:

Listen 80

Zusammenfassung

In diesem Abschnitt wurde erklärt, wie man Virtual Hosts in Apache unter Ubuntu konfiguriert.
Wichtige Punkte:

  • Konzept und Zweck von Virtual Hosts
  • Erstellung von Verzeichnissen für jede Site
  • Erstellung und Aktivierung von Virtual‑Host‑Konfigurationsdateien
  • Lokale Testmethoden mittels Hosts‑Datei
  • Fehlerbehebung bei häufigen Problemen

5. Einführung in SSL/TLS (HTTPS aktivieren)

Was ist SSL/TLS?

SSL (Secure Sockets Layer) und TLS (Transport Layer Security) sind Verschlüsselungstechnologien, die für sichere Kommunikation im Internet sorgen.

Vorteile der Aktivierung von SSL/TLS

Verschlüsselt die Kommunikation (reduziert das Risiko, dass Daten abgefangen oder verändert werden)
Verbessert das Google‑SEO‑Ranking (HTTPS‑Seiten werden bevorzugt)
Verhindert Browser‑Sicherheitswarnungen (HTTP‑Seiten zeigen „Nicht sicher“)
Schützt Anmeldeinformationen und Online‑Transaktionen

Heute wird TLS (TLS 1.2 / 1.3) empfohlen; ältere SSL‑Versionen (SSL 3.0 und früher) sind veraltet.

Kostenloses SSL‑Zertifikat mit Let’s Encrypt erhalten

Let’s Encrypt ist eine Zertifizierungsstelle (CA), die kostenlose SSL‑Zertifikate bereitstellt.
Mit certbot können Sie einfach ein Zertifikat ausstellen und es in Apache einbinden.

Let’s‑Encrypt‑Client (Certbot) installieren

Installieren Sie certbot, den offiziellen Let’s‑Encrypt‑Client:

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

Automatisierte Apache‑SSL‑Konfiguration

Sie können Apache automatisch mit folgendem Befehl konfigurieren:

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

Dieser Befehl führt aus:

  1. Domainvalidierung (HTTP-01 Challenge)
  2. Ausstellung des SSL-Zertifikats
  3. Automatische Apache-SSL-Konfiguration
  4. Optionales Weiterleiten von HTTP zu HTTPS

SSL-Operation überprüfen

Rufen Sie die folgende URL auf, um zu bestätigen, dass HTTPS aktiviert ist:

https://example.com/

Wenn Ihr Browser ein Vorhängeschloss‑Symbol anzeigt, ist SSL erfolgreich angewendet.

Manuelle SSL-Konfiguration für Apache

Wenn Sie certbot --apache nicht verwenden möchten, können Sie SSL manuell konfigurieren.

1. Aktivieren des Apache‑SSL‑Moduls

sudo a2enmod ssl
sudo systemctl restart apache2

2. Konfigurieren des SSL‑Virtual‑Host

Bearbeiten Sie die SSL-Konfigurationsdatei /etc/apache2/sites-available/example.com-le-ssl.conf:

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

Beispielkonfiguration:

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

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

    <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>

3. SSL-Konfiguration aktivieren und Apache neu starten

sudo a2ensite example.com-le-ssl.conf
sudo systemctl restart apache2

Automatische Erneuerung von SSL-Zertifikaten

Let’s‑Encrypt-Zertifikate sind 90 Tage gültig. Um manuelle Erneuerungen zu vermeiden, konfigurieren Sie automatische Updates.

1. Automatische Erneuerung von Certbot testen

sudo certbot renew --dry-run

2. Erneuerungsplan prüfen

Der Auto‑Erneuerungsplan von Certbot wird unter /etc/cron.d/certbot gespeichert.

sudo systemctl list-timers | grep certbot

SSL-Fehlerbehebung

1. SSL-Zertifikat nicht angewendet

Lösung: Apache neu starten und Konfiguration überprüfen

sudo systemctl restart apache2
sudo apachectl configtest

2. Zertifikat ist abgelaufen

sudo certbot renew --force-renewal

3. Let’s‑Encrypt‑Validierungsfehler

Lösung: Firewall‑Regeln prüfen

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw reload

Zusammenfassung

Dieser Abschnitt erklärte, wie man kostenloses SSL mit Let’s Encrypt installiert und konfiguriert.
Wichtige Erkenntnisse:

  • Grundlagen von SSL/TLS
  • Apache mit Let’s Encrypt konfigurieren
  • Manuelle SSL-Konfiguration
  • Automatische Zertifikatsverlängerung
  • Fehlerbehebung bei SSL-Problemen

6. Verbesserung der Webserver‑Sicherheit

Konfiguration der Firewall (UFW)

Ubuntu verwendet UFW (Uncomplicated Firewall), um unnötigen Datenverkehr zu blockieren und den Server zu schützen.

Aktuelle Firewall‑Einstellungen prüfen

sudo ufw status

Nur erforderliche Ports zulassen

Standardmäßig wird aller eingehende Datenverkehr blockiert und nur erforderliche Ports zugelassen:

sudo ufw default deny incoming
sudo ufw default allow outgoing

Erforderliche Ports öffnen:

  • SSH (Port 22)
    sudo ufw allow 22/tcp
    
  • HTTP (Port 80)
    sudo ufw allow 80/tcp
    
  • HTTPS (Port 443)
    sudo ufw allow 443/tcp
    

Firewall aktivieren

sudo ufw enable

SSH‑Sicherheit verstärken

SSH ist ein häufiges Ziel von Brute‑Force‑Angriffen, wenn die Standardeinstellungen beibehalten werden. Verstärken Sie die Sicherheit durch geeignete Konfigurationen.

SSH‑Port ändern

sudo nano /etc/ssh/sshd_config

Ändern Sie diese Zeilen:

Port 2222  # Change from 22 to any unused port
PermitRootLogin no  # Disable root login
PasswordAuthentication no  # Disable password login (use SSH keys only)

SSH neu starten:

sudo systemctl restart ssh

Fail2Ban installieren

Fail2Ban schützt Ihren Server, indem es IP‑Adressen, die wiederholte SSH‑Anmeldeversuche durchführen, vorübergehend sperrt.

sudo apt install fail2ban -y

Konfiguration bearbeiten:

sudo nano /etc/fail2ban/jail.local

Fügen Sie Folgendes hinzu:

[sshd]
enabled = true
port = 2222
maxretry = 3
bantime = 600

Fail2Ban aktivieren:

sudo systemctl restart fail2ban
sudo systemctl enable fail2ban

Apache härten

Apache‑Versioninformationen verbergen

sudo nano /etc/apache2/conf-available/security.conf

Ändern Sie die folgenden Einstellungen:

ServerTokens Prod
ServerSignature Off

Wenden Sie die Änderungen an:

sudo systemctl restart apache2

Verzeichnislisting deaktivieren

sudo nano /etc/apache2/apache2.conf

Suchen Sie den Directory‑Block und aktualisieren Sie ihn:

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

Apache neu starten:

sudo systemctl restart apache2

Unnötige Apache‑Module deaktivieren

sudo a2dismod autoindex
sudo a2dismod status
sudo systemctl restart apache2

Sicherheits‑Header hinzufügen

Sicherheits‑Header schützen Ihre Website vor Angriffen wie Cross‑Site Scripting und Clickjacking.

mod_headers aktivieren

sudo a2enmod headers
sudo systemctl restart apache2

Sicherheits‑Header hinzufügen

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

Fügen Sie das Folgende innerhalb des <VirtualHost>‑Blocks hinzu:

<IfModule mod_headers.c>
    Header always set X-Content-Type-Options "nosniff"
    Header always set X-XSS-Protection "1; mode=block"
    Header always set X-Frame-Options "SAMEORIGIN"
    Header always set Strict-Transport-Security "max-age=31536000; includeSubDomains"
</IfModule>

Apache neu starten:

sudo systemctl restart apache2

Fehlersuche

Firewall‑Einstellungen prüfen

sudo ufw status

Apache‑Konfiguration auf Fehler prüfen

sudo apachectl configtest

Beispielausgabe:

Syntax OK

Keine Verbindung per SSH nach Portänderung

Falls sich SSH nach dem Ändern des Ports nicht verbindet, geben Sie beim Verbinden den neuen Port an:

ssh -p 2222 user@server-ip

Zusammenfassung

Dieser Abschnitt erklärte wie man die Sicherheit Ihres Webservers stärkt.
Wichtige Erkenntnisse:

  • Konfiguration von UFW‑Firewallregeln
  • SSH sichern (Portwechsel, Fail2Ban)
  • Apache‑Sicherheitshärtung (Version info verbergen, Listing deaktivieren)
  • Sicherheits‑Header hinzufügen

7. Leistungsoptimierung

Apache optimieren

Die Standardkonfiguration von Apache bietet möglicherweise nicht die optimale Leistung. Durch die Anwendung der folgenden Anpassungen können Sie deutlich höhere Performance erreichen.

Optimierung des MPM (Multi‑Processing Module)

Das MPM (Multi‑Processing Module) bestimmt, wie Apache Anfragen verarbeitet.

Aktuelles MPM prüfen:

apachectl -M | grep mpm

Beispielausgabe:

mpm_prefork_module (shared)

Wenn mpm_prefork_module aktiviert ist, kann ein Wechsel zu mpm_event die Leistung verbessern.

MPM ändern:

sudo a2dismod mpm_prefork
sudo a2enmod mpm_event
sudo systemctl restart apache2

KeepAlive aktivieren

KeepAlive (persistente Verbindungen) ermöglicht es Clients, bestehende Verbindungen wiederzuverwenden, wodurch der Anfrageaufwand reduziert wird.

Konfigurationsdatei bearbeiten:

sudo nano /etc/apache2/apache2.conf

Bestätigen Sie die folgenden Einstellungen:

KeepAlive On
MaxKeepAliveRequests 100
KeepAliveTimeout 5

Apache neu starten:

sudo systemctl restart apache2

Cache verwenden

Durch die Nutzung von Browser‑Cache und serverseitigem Cache können Sie unnötige Anfragen reduzieren und die Reaktionsgeschwindigkeit deutlich verbessern.

mod_expires aktivieren (Browser‑Cache)

sudo a2enmod expires
sudo systemctl restart apache2

Fügen Sie das Folgende zu /etc/apache2/sites-available/example.com.conf hinzu:

<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 neu starten:

sudo systemctl restart apache2

mod_cache aktivieren (Server-Cache)

sudo a2enmod cache cache_disk
sudo systemctl restart apache2

Das Folgende zu /etc/apache2/sites-available/example.com.conf hinzufügen:

<IfModule mod_cache.c>
    CacheEnable disk /
    CacheRoot /var/cache/apache2/mod_cache_disk
    CacheDefaultExpire 86400
</IfModule>

Apache neu starten:

sudo systemctl restart apache2

Komprimierung aktivieren

mod_deflate verwenden, um Website-Daten zu komprimieren und die Übertragungsgröße zu reduzieren.

mod_deflate aktivieren

sudo a2enmod deflate
sudo systemctl restart apache2

Das Folgende zu /etc/apache2/sites-available/example.com.conf hinzufügen:

<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 neu starten:

sudo systemctl restart apache2

Ressourcenbegrenzung

Um sich auf hohen Traffic oder potenziellen bösartigen Zugriff vorzubereiten, Ressourcenlimits mit Apache-Modulen setzen.

mod_ratelimit aktivieren

sudo a2enmod ratelimit
sudo systemctl restart apache2

Das Folgende zu /etc/apache2/sites-available/example.com.conf hinzufügen:

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

Apache neu starten:

sudo systemctl restart apache2

Fehlerbehebung bei Leistungsproblemen

Apache-Fehlerprotokoll überprüfen

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

Apache-Laststatus überprüfen

sudo apachectl status

CPU- und Speicherverbrauch überprüfen

top

oder

htop

Wenn htop nicht installiert ist:

sudo apt install htop

Zusammenfassung

Dieser Abschnitt hat erklärt, wie man die Leistung des Webservers optimiert.
Wichtige Erkenntnisse:

  • Apache abstimmen (MPM-Optimierung und KeepAlive-Einstellungen)
  • Cache verwenden (Browser-Cache und Server-Cache)
  • Datenkomprimierung mit mod_deflate
  • Ressourcensteuerung mit mod_ratelimit

8. Fehlerbehebung

Apache startet nicht

Wenn Apache nicht startet, ist ein Konfigurationsfehler die häufigste Ursache.

1. Fehlermeldungen überprüfen

sudo systemctl status apache2

2. Konfiguration testen

sudo apachectl configtest

Wenn die Ausgabe „Syntax error“ enthält, überprüfen Sie den Pfad oder die Einstellungen, die in der Fehlermeldung aufgeführt sind.

3. Apache neu starten

sudo systemctl restart apache2

Server nicht erreichbar

Wenn der Server im Browser nicht erreicht werden kann, überprüfen Sie die folgenden Punkte.

1. Firewall-Einstellungen überprüfen

sudo ufw status

Sorgen Sie dafür, dass die Ports 80 und 443 erlaubt sind.

2. Apache-Status überprüfen

sudo systemctl status apache2

3. Server-IP-Adresse überprüfen

hostname -I

Virtuelle Hosts funktionieren nicht

Wenn virtuelle Hosts nicht wie erwartet funktionieren, Konfiguration erneut überprüfen.

1. Bestätigen, dass Virtual-Host-Dateien aktiviert sind

ls /etc/apache2/sites-enabled/

Wenn Ihre .conf nicht aufgeführt ist, aktivieren Sie sie:

sudo a2ensite example.com.conf
sudo systemctl restart apache2

2. Hostname-Auflösung überprüfen

Beim lokalen Testen sicherstellen, dass die Datei /etc/hosts enthält:

127.0.0.1 example.com

3. DocumentRoot-Pfad überprüfen

Falsche Pfade verursachen oft Probleme mit virtuellen Hosts.

DocumentRoot /var/www/example.com/public_html

SSL-Zertifikatsprobleme

1. HTTPS funktioniert nicht

Bestätigen, dass SSL aktiviert ist:

.„` sudo apachectl -M | grep ssl

Falls nötig aktivieren:

sudo a2enmod ssl sudo systemctl restart apache2

#### 2. Zertifikat ist abgelaufen

sudo certbot renew

#### 3. Let’s Encrypt‑Validierung schlägt fehl



Die HTTP‑Validierung erfordert, dass Port 80 geöffnet ist.

sudo ufw allow 80/tcp sudo systemctl restart apache2

### Langsame Website‑Leistung



#### 1. Serverauslastung prüfen

top

#### 2. Apache‑Protokolle überprüfen

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

#### 3. Cache‑Einstellungen bestätigen



Stellen Sie sicher, dass `mod_expires`, `mod_cache` und `mod_deflate` aktiviert sind.



### Berechtigungsfehler (403 Verboten)



Dieser Fehler weist typischerweise auf falsche Datei‑ oder Verzeichnisberechtigungen hin.



#### 1. Verzeichnis‑Eigentümerschaft prüfen

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

#### 2. Verzeichnis‑Berechtigungen prüfen

sudo chmod -R 755 /var/www/example.com

### Überwachung von Fehlerprotokollen



Überwachen Sie stets Fehlerprotokolle während der Fehlersuche:

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

Zusammenfassung

Dieser Abschnitt bot Methoden zur Fehlersuche bei häufigen Problemen mit Ihrem Ubuntu‑Webserver.
Wichtige Punkte:

  • Apache‑Startfehler und Konfigurationsprüfungen
  • Firewall‑ und netzwerkbezogene Probleme
  • Probleme mit der Konfiguration virtueller Hosts
  • SSL‑Zertifikatsfehler und Erneuerungen
  • Leistungs‑ und Berechtigungs‑Fehlersuche

9. Zusammenfassung

In diesem Artikel haben wir erklärt, wie man mit Apache ein vollständiges Web‑Server‑Umfeld auf Ubuntu aufbaut, einschließlich Sicherheitsverbesserungen, Leistungsoptimierung und Fehlersuchtechniken.

Wenn Sie dieser Anleitung folgen, können Sie einen stabilen, sicheren und leistungsstarken Web‑Server betreiben, der sowohl für persönliche Projekte als auch für geschäftliche Anwendungen geeignet ist.

✔ Schlüsselthemen, die in dieser Anleitung behandelt werden

  • Ubuntu installieren und die anfängliche Systemkonfiguration durchführen
  • Apache installieren und konfigurieren
  • Virtuelle Hosts einrichten, um mehrere Websites zu verwalten
  • HTTPS aktivieren mit kostenlosen SSL‑Zertifikaten von Let’s Encrypt
  • Server‑Sicherheit verbessern (UFW, SSH‑Härtung, Apache‑Einstellungen)
  • Leistung verbessern (Caching, Kompression, MPM‑Optimierung)
  • Fehlersuche bei häufigen Problemen während des Serverbetriebs

✔ Was Sie nach Abschluss dieser Anleitung erreichen können

  • Mehrere Websites auf einem einzigen Ubuntu‑Server hosten
  • Sichere Kommunikation mit modernem SSL/TLS gewährleisten
  • Website‑Geschwindigkeit und Zuverlässigkeit mit Caching und Kompression verbessern
  • Probleme schnell diagnostizieren und beheben mithilfe von Apache‑Protokollen und Systemwerkzeugen

✔ Empfohlene nächste Schritte

  • PHP und MySQL/MariaDB installieren, um ein vollständiges LAMP‑Umfeld aufzubauen
  • WordPress oder ein anderes CMS bereitstellen
  • Automatische Backup‑Lösungen implementieren
  • Erwägen Sie die Nutzung von Cloud‑Diensten (AWS, GCP, Azure usw.)

Mit richtiger Konfiguration und Wartung kann ein Ubuntu‑Webserver langfristige Stabilität und herausragende Leistung bieten.
Wir hoffen, dass diese Anleitung Ihnen hilft, eine zuverlässige und sichere Serverumgebung aufzubauen.