Ein Webserver speichert, verarbeitet und liefert Webseiten an Website-Besucher aus. Es gibt eine ganze Reihe von Open-Source-Webserver-Softwareoptionen, aber der Apache-HTTP-Server gilt als der am weitesten verbreitete Webserver der Welt. Das liegt daran, dass seine modulare Architektur nicht nur Open-Source ist, sondern es auch ermöglicht, seine Funktionen durch das Hinzufügen von Modulen für verschiedene Zwecke zu erweitern. Dadurch ist der Webserver extrem robust.
Wenn Sie Apache auf einem CentOS 7-System installieren möchten, ist diese Anleitung genau richtig für Sie. Darüber hinaus erfahren Sie, wie Sie virtuelle Hosts erstellen, um mehrere Websites auf einem unter CentOS laufenden Apache-HTTP-Server zu betreiben.
Dies ist eine ausführliche Anleitung, die sich ausschließlich auf die Apache-Installation konzentriert. Wenn Sie nach einer stichpunktartigen Anleitung für den LAMP-Stack gesucht haben, finden Sie diese in unserem Leitfaden So installieren Sie Linux, Apache, MySQL, PHP (LAMP) auf CentOS 7, den Sie sich ansehen können. Und nun lassen Sie uns beginnen!
Voraussetzungen
Da es sich um eine praktische Anleitung handelt, sollten Sie Folgendes mitbringen:
- Einen Server mit CentOS 7. Sie können in wenigen einfachen Schritten über diesen Link einen auf CloudSigma erstellen.
- Konfigurieren Sie einen Nicht-Root-Benutzer mit sudo-Rechten auf Ihrem Server. Melden Sie sich dann mit diesem Benutzer an.
- Konfigurieren Sie eine einfache Firewall, indem Sie den Schritten in unserer Anleitung zu Einrichten einer Firewall mit FirewallD auf CentOS 7.
Schritt 1: Installieren des Apache-HTTP-Servers
Apache ist in den Standard-Repositories von CentOS enthalten. Daher ist die Installation mit dem Paketmanager yum denkbar einfach. Wie im Abschnitt „Voraussetzungen“ beschrieben, müssen Sie als Nicht-Root-Benutzer angemeldet sein. Führen Sie den folgenden Befehl in Ihrem Terminal aus, um den lokalen Apache-httpd-Paketindex zu aktualisieren:
|
1 |
sudo yum update httpd |
Sobald die Pakete aktualisiert sind, geben Sie den folgenden Befehl ein, um Apache zu installieren:
|
1 |
sudo yum install httpd |
Bestätigen Sie die Installation und warten Sie, bis yum Apache und die erforderlichen Abhängigkeiten installiert hat.
Wenn Sie die Schritte in der Anleitung zum Einrichten einer Firewall mit FirewallD auf CentOS 7 befolgt und die Firewall für Port 80 aktiviert haben, kann es losgehen. Firewalld ist der Firewall-Manager für CentOS. Andernfalls können Sie den http-Dienst (Port 80) von firewalld aktivieren, indem Sie den folgenden Befehl eingeben:
|
1 |
sudo firewall-cmd --permanent --add-service=http |
Wenn Sie den Datenverkehr über sicheres HTTPS abwickeln möchten, können Sie den https-Dienst (Port 443) von firewalld aktivieren, indem Sie den folgenden Befehl eingeben:
|
1 |
sudo firewall-cmd --permanent --add-service=https |
Schließlich müssen Sie firewalld neu laden, damit die Änderungen wirksam werden. Hier ist der Befehl zum Neuladen:
|
1 |
sudo firewall-cmd –reload |
Zu diesem Zeitpunkt haben Sie Apache installiert und so konfiguriert, dass er Datenverkehr über HTTP oder HTTPS (je nachdem, ob Sie die obigen Befehle ausgeführt haben) verarbeitet.
Schritt 2: Bestätigen, dass der Apache-Webserver läuft
Unter CentOS startet der Apache-Prozess nach der Installation nicht automatisch. Um Apache manuell zu starten, geben Sie den folgenden Befehl ein:
|
1 |
sudo systemctl start httpd |
Um zu überprüfen, ob der Dienst erfolgreich gestartet wurde, kontrollieren Sie den Status mit dem folgenden Befehl:
|
1 |
sudo systemctl status httpd |
Wenn der Dienst läuft, sollten Sie eine Ausgabe sehen, die dem folgenden Screenshot ähnelt. Beachten Sie den aktiven Status:

Die Ausgabe zeigt, dass der Dienst erfolgreich gestartet wurde und läuft. Als Nächstes müssen wir testen, ob Apache eine Seite für Internetnutzer bereitstellen kann. Apache wird mit einer Standardseite ausgeliefert, mit der Sie testen können, ob Ihr Server über das Internet erreichbar ist.
Sie müssen die öffentliche IP-Adresse Ihres Servers herausfinden, falls Sie diese noch nicht kennen. Diese IP-Adresse geben Sie in die Adresszeile Ihres Browsers ein, um die Standard-Apache-Webseite aufzurufen. Sie können die Netzwerkadressen des Hosts anzeigen lassen, indem Sie den folgenden Befehl eingeben:
|
1 |
hostname –I |
Aus der Liste der Adressen, die Sie erhalten, können Sie jede in Ihrem Browser ausprobieren, um zu bestätigen, dass sie funktioniert. Optional können Sie curl um Ihre IP-Adresse abzurufen von icanhazip.com. Der folgende Befehl gibt Ihre öffentliche IP-Adresse aus, wie sie von einem Computer an einem anderen Internetstandort aus gesehen wird:
|
1 |
curl -4 icanhazip.com |
Sobald Sie die öffentliche IP-Adresse Ihres Servers haben, kopieren Sie sie und fügen Sie sie in die Adressleiste Ihres Browsers ein:
|
1 |
http://your_server_public_ip |
Ihr Browser sollte die Standard-CentOS 7 Apache-Webseite laden:

Wenn Sie die Standard-Apache-Webseite laden konnten, bedeutet dies, dass Ihr Server ordnungsgemäß funktioniert. Wenn Sie nach unten scrollen, sehen Sie einige grundlegende Informationen über Apache-Dateien und Verzeichnisstrukturen. Sobald der Dienst installiert ist und ordnungsgemäß funktioniert, sollten Sie in der Lage sein, die verschiedenen systemctl-Befehle zu verwenden, um den Dienst zu verwalten.
Schritt 3: Verwalten des Apache-Dienstes
In diesem Abschnitt zeigen wir Ihnen einige grundlegende Befehle zur Apache-Verwaltung. Hier ist der Befehl, der den Webserver stoppt:
|
1 |
sudo systemctl stop httpd |
Hier ist der Befehl zum Starten des Webservers:
|
1 |
sudo systemctl start httpd |
Als Nächstes folgt der Befehl zum Neustarten des Webservers (Stoppen und Starten):
|
1 |
sudo systemctl restart httpd |
Danach zeigen wir Ihnen den Befehl zum Neuladen des Apache-Dienstes. Dieser Befehl ist erforderlich, wenn Sie lediglich Konfigurationsänderungen vornehmen. Durch das Neuladen übernimmt der Apache-Prozess die Konfigurationsänderungen, ohne Verbindungen zu trennen, wie es bei einem Neustart der Fall gewesen wäre:
|
1 |
sudo systemctl reload httpd |
Gemäß den Standardkonfigurationen startet Apache automatisch beim Booten des Servers. Wenn Sie dieses Verhalten ändern möchten, ist hier der Befehl, um den automatischen Start des Dienstes beim Booten zu deaktivieren:
|
1 |
sudo systemctl disable httpd |
Um den automatischen Start beim Booten wieder zu aktivieren, geben Sie folgenden Befehl ein:
|
1 |
sudo systemctl enable httpd |
Schritt 4: Einrichten von virtuellen Apache-Hosts
Standardmäßig ist Apache so konfiguriert, dass er eine einzelne Website hostet und bereitstellt. In den meisten Fällen möchten Sie jedoch, dass Ihr Webserver mehrere Websites bereitstellt und hostet. Beispielsweise haben Sie möglicherweise Subdomains oder möchten eine Blog-Seite für Ihre Haupt-Unternehmens-/Organisations-Website einrichten. Hier kommen virtuelle Apache-Hosts ins Spiel. Virtuelle Apache-Hosts ermöglichen es Ihnen, Ihren Webserver so zu konfigurieren, dass er mehrere Websites bereitstellt. Virtuelle Apache-Hosts sind das Äquivalent zu Server-Blöcken im Nginx-Server.
In diesem Tutorial zeigen wir Ihnen, wie Sie einen virtuellen Host erstellen, indem wir example.com als unsere Domain verwenden. Natürlich wird die Domain example.com im Internet nicht funktionieren, daher sollten Sie sie durch Ihre tatsächliche Domain ersetzen – die Schritte sind dieselben.
Wenn Sie Apache auf CentOS installieren, wird ein virtueller Host installiert, der so konfiguriert ist, dass er Inhalte aus dem Verzeichnis /var/www/html bereitstellt. Dieses Design funktioniert gut, wenn Sie eine einzelne Website hosten. Wir möchten jedoch in der Lage sein, mehrere Websites zu hosten. Wir belassen das Standardverzeichnis /var/www/html und erstellen stattdessen ein weiteres Verzeichnis für die Domain example.com innerhalb des Pfads /var/www. Der Grund für das Beibehalten des Standardverzeichnisses ist, dass dieses aufgerufen wird, wenn Client-Anfragen mit keiner anderen von Ihnen konfigurierten Website mit virtuellen Hosts übereinstimmen. Wenn Sie außerdem Ihre erstellten virtuellen Hosts deaktivieren möchten, bleibt der Standard bestehen, um den Datenverkehr zu bedienen.
Erstellen Sie zuerst ein Verzeichnis innerhalb von /var/www für Ihren Domainnamen. Es steht Ihnen frei, einen Namen Ihrer Wahl zu wählen. Es wird jedoch empfohlen, einen Namen zu wählen, der Ihrer Domain ähnelt, damit Sie sich beim Erstellen der virtuellen Host-Datei conf leichter daran erinnern können. Geben Sie den folgenden Befehl ein, um das Beispielverzeichnis zu erstellen:
|
1 |
sudo mkdir -p /var/www/example |
Geben Sie den folgenden Befehl ein, um einen zusätzlichen Ordner zu erstellen, der die Logdateien für die Website enthält:
|
1 |
sudo mkdir -p /var/www/example/log |
Sobald Ihre Website-Verzeichnisse eingerichtet sind, weisen Sie dem Verzeichnis die Eigentumsrechte mit der Umgebungsvariablen $USER unter Verwendung des folgenden Befehls zu:
|
1 |
sudo chown -R $USER:$USER /var/www/example |
Führen Sie den folgenden Befehl aus, um sicherzustellen, dass Ihr Web-Root-Verzeichnis über die Standardberechtigungen verfügt:
|
1 |
sudo chmod -R 755 /var/www |
Erstellen Sie nun eine einfache index.html-Seite mit nano im Verzeichnis example, indem Sie den folgenden Befehl eingeben:
|
1 |
sudo nano /var/www/example/index.html |
Fügen Sie im nano-Editor das folgende HTML-Code-Snippet hinzu:
|
1 2 3 4 5 6 7 8 |
<html> <head> <title>Willkommen bei Example.com!</title> </head> <body> <h1>Wenn Sie können sehen diese Nachricht, es bedeutet <em>example.com</em> virtueller Host ist aktiv!</h1> </body> </html> |
Wenn Sie fertig sind, speichern Sie die Datei, indem Sie Strg O drücken und anschließend ENTER drücken. Sie können den Editor nun schließen, indem Sie Strg X.
Bisher haben wir Ihr Website-Verzeichnis und eine einfache Webseite, um den virtuellen Host zu testen. Als Nächstes möchten wir die Konfigurationsdateien für den virtuellen Host erstellen. Virtuelle Host-Dateien legen die Konfigurationen der verschiedenen Websites fest, die Sie auf einem einzigen Apache-Server hosten möchten. Sie leiten die Anfragen für den festgelegten Domainnamen an das entsprechende Verzeichnis weiter.
Virtuelle Host-Dateien werden im Verzeichnis /etc/httpd/sites-available gespeichert. Die aktivierten virtuellen Host-Dateien werden symbolisch aus dem Verzeichnis /etc/httpd/sites-available in das Verzeichnis /etc/httpd/sites-enabled verlinkt. Diese beiden Verzeichnisse werden in CentOS standardmäßig nicht erstellt, daher müssen Sie sie selbst anlegen. Geben Sie den folgenden Befehl ein, um die Verzeichnisse zu erstellen:
|
1 |
sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled |
Sobald die Verzeichnisse vorhanden sind, weisen Sie Apache an, im Verzeichnis „sites-enabled“ nach virtuellen Hosts zu suchen. Dies tun Sie, indem Sie die Hauptkonfigurationsdatei für Apache ändern. Geben Sie den folgenden Befehl ein, um die Datei im nano-Editor zu öffnen:
|
1 |
sudo nano /etc/httpd/conf/httpd.conf |
Wir möchten eine Zeile hinzufügen, die Apache anweist, nach zusätzlichen Konfigurationsdateien in einem optionalen Verzeichnis zu suchen. Scrollen Sie ganz nach unten in der Datei und fügen Sie am Ende die folgende Zeile hinzu:
|
1 |
IncludeOptional sites-enabled/*.conf |
Speichern Sie die Datei, indem Sie Strg O drücken und anschließend ENTER drücken. Sie können den Editor nun schließen, indem Sie Strg X drücken. Der nächste Schritt besteht darin, die virtuelle Host-Datei im Verzeichnis „sites-available“ zu erstellen. Geben Sie den folgenden Befehl ein, um die neue Datei zu erstellen und mit dem nano-Editor zu öffnen:
|
1 |
sudo nano /etc/httpd/sites-available/example.conf |
Fügen Sie in der geöffneten Datei den folgenden Konfigurationsblock hinzu. Denken Sie daran, unser example.com durch Ihren tatsächlichen Domainnamen zu ersetzen, und falls Sie einen anderen Verzeichnisnamen in /var/www/example verwendet haben, diesen ebenfalls entsprechend anzupassen:
|
1 2 3 4 5 6 7 |
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example ErrorLog /var/www/example/log/error.log CustomLog /var/www/example/log/requests.log combined </VirtualHost> |
Wie Sie sehen können, haben wir den Domainnamen und das Dokumenten-Root-Verzeichnis angegeben, in dem die für diese Domain bereitzustellenden Dateien zu finden sind. Wir haben auch den Speicherort des Fehlerprotokolls (Error Log) angegeben – dies wird Ihnen bei der Fehlerbehebung auf dem Server helfen.
Sobald wir unsere virtuelle Host-Datei im Verzeichnis sites-available haben, besteht der nächste Schritt darin, die Datei zu aktivieren, indem wir einen symbolischen Link zum Verzeichnis sites-enabled erstellen. Geben Sie den folgenden Befehl ein, um den symbolischen Link zu erstellen:
|
1 |
sudo ln -s /etc/httpd/sites-available/example.conf /etc/httpd/sites-enabled/example.conf |
Wenn Sie die Schritte bis zu diesem Punkt befolgt haben, sollte Ihr virtueller Host nun bereit sein, Ihre Website-Inhalte bereitzustellen. Es gibt jedoch noch eine weitere Prüfung, die Sie konfigurieren müssen, bevor die virtuellen Hosts funktionieren. Das werden wir als Nächstes behandeln.
Schritt 5: SELinux-Berechtigungen anpassen, um virtuelle Hosts zuzulassen
Linux-Distributionen einschließlich Fedora, RHEL und CentOS sind standardmäßig mit SELinux ausgestattet. SELinux (Security Enhanced Linux) ist eine Sicherheitsarchitektur für Linux-Systeme, die einschränkt und definiert, wie ein Server Anfragen verarbeiten soll und wie Benutzer mit Sockets, Netzwerkports und wichtigen Verzeichnissen interagieren sollen.
Standardmäßig funktioniert SELinux mit der Standard-Apache-Konfiguration. Bei dem von Ihnen erstellten benutzerdefinierten virtuellen Host, einschließlich eines benutzerdefinierten Protokollverzeichnisses, wird jedoch ein Dienstfehler ausgegeben, wenn Sie versuchen, den Apache-Dienst neu zu starten. Die Lösung besteht darin, die SELinux-Richtlinien so zu ändern, dass der Apache-Dienst in die erforderlichen Dateien schreiben darf.
SELinux macht CentOS zu einem hochsicheren Server. Daher empfehlen wir nicht, es vollständig zu deaktivieren. Da SELinux es Ihnen ermöglicht, Ihre Sicherheitsstufe auf verschiedene Weise anzupassen, wird empfohlen, Richtlinien nur basierend auf den Anforderungen Ihrer Umgebung zu aktualisieren oder festzulegen.
Sie haben zwei Möglichkeiten, die Apache-Richtlinien zu aktualisieren: entweder Universell oder pro spezifischem Verzeichnis. Das Aktualisieren von Richtlinien für ein bestimmtes Verzeichnis ist sicherer. Daher ist dies die empfohlene Option.
-
Apache-Richtlinien universell aktualisieren
Sie können die Apache-Richtlinie universell ändern, was SELinux anweist, alle Apache-Prozesse identisch zu behandeln, indem Sie den Boolean-Wert httpd_unified verwenden. Denken Sie daran, dass eine universelle Änderung der Apache-Richtlinien Ihnen nicht das gleiche Maß an Kontrolle bietet wie die spezifische Behandlung jedes Verzeichnisses. Es ist jedoch bequemer, wenn es um die Wartung geht. Führen Sie den folgenden Befehl aus, um die Apache-Richtlinien universell zu aktualisieren:
|
1 |
sudo setsebool -P httpd_unified 1 |
Definieren wir, was die Werte in diesem Befehl bewirken:
- setsebool – aktualisiert die Boolean-Werte von SELinux.
- -P Flag – aktualisiert den Wert für die Startzeit, sodass diese Änderung auch nach Neustarts bestehen bleibt.
- httpd_unified – der Boolean-Wert, der SELinux anweist, alle Apache-Prozesse als denselben Typ zu behandeln. Die Verwendung des Werts 1 aktiviert ihn.
-
Anpassen von Apache-Richtlinien für ein Verzeichnis
Wenn Sie mehr Kontrolle über Verzeichnisse wünschen, ist das Anpassen der Apache-Richtlinien pro Verzeichnis der richtige Weg. Dies ist jedoch mit dem Mehraufwand einer intensiveren Wartung verbunden. Dies liegt daran, dass die Richtlinie nicht global ist. Daher müssen Sie den Kontexttyp für alle neuen Protokollverzeichnisse, die Sie in Ihren Konfigurationsdateien für virtuelle Hosts angeben, manuell festlegen.
Überprüfen Sie vor dem Aktualisieren der Richtlinie zunächst den Kontexttyp, den SELinux dem Verzeichnis /var/www/example/log mit dem folgenden Befehl zugewiesen hat:
|
1 |
sudo ls -dZ /var/www/example/log/ |
Der Befehl gibt in etwa Folgendes aus, was im Wesentlichen der SELinux-Kontext des Verzeichnisses ist:
|
1 |
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example/log/ |
httpd_sys_content_t ist der aktuelle Kontext, der SELinux mitteilt, dass der Apache-Prozess nur Dateien lesen darf, die in diesem Verzeichnis erstellt wurden. Da wir in unseren Konfigurationen für virtuelle Hosts möchten, dass Apache in Protokolldateien im Verzeichnis /var/www/example/log schreibt, werden wir diese Richtlinie so ändern, dass Apache Protokolldateien für Webanwendungen erstellen und an diese anhängen darf. Der Kontext, der dies ermöglicht, ist httpd_log_t. Hier ist der Befehl zum Aktualisieren des Kontexts:
|
1 |
sudo semanage fcontext -a -t httpd_log_t "/var/www/example/log(/.*)?" |
Um die Änderungen aus dem obigen Befehl anzuwenden und sie auch nach dem Booten beizubehalten, führen Sie den folgenden Befehl aus:
|
1 |
sudo restorecon -R -v /var/www/example/log |
Definieren wir, was der Befehl bewirkt:
- restorecon – wendet die Änderungen an und stellt sicher, dass sie auch nach einem Neustart bestehen bleiben.
- -R-Flag – führt den Befehl rekursiv aus und aktualisiert alle vorhandenen Dateien, um den neuen Kontext zu verwenden.
- -v-Flag – gibt die Kontextänderungen aus, nachdem der Befehl ausgeführt wurde. Die Ausgabe sieht in etwa so aus:
|
1 2 |
Ausgabe: restorecon reset /var/www/example/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0 |
|
1 |
sudo ls -dZ /var/www/example/log/ |
|
1 |
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log |
Schritt 6: Testen der Konfiguration des virtuellen Hosts
Bevor wir den virtuellen Host testen können, müssen Sie die Apache-Dienste neu starten. Hier ist der Befehl dafür:
|
1 |
sudo systemctl restart httpd |
Listen Sie als Nächstes den Inhalt des Log-Verzeichnisses mit dem folgenden Befehl auf:
|
1 |
ls -lZ /var/www/example/log |
Es sollte in etwa so aussehen und zeigen, dass Apache die Log-Dateien erstellt hat:

Wenn Sie den Schritten bis zu diesem Punkt gefolgt sind, Apache sollte nun in der Lage sein, die Beispiel-HTML-Seite bereitzustellen, wenn Sie Ihren in der Datei des virtuellen Hosts definierten Domainnamen aufrufen. Wenn Sie möchten, können Sie die Schritte 4 und 5 wiederholen, um zusätzliche Domains einzurichten und deren SELinux-Berechtigungen entsprechend zu aktualisieren.
Fazit
In diesem Tutorial haben wir Apache installiert, gelernt, wie man SELinux-Richtlinien aktualisiert, um Apache das Schreiben in benutzerdefinierte Log-Dateien zu ermöglichen, und schließlich unsere Konfiguration getestet, um zu bestätigen, dass sie korrekt funktioniert. Mit diesem Hintergrundwissen sollten Sie in der Lage sein, darauf aufzubauen und bessere Anwendungen mit reichhaltigeren Erfahrungen bereitzustellen.
Wenn Sie einen vollständigen Web-Stack kennenlernen möchten, lesen Sie unser Tutorial zur Installation des LAMP-Stacks auf CentOS 7.
Viel Spaß beim Computing!
Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.