Installieren des Apache-Webservers auf Debian 11
Der Apache HTTP-Server ist der am weitesten verbreitete Webserver der Welt. Er bietet viele leistungsstarke Funktionen, darunter dynamisch ladbare Module, robuste Medienunterstützung und umfangreiche Integration mit anderer beliebter Software.
In dieser Anleitung installieren Sie einen Apache-Webserver auf einem Debian 11-Server.
Voraussetzungen
Bevor Sie mit dieser Anleitung beginnen, benötigen Sie einen Debian 11-Server, der mit einem Nicht-Root-Benutzer mit sudo-Rechten und einer aktivierten Firewall eingerichtet ist, um nicht wesentliche Ports zu blockieren.
Sobald Sie dies eingerichtet haben, melden Sie sich als Nicht-Root-Benutzer an und fahren Sie mit dem ersten Schritt fort.
Schritt 1 — Installation von Apache
Apache ist in den Standard-Software-Repositories von Debian verfügbar, sodass es mit herkömmlichen Paketverwaltungstools installiert werden kann.
Beginnen Sie damit, die lokale Paketliste zu aktualisieren, um die neuesten Änderungen des Upstreams widerzuspiegeln:
sudo apt update
Installieren Sie dann das Paket apache2:
sudo apt install apache2
Nachdem Sie die Installation bestätigt haben, installiert apt Apache und alle erforderlichen Abhängigkeiten.
Schritt 2 — Anpassen der Firewall
Bevor Sie Apache testen, müssen Sie die Firewall-Einstellungen anpassen, um den Zugriff von außen auf die Standard-Webports zu ermöglichen. Wenn Sie den Anweisungen in den Voraussetzungen gefolgt sind, sollten Sie eine UFW-Firewall eingerichtet haben, um den Zugriff auf Ihren Server zu beschränken.
Während der Installation registriert sich Apache bei UFW, um einige Anwendungsprofile bereitzustellen, die verwendet werden können, um den Zugriff auf Apache über die Firewall zu aktivieren oder zu deaktivieren.
Listen Sie die UFW-Anwendungsprofile auf, indem Sie den folgenden Befehl ausführen:
sudo ufw app list
Ihre Ausgabe wird eine Liste der Anwendungsprofile sein:
Verfügbare Anwendungen:
AIM
Bonjour
CIFS
...
WWW
WWW Cache
WWW Full
WWW Secure
...
Die Apache-Profile beginnen mit WWW:
- WWW: Öffnet nur Port 80 (normaler, unverschlüsselter Webverkehr)
- WWW Cache: Öffnet nur Port 8080 (manchmal für Caching und Webproxies verwendet)
- WWW Full: Öffnet sowohl Port 80 (normaler, unverschlüsselter Webverkehr) als auch Port 443 (TLS/SSL-verschlüsselter Verkehr)
- WWW Secure: Öffnet nur Port 443 (TLS/SSL-verschlüsselter Verkehr)
Da Sie in dieser Anleitung noch kein SSL für Ihren Server konfiguriert haben, müssen Sie nur den Verkehr auf Port 80 zulassen:
sudo ufw allow 'WWW'
Sie können die Änderung überprüfen, indem Sie den Status überprüfen:
sudo ufw status
Die Ausgabe zeigt eine Liste des erlaubten HTTP-Verkehrs:
Status: aktiv
Zu Aktion Von
-- ------ ----
OpenSSH ERLAUBEN Überall
WWW ERLAUBEN Überall
OpenSSH (v6) ERLAUBEN Überall (v6)
WWW (v6) ERLAUBEN Überall (v6)
Wie die Ausgabe zeigt, wurde das Profil aktiviert, um den Zugriff auf den Apache-Webserver zu ermöglichen.
Schritt 3 — Überprüfen Ihres Webservers
Am Ende des Installationsprozesses startet Debian 11 Apache. Der Webserver sollte bereits aktiv und funktionsfähig sein.
Stellen Sie sicher, dass der Dienst aktiv ist, indem Sie den folgenden Befehl für das systemd-Init-System ausführen:
sudo systemctl status apache2
Ausgabe:
● apache2.service - The Apache HTTP Server
Loaded: loaded (/lib/systemd/system/apache2.service; enabled; vendor prese>
Active: active (running) since Wed 2022-07-06 22:05:45 UTC; 23s ago
Docs: https://httpd.apache.org/docs/2.4/
Main PID: 2796 (apache2)
Tasks: 55 (limit: 9509)
Memory: 21.0M
CPU: 67ms
CGroup: /system.slice/apache2.service
├─2796 /usr/sbin/apache2 -k start
├─2798 /usr/sbin/apache2 -k start
└─2799 /usr/sbin/apache2 -k start
Diese Ausgabe bestätigt, dass der Dienst erfolgreich gestartet wurde. Die beste Möglichkeit, dies zu testen, besteht jedoch darin, eine Seite von Apache anzufordern.
Sie können die Standard-Apache-Startseite aufrufen, um zu bestätigen, dass die Software ordnungsgemäß läuft, indem Sie die IP-Adresse Ihres Servers verwenden. Wenn Sie die IP-Adresse Ihres Servers nicht kennen, können Sie diese auf verschiedene Arten über die Befehlszeile abrufen.
Versuchen Sie, den folgenden Befehl in der Befehlszeile Ihres Servers einzugeben:
hostname -I
Sie erhalten eine Liste von Adressen, die durch Leerzeichen getrennt sind. Sie können jede dieser Adressen in Ihrem Webbrowser ausprobieren, um festzustellen, ob sie funktioniert.
Eine andere Möglichkeit ist die Verwendung des Tools icanhazip.com, einer Website, die beim Aufrufen die öffentliche IP-Adresse Ihrer Maschine zurückgibt, wie sie von einem anderen Ort im Internet aus gelesen wird. Wenn curl
nicht bereits installiert ist, können Sie es mit folgendem Befehl installieren:
sudo apt install curl
Verwenden Sie anschließend curl
, um icanhazip.com unter Verwendung von IPv4 abzurufen:
curl -4 icanhazip.com
Nachdem Sie die IP-Adresse Ihres Servers erhalten haben, geben Sie diese in die Adressleiste Ihres Browsers ein:
http://your_server_ip
Sie sollten die Standardseite von Debian 11 Apache sehen:
Standard-Apache-Seite
Diese Seite zeigt an, dass Apache korrekt funktioniert. Sie enthält auch einige grundlegende Informationen über wichtige Apache-Dateien und Verzeichnisstandorte.
Schritt 4 — Verwalten des Apache-Prozesses
Nachdem Ihr Webserver nun läuft, überprüfen wir einige grundlegende Verwaltungsbefehle mit systemctl
.
Um Ihren Webserver zu stoppen, führen Sie aus:
sudo systemctl stop apache2
Zum starten des Webservers, wenn er gestoppt ist, führen Sie folgendes aus:
sudo systemctl start apache2
Um den Dienst zu stoppen und anschließend erneut zu starten, führen Sie aus:
sudo systemctl restart apache2
Wenn Sie nur Konfigurationsänderungen vornehmen, kann Apache oft neu geladen werden, ohne Verbindungen zu unterbrechen. Verwenden Sie dazu den folgenden Befehl:
sudo systemctl reload apache2
Standardmäßig ist Apache so konfiguriert, dass es beim Serverstart automatisch gestartet wird. Wenn dies nicht gewünscht ist, deaktivieren Sie dieses Verhalten mit folgendem Befehl:
sudo systemctl disable apache2
Um den Dienst wieder zu aktivieren, damit er beim Start des Servers automatisch gestartet wird, führen Sie aus:
sudo systemctl enable apache2
Apache wird nun wieder automatisch gestartet, wenn der Server neu startet.
Schritt 5 — Einrichten von virtuellen Hosts (empfohlen)
Wenn Sie den Apache-Webserver verwenden, können Sie virtuelle Hosts (ähnlich wie Serverblöcke in Nginx) verwenden, um Konfigurationsdetails zu kapseln und mehr als eine Domain von einem einzigen Server aus zu hosten. Wir richten eine Domain namens your_domain
ein, aber Sie sollten diese durch Ihren eigenen Domainnamen ersetzen.
Apache auf Debian 11 hat standardmäßig einen Serverblock aktiviert, der so konfiguriert ist, dass er Dokumente aus dem Verzeichnis /var/www/html
bereitstellt. Während dies für eine einzelne Website gut funktioniert, kann es unübersichtlich werden, wenn Sie mehrere Websites hosten. Statt /var/www/html
zu ändern, erstellen Sie eine Verzeichnisstruktur innerhalb von /var/www
für eine your_domain
-Website und belassen /var/www/html
als Standardverzeichnis, das bereitgestellt wird, wenn eine Clientanfrage keine anderen Websites zugeordnet werden kann.
Erstellen Sie das Verzeichnis für your_domain
wie folgt:
sudo mkdir -p /var/www/your_domain
Weisen Sie als Nächstes dem aktuellen Benutzer, mit dem Sie angemeldet sind, die Besitzrechte für das Verzeichnis zu:
sudo chown -R $USER:$USER /var/www/your_domain
Die Berechtigungen Ihres Web-Root-Verzeichnisses sollten korrekt sein, wenn Sie den Standardwert für umask nicht geändert haben, der die Standarddateiberechtigungen festlegt. Um sicherzustellen, dass die Berechtigungen korrekt sind und dem Eigentümer Lese-, Schreib- und Ausführungsrechte gewährt werden, während Gruppen und andere nur Lese- und Ausführungsrechte erhalten, geben Sie folgenden Befehl ein:
sudo chmod -R 755 /var/www/your_domain
Virtuellen Host konfigurieren
Erstellen Sie anschließend eine Beispiel-index.html
-Seite mit Ihrem bevorzugten Texteditor. In diesem Beispiel verwenden wir nano:
nano /var/www/your_domain/index.html
Fügen Sie den folgenden HTML-Beispielcode in die Datei ein:
<html>
<head>
<title>Welcome to your_domain!</title>
</head>
<body>
<h1>Success! The your_domain virtual host is working!</h1>
</body>
</html>
Speichern und schließen Sie die Datei, wenn Sie fertig sind. Wenn Sie nano verwenden, können Sie dies tun, indem Sie CTRL + X
, dann Y
und ENTER
drücken.
Damit Apache diesen Inhalt bereitstellen kann, ist es erforderlich, eine virtuelle Host-Datei mit den richtigen Anweisungen zu erstellen. Anstatt die Standardkonfigurationsdatei im Verzeichnis /etc/apache2/sites-available/000-default.conf
direkt zu ändern, erstellen Sie eine neue Datei im Verzeichnis /etc/apache2/sites-available/your_domain.conf
:
sudo nano /etc/apache2/sites-available/your_domain.conf
Fügen Sie den folgenden Konfigurationsblock ein, der dem Standard ähnlich ist, jedoch für Ihr neues Verzeichnis und Ihren neuen Domainnamen aktualisiert wurde:
ServerAdmin webmaster@localhost
ServerName your_domain
ServerAlias www.your_domain
DocumentRoot /var/www/your_domain
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
Beachten Sie, dass wir DocumentRoot
auf unser neues Verzeichnis und ServerAdmin
auf eine E-Mail-Adresse aktualisiert haben, die der Administrator der Website your_domain
abrufen kann. Wir haben auch zwei Direktiven hinzugefügt: ServerName
, die die Basisdomain festlegt, die dieser Definition des virtuellen Hosts zugeordnet ist, und ServerAlias
, die zusätzliche Namen definiert, die wie der Basisname behandelt werden.
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Aktivieren Sie die Datei jetzt mit dem Tool a2ensite
:
sudo a2ensite your_domain.conf
Deaktivieren Sie die Standardseite, die in 000-default.conf
definiert ist:
sudo a2dissite 000-default.conf
Testen Sie als Nächstes die Konfiguration auf Fehler:
sudo apache2ctl configtest
Sie sollten die folgende Ausgabe erhalten:
AH00558: apache2: Could not reliably determine the server's fully qualified domain name, using 127.0.1.1. Set the 'ServerName' directive globally to suppress this message
Syntax OK
Starten Sie Apache neu, um die Änderungen zu übernehmen:
sudo systemctl restart apache2
Apache stellt jetzt Ihren Domainnamen bereit. Sie können dies testen, indem Sie zu http://your_domain
navigieren, wo Sie die angepasste Seite sehen sollten.
Schritt 6 — Wichtige Apache-Dateien und -Verzeichnisse
Nachdem Sie nun wissen, wie Sie den Apache-Dienst verwalten, sollten Sie sich mit einigen wichtigen Verzeichnissen und Dateien vertraut machen.
Inhalt
- /var/www/html: Das eigentliche Webinhaltsverzeichnis. Standardmäßig enthält es nur die Standard-Apache-Seite, die Sie zuvor gesehen haben. Dieses Verzeichnis kann geändert werden, indem Sie die Apache-Konfigurationsdateien anpassen.
Serverkonfiguration
- /etc/apache2: Das Apache-Konfigurationsverzeichnis. Alle Apache-Konfigurationsdateien befinden sich hier.
- /etc/apache2/apache2.conf: Die Hauptkonfigurationsdatei von Apache. Diese kann geändert werden, um globale Apache-Einstellungen anzupassen. Diese Datei ist dafür verantwortlich, viele andere Dateien im Konfigurationsverzeichnis zu laden.
- /etc/apache2/ports.conf: Diese Datei gibt die Ports an, auf denen Apache lauscht. Standardmäßig lauscht Apache auf Port 80 und zusätzlich auf Port 443, wenn ein Modul mit SSL-Fähigkeiten aktiviert ist.
- /etc/apache2/sites-available/: Das Verzeichnis, in dem virtuelle Hosts pro Site gespeichert werden können. Apache verwendet die Konfigurationsdateien in diesem Verzeichnis nur, wenn sie mit dem Verzeichnis
sites-enabled
verknüpft sind. In der Regel wird die gesamte Serverblockkonfiguration in diesem Verzeichnis vorgenommen und dann mit dem Befehla2ensite
aktiviert. - /etc/apache2/sites-enabled/: Das Verzeichnis, in dem aktivierte virtuelle Hosts pro Site gespeichert werden. Diese werden in der Regel erstellt, indem sie mit Konfigurationsdateien im Verzeichnis
sites-available
verknüpft werden, wobei der Befehla2ensite
verwendet wird. Apache liest die Konfigurationsdateien und Links in diesem Verzeichnis beim Start oder beim Neuladen, um eine vollständige Konfiguration zu erstellen. - /etc/apache2/conf-available/, /etc/apache2/conf-enabled/: Diese Verzeichnisse haben das gleiche Verhältnis wie
sites-available
undsites-enabled
, werden jedoch verwendet, um Konfigurationsfragmente zu speichern, die nicht zu einem virtuellen Host gehören. Dateien im Verzeichnisconf-available
können mit dem Befehla2enconf
aktiviert und mita2disconf
deaktiviert werden. - /etc/apache2/mods-available/, /etc/apache2/mods-enabled/: Diese Verzeichnisse enthalten die verfügbaren und aktivierten Module. Dateien mit der Endung
.load
enthalten Fragmente zum Laden bestimmter Module, während Dateien mit der Endung.conf
die Konfiguration für diese Module enthalten. Module können mit den Befehlena2enmod
unda2dismod
aktiviert und deaktiviert werden.
Serverprotokolle
- /var/log/apache2/access.log: Standardmäßig wird jede Anfrage an Ihren Webserver in dieser Protokolldatei aufgezeichnet, es sei denn, Apache ist anders konfiguriert.
- /var/log/apache2/error.log: Standardmäßig werden alle Fehler in dieser Datei aufgezeichnet. Die
LogLevel
-Direktive in der Apache-Konfiguration legt fest, wie detailliert die Fehlerprotokolle sein sollen.
Fazit
Jetzt, da Sie Ihren Webserver installiert haben, stehen Ihnen viele Optionen für die Art der Inhalte zur Verfügung, die Sie bereitstellen möchten, sowie für die Technologien, die Sie verwenden können, um ein reichhaltigeres Erlebnis zu schaffen.
Apache ist ein äußerst flexibler und leistungsstarker Webserver, der sich an Ihre spezifischen Anforderungen anpassen lässt. Experimentieren Sie mit virtuellen Hosts, Modulen und anderen Funktionen, um die Funktionalität Ihrer Website zu erweitern.