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

Apache-Webserver-Paket installieren

$ sudo apt install apache2 -y

Installierte Apache-Version prüfen

Beispielausgabe:

Server version: Apache/2.4.41 (Ubuntu)
Server built: 2024-07-17T18:58:09

HTTP-Verkehr durch die Firewall erlauben

Ö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 80
  • ServerAdmin: Administrator-E-Mail für Fehlermeldungen
  • ServerName: Domainname für den virtuellen Host
  • DocumentRoot: Verzeichnis, aus dem die Anwendungsdateien bereitgestellt werden
  • DirectoryIndex: Standarddatei, die ausgeliefert wird (z. B. index.html)
  • ErrorLog und CustomLog: Speicherorte der Logdateien
  • <Directory /var/www/html/website>: Einstellungen für das Webroot-Verzeichnis
  • Options Indexes FollowSymLinks: Aktiviert Verzeichnisauflistung und symbolische Links
  • AllowOverride All: Erlaubt .htaccess-Overrides
  • Require all granted: Gewährt allen Benutzern Zugriff

Standard-Virtual-Host deaktivieren

$ sudo a2dissite 000-default

Neuen Virtual Host aktivieren

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

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

Firewall-Status prüfen

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.

Quelle: vultr.com

Jetzt 200€ Guthaben sichern

Registrieren Sie sich jetzt in unserer ccloud³ und erhalten Sie 200€ Startguthaben für Ihr Projekt.

Das könnte Sie auch interessieren:

Moderne Hosting Services mit Cloud Server, Managed Server und skalierbarem Cloud Hosting für professionelle IT-Infrastrukturen

Passbolt auf Linux installieren & sicher konfigurieren

Security, Tutorial
Passbolt auf Linux-Distributionen installieren und einrichten Passbolt ist ein Open-Source-Passwortmanager, der die sichere Speicherung und Verwaltung von Passwörtern sowie sensiblen Daten mit Ende-zu-Ende-Verschlüsselung ermöglicht. Er funktioniert hauptsächlich als Browser-Erweiterung für…