Apache auf Ubuntu 20.04 installieren und konfigurieren
Apache ist ein kostenloser, quelloffener Webserver, der sowohl statische als auch dynamische Anwendungen bereitstellen kann. Er bietet eine äußerst flexible Architektur mit zahlreichen modularen Erweiterungen und kann zudem als Reverse Proxy oder Load Balancer agieren, um Webanwendungen oder Backend-Dienste auszuliefern.
Diese Anleitung zeigt, wie Sie Apache auf Ubuntu 20.04 installieren und so konfigurieren, dass Webanwendungen über virtuelle Hosts sicher bereitgestellt werden.
Voraussetzungen
- Ein Server mit Ubuntu 20.04
- Ein A-Record für Ihre Domain, der auf die IP-Adresse des Servers verweist
- SSH-Zugang zum Server als Nicht-Root-Benutzer mit sudo-Rechten
- Sicherstellen, dass der Server aktuell ist
Apache installieren
Das Apache-Paket ist in den Standard-Repositories von Ubuntu 20.04 enthalten. Folgen Sie diesen Schritten, um die neueste Version mit dem APT-Paketmanager zu installieren und Apache so einzurichten, dass es beim Systemstart automatisch ausgeführt wird.
Paketindex des Servers aktualisieren
$ sudo apt update
Apache-Webserver-Paket installieren
$ sudo apt install apache2 -y
Installierte Apache-Version prüfen
$ apachectl -v
Beispielausgabe:
Server version: Apache/2.4.41 (Ubuntu)
Server built: 2024-07-17T18:58:09
HTTP-Verkehr durch die Firewall erlauben
$ sudo ufw allow 80/tcp
Öffnen Sie anschließend die öffentliche IP-Adresse Ihres Servers in einem Browser (z. B. Chrome), um zu überprüfen, ob die standardmäßige Apache-Willkommensseite angezeigt wird.
Apache-Systemdienst verwalten
Das Apache-Serviceprofil steuert die Laufzeitprozesse des Webservers. Verwenden Sie die folgenden Befehle, um Apache so zu konfigurieren, dass es beim Booten startet, und um den Dienststatus zu prüfen oder zu steuern.
Apache beim Systemstart aktivieren
$ sudo systemctl enable apache2
Beispielausgabe:
Synchronizing state of apache2.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable apache2
Apache-Dienst starten
$ sudo systemctl start apache2
Status des Apache-Dienstes prüfen
$ 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 Sun 2025-04-06 08:30:18 UTC; 3min 26s ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 3588 (apache2)
Tasks: 55 (limit: 9415)
Memory: 7.0M
CGroup: /system.slice/apache2.service
├─3588 /usr/sbin/apache2 -k start
├─3589 /usr/sbin/apache2 -k start
└─3590 /usr/sbin/apache2 -k start
Apache-Dienst stoppen
$ sudo systemctl stop apache2
Apache neu starten
$ sudo systemctl restart apache2
Neuen Apache Virtual Host erstellen
Apache verwendet virtuelle Hosts, um Anwendungen bereitzustellen. Standardmäßig lauscht ein virtueller Host auf allen IP-Adressen über den HTTP-Port 80. Im Folgenden wird beschrieben, wie Sie den Standard-Host deaktivieren und einen eigenen virtuellen Host für Ihre Domain einrichten.
Konfigurationsdatei erstellen
$ sudo nano /etc/apache2/sites-available/website.conf
Fügen Sie folgenden Inhalt ein und ersetzen Sie app.example.com durch Ihre Domain und webmaster@example.com durch die E-Mail-Adresse des Administrators:
ServerAdmin webmaster@example.com
ServerName app.example.com
DocumentRoot /var/www/html/website
DirectoryIndex index.html index.php
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
Diese Konfiguration liefert Dateien aus /var/www/html/website über die Domain app.example.com. Wichtige Direktiven:
<VirtualHost *:80>: Lauscht auf Port 80ServerAdmin: Administrator-E-Mail für FehlermeldungenServerName: Domainname für den virtuellen HostDocumentRoot: Verzeichnis, aus dem die Anwendungsdateien bereitgestellt werdenDirectoryIndex: Standarddatei, die ausgeliefert wird (z. B. index.html)ErrorLogundCustomLog: Speicherorte der Logdateien<Directory /var/www/html/website>: Einstellungen für das Webroot-VerzeichnisOptions Indexes FollowSymLinks: Aktiviert Verzeichnisauflistung und symbolische LinksAllowOverride All: Erlaubt .htaccess-OverridesRequire all granted: Gewährt allen Benutzern Zugriff
Standard-Virtual-Host deaktivieren
$ sudo a2dissite 000-default
Neuen Virtual Host aktivieren
$ sudo a2ensite website
Webroot-Verzeichnis erstellen
$ sudo mkdir -p /var/www/html/website
Apache-Konfiguration testen
$ sudo apachectl configtest
Erwartete Ausgabe: Syntax OK
Beispielseite index.html anlegen
$ sudo nano /var/www/html/website/index.html
Fügen Sie folgenden HTML-Code ein:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Apache Web Server</title>
</head>
<body>
<h1>Greetings from centron</h1>
</body>
</html>
Diese Seite zeigt beim Aufruf Ihrer Domain die Meldung „Greetings from centron“ an.
Besitzrechte für das Webroot-Verzeichnis setzen
$ sudo chown -R www-data:www-data /var/www/html/website
Apache neu starten, um Änderungen zu übernehmen
$ sudo systemctl restart apache2
Apache-Webserver absichern
Standardmäßig lauscht Apache auf Port 80, wodurch Daten zwischen Server und Browser unverschlüsselt übertragen werden. HTTPS ermöglicht eine verschlüsselte Kommunikation mithilfe gültiger SSL-Zertifikate, die den Webserver gegenüber dem Browser authentifizieren. Gehen Sie wie folgt vor, um Apache mit vertrauenswürdigen Let’s Encrypt SSL-Zertifikaten abzusichern und sämtlichen HTTP-Verkehr automatisch auf HTTPS umzuleiten.
Certbot-Client installieren
Installieren Sie den Certbot-Client für Let’s Encrypt über den Snap-Paketmanager.
$ sudo snap install certbot --classic
Neues SSL-Zertifikat anfordern
Fordern Sie ein Let’s Encrypt SSL-Zertifikat für Ihre Virtual-Host-Domain an. Ersetzen Sie app.example.com durch Ihre Domain und hello@example.com durch Ihre E-Mail-Adresse.
$ sudo certbot --apache --agree-tos --redirect -d app.example.com -m hello@example.com
Bei erfolgreicher Ausführung sehen Sie eine Ausgabe ähnlich der folgenden:
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/app.example.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/app.example.com/privkey.pem
This certificate expires on 2025-07-05.
These files will be updated when the certificate renews.
Certbot has set up a scheduled task to automatically renew this certificate in the background.
Deploying certificate
Successfully deployed certificate for app.example.com to /etc/apache2/sites-available/website-le-ssl.conf
Congratulations! You have successfully enabled HTTPS on https://app.example.com
SSL-Erneuerung testen
Überprüfen Sie den automatischen Erneuerungsprozess mit einem Testlauf.
$ sudo certbot renew --dry-run
Beispielausgabe:
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Processing /etc/letsencrypt/renewal/app.example.com.conf
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Account registered.
Simulating renewal of an existing certificate for app.example.com
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Congratulations, all simulated renewals succeeded:
/etc/letsencrypt/live/app.example.com/fullchain.pem (success)
– – – – – – – – – – – – – – – – – – – – – – – – – – – – – – – –
Apache neu starten, um SSL-Änderungen zu übernehmen
$ sudo systemctl restart apache2
Firewall-Regeln einrichten
Auf Ubuntu 20.04-Servern kann die Uncomplicated Firewall (UFW) aktiviert werden. Konfigurieren Sie UFW so, dass Netzwerkverbindungen über das Apache-Firewall-Profil zugelassen werden.
Verfügbare UFW-Profile anzeigen
$ sudo ufw app list
Sie sollten Profile ähnlich der folgenden sehen:
Apache
Apache Full
Apache Secure
OpenSSH
Apache Full-Profil erlauben
Dadurch werden sowohl HTTP (Port 80) als auch HTTPS (Port 443) Verbindungen durch die Firewall ermöglicht.
$ sudo ufw allow 'Apache Full'
Firewall neu laden
$ sudo ufw reload
Firewall-Status prüfen
$ sudo ufw status
Beispielausgabe:
To Action From
— —— —-
22/tcp ALLOW Anywhere
Apache Full ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
Apache Full (v6) ALLOW Anywhere (v6)
Öffnen Sie abschließend Ihre Virtual-Host-Domain https://app.example.com in einem Browser und prüfen Sie, ob Apache Ihre HTML-Anwendung mit der Meldung „Greetings from centron“ ausliefert.
Fazit
Sie haben erfolgreich den Apache-Webserver auf Ihrem Ubuntu 20.04-Server installiert. Apache ermöglicht das Hosting statischer Webseiten und die Integration mit dynamischen Inhaltsprozessoren wie PHP, um moderne Anwendungen wie WordPress bereitzustellen. Darüber hinaus können Sie Apache mithilfe des Moduls mod_proxy als Reverse Proxy konfigurieren, um Backend-Dienste sicher auszuliefern.


