So installieren Sie den Apache-Webserver unter CentOS 7

Einführung

Der Apache-HTTP-Server ist der weltweit am häufigsten verwendete Webserver. Es bietet viele leistungsstarke Funktionen, darunter dynamisch ladbare Module, robuste Medienunterstützung und umfassende Integration mit anderer gängiger Software.

In diesem Handbuch installieren Sie einen Apache-Webserver mit virtuellen Hosts auf Ihrem CentOS 7-Server.

Voraussetzungen

Sie benötigen Folgendes, um diese Anleitung abzuschließen:

  • Ein Nicht-Root-Benutzer mit Sudo-Rechten, der auf Ihrem Server konfiguriert ist, richten Sie ein, indem Sie dem anfänglichen Server-Setup-Handbuch für CentOS 7 folgen.
  • Eine grundlegende Firewall, die durch Befolgen der zusätzlichen empfohlenen Schritte für neue CentOS 7-Server konfiguriert wird.

Schritt 1 — Installation von Apache

Apache ist in den Standard-Software-Repositorys von CentOS verfügbar, dh Sie können es mit dem yum Paketmanager installieren.

Aktualisieren Sie als Nicht-Root-Sudo-Benutzer, der in den Voraussetzungen konfiguriert ist, den lokalen Apache httpd Paketindex, um die neuesten Upstream-Änderungen widerzuspiegeln:

  • sudo yum update httpd

Installieren Sie nach der Aktualisierung der Pakete das Apache-Paket:

  • sudo yum install httpd

yuminstalliert Apache und alle erforderlichen Abhängigkeiten.

Wenn Sie die zusätzlichen empfohlenen Schritte für neue CentOS 7-Server ausgeführt haben, die im Abschnitt Voraussetzungen erwähnt werden, haben Sie firewalld auf Ihrem Server installiert und Sie müssen den Port 80 öffnen, damit Apache Anfragen über HTTP bedienen kann. Wenn Sie dies noch nicht getan haben, können Sie dies tun, indem Sie den Dienst firewalldhttp mit dem folgenden Befehl aktivieren:

  • sudo firewall-cmd --permanent --add-service=http

Wenn Sie Apache so konfigurieren möchten, dass Inhalte über HTTPS bereitgestellt werden, sollten Sie auch den Port 443 öffnen, indem Sie den Dienst https aktivieren:

  • sudo firewall-cmd --permanent --add-service=https

Laden Sie als nächstes firewall, um diese neuen Regeln in Kraft zu setzen:

  • sudo firewall-cmd --reload

Nachdem die Firewall neu geladen wurde, können Sie den Dienst starten und den Webserver überprüfen.

Schritt 2 – Überprüfen Ihres Webservers

Apache startet nicht automatisch auf CentOS, sobald die Installation abgeschlossen ist. Sie müssen den Apache-Prozess manuell starten:

  • sudo systemctl start httpd

Überprüfen Sie, ob der Dienst mit dem folgenden Befehl ausgeführt wird:

  • sudo systemctl status httpd

Sie sehen einen active Status, wenn der Dienst ausgeführt wird:

Output
Redirecting to /bin/systemctl status httpd.service● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2019-02-20 01:29:08 UTC; 5s ago Docs: man:httpd(8) man:apachectl(8) Main PID: 1290 (httpd) Status: "Processing requests..." CGroup: /system.slice/httpd.service ├─1290 /usr/sbin/httpd -DFOREGROUND ├─1291 /usr/sbin/httpd -DFOREGROUND ├─1292 /usr/sbin/httpd -DFOREGROUND ├─1293 /usr/sbin/httpd -DFOREGROUND ├─1294 /usr/sbin/httpd -DFOREGROUND └─1295 /usr/sbin/httpd -DFOREGROUND...

Wie Sie dieser Ausgabe entnehmen können, scheint der Dienst erfolgreich gestartet worden zu sein. Der beste Weg, dies zu testen, besteht jedoch darin, eine Seite von Apache anzufordern.

Sie können auf die standardmäßige Apache-Zielseite zugreifen, um zu bestätigen, dass die Software über Ihre IP-Adresse ordnungsgemäß ausgeführt wird. Wenn Sie die IP-Adresse Ihres Servers nicht kennen, können Sie sie auf verschiedene Arten über die Befehlszeile abrufen.

Geben Sie dies an der Eingabeaufforderung Ihres Servers ein:

  • hostname -I

Dieser Befehl zeigt alle Netzwerkadressen des Hosts an, sodass Sie einige durch Leerzeichen getrennte IP-Adressen zurückerhalten. Sie können jedes in Ihrem Webbrowser ausprobieren, um zu sehen, ob es funktioniert.

Alternativ können Sie curl verwenden, um Ihre IP von icanhazip.com anzufordern, wodurch Sie Ihre öffentliche IPv4-Adresse von einem anderen Ort im Internet aus sehen können:

  • curl -4 icanhazip.com

Wenn Sie die IP-Adresse Ihres Servers haben, geben Sie sie in die Adressleiste Ihres Browsers ein:

http://your_server_ip

Sie sehen die Standard-Apache-Webseite für CentOS 7:

Standard-Apache-Seite für CentOS 7

Diese Seite zeigt an, dass Apache korrekt funktioniert. Es enthält auch einige grundlegende Informationen über wichtige Apache-Dateien und Verzeichnisspeicherorte. Nachdem der Dienst installiert und ausgeführt wurde, können Sie nun verschiedene systemctl -Befehle verwenden, um den Dienst zu verwalten.

Schritt 3 – Verwalten des Apache-Prozesses

Nachdem Sie Ihren Webserver eingerichtet haben, gehen wir einige grundlegende Verwaltungsbefehle durch.

Um Ihren Webserver zu stoppen, geben Sie Folgendes ein:

  • sudo systemctl stop httpd

Um den Webserver zu starten, wenn er gestoppt ist, geben Sie Folgendes ein:

  • sudo systemctl start httpd

Um den Dienst zu stoppen und dann erneut zu starten, geben Sie Folgendes ein:

  • sudo systemctl restart httpd

Wenn Sie lediglich Konfigurationsänderungen vornehmen, Apache kann oft neu geladen werden, ohne Verbindungen zu unterbrechen. Verwenden Sie dazu diesen Befehl:

  • sudo systemctl reload httpd

Standardmäßig ist Apache so konfiguriert, dass er beim Booten des Servers automatisch gestartet wird. Wenn Sie dies nicht möchten, deaktivieren Sie dieses Verhalten, indem Sie Folgendes eingeben:

  • sudo systemctl disable httpd

Um den Dienst wieder für den Start beim Booten zu aktivieren, geben Sie Folgendes ein:

  • sudo systemctl enable httpd

Apache startet jetzt automatisch, wenn der Server erneut startet.

Die Standardkonfiguration für Apache ermöglicht es Ihrem Server, eine einzelne Website zu hosten. Wenn Sie mehrere Domains auf Ihrem Server hosten möchten, müssen Sie virtuelle Hosts auf Ihrem Apache-Webserver konfigurieren.

Schritt 4 – Einrichten virtueller 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 Domäne von einem einzigen Server aus zu hosten. In diesem Schritt richten Sie eine Domain mit dem Namen example.com ein, die Sie jedoch durch Ihren eigenen Domainnamen ersetzen sollten. Weitere Informationen zum Einrichten eines Domainnamens mit DigitalOcean finden Sie in unserer Einführung in DigitalOcean DNS.

Apache unter CentOS 7 hat standardmäßig einen Serverblock aktiviert, der so konfiguriert ist, dass Dokumente aus dem /var/www/html -Verzeichnis bereitgestellt werden. Dies funktioniert zwar gut für eine einzelne Site, kann jedoch unhandlich werden, wenn Sie mehrere Sites hosten. Anstatt /var/www/html zu ändern, erstellen Sie eine Verzeichnisstruktur innerhalb von /var/www für die example.com Site, wobei /var/www/html als Standardverzeichnis verwendet wird, wenn eine Clientanforderung nicht mit anderen Sites übereinstimmt.

Erstellen Sie das html -Verzeichnis für example.com wie folgt und verwenden Sie das -p -Flag, um alle erforderlichen übergeordneten Verzeichnisse zu erstellen:

  • sudo mkdir -p /var/www/example.com/html

Erstellen Sie ein zusätzliches Verzeichnis zum Speichern von Protokolldateien für die Site:

  • sudo mkdir -p /var/www/example.com/log

Weisen Sie als nächstes den Besitz des html -Verzeichnisses mit der $USER Umgebungsvariablen zu:

  • sudo chown -R $USER:$USER /var/www/example.com/html

Stellen Sie sicher, dass für Ihr Webstammverzeichnis die Standardberechtigungen:

  • sudo chmod -R 755 /var/www

Next, create a sample index.html page using vi or your favorite editor:

  • sudo vi /var/www/example.com/html/index.html

Press i to switch to INSERT mode and add the following sample HTML to the file:

/var/www/example.com/html/index.html
<html> <head> <title>Welcome to Example.com!</title> </head> <body> <h1>Success! The example.com virtual host is working!</h1> </body></html>

Save and close the file by pressing ESC, typing :wq, and pressing ENTER.

Mit Ihrem Site-Verzeichnis und der Beispielindexdatei sind Sie fast bereit, die virtuellen Hostdateien zu erstellen. Virtuelle Hostdateien geben die Konfiguration Ihrer separaten Sites an und teilen dem Apache-Webserver mit, wie auf verschiedene Domänenanforderungen reagiert werden soll.

Bevor Sie Ihre virtuellen Hosts erstellen, müssen Sie ein sites-available Verzeichnis erstellen, in dem Sie sie speichern können. Sie erstellen auch das sites-enabled Verzeichnis, das Apache mitteilt, dass ein virtueller Host für Besucher bereit ist. Das sites-enabled Verzeichnis enthält symbolische Links zu virtuellen Hosts, die wir veröffentlichen möchten. Erstellen Sie beide Verzeichnisse mit dem folgenden Befehl:

  • sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled

Als nächstes weisen Sie Apache an, im Verzeichnis sites-enabled nach virtuellen Hosts zu suchen. Bearbeiten Sie dazu die Hauptkonfigurationsdatei von Apache und fügen Sie eine Zeile hinzu, die ein optionales Verzeichnis für zusätzliche Konfigurationsdateien deklariert:

  • sudo vi /etc/httpd/conf/httpd.conf

Fügen Sie diese Zeile am Ende der Datei hinzu:

IncludeOptional sites-enabled/*.conf

Speichern und schließen Sie die Datei, wenn Sie mit dem Hinzufügen dieser Zeile fertig sind. Nachdem Sie Ihre virtuellen Hostverzeichnisse eingerichtet haben, erstellen Sie Ihre virtuelle Hostdatei.

Erstellen Sie zunächst eine neue Datei im Verzeichnis sites-available:

  • sudo vi /etc/httpd/sites-available/example.com.conf

Fügen Sie den folgenden Konfigurationsblock hinzu und ändern Sie die Domäne example.com in Ihren Domainnamen:

/etc/httpd/sites-available/example.com.conf
<VirtualHost *:80> ServerName www.example.com ServerAlias example.com DocumentRoot /var/www/example.com/html ErrorLog /var/www/example.com/log/error.log CustomLog /var/www/example.com/log/requests.log combined</VirtualHost>

Dies teilt Apache mit, wo der Stamm direkt zu finden ist, der die öffentlich zugänglichen Webdokumente enthält. Es teilt Apache auch mit, wo Fehler- und Anforderungsprotokolle für diese bestimmte Site gespeichert werden sollen.

Speichern und schließen Sie die Datei, wenn Sie fertig sind.

Nachdem Sie die virtuellen Hostdateien erstellt haben, aktivieren Sie sie, damit Apache weiß, dass sie den Besuchern bereitgestellt werden. Erstellen Sie dazu einen symbolischen Link für jeden virtuellen Host im Verzeichnis sites-enabled:

  • sudo ln -s /etc/httpd/sites-available/example.com.conf /etc/httpd/sites-enabled/example.com.conf

Ihr virtueller Host ist nun konfiguriert und bereit, Inhalte bereitzustellen. Stellen Sie vor dem Neustart des Apache-Dienstes sicher, dass SELinux über die richtigen Richtlinien für Ihre virtuellen Hosts verfügt.

Schritt 5 – Anpassen der SELinux-Berechtigungen für virtuelle Hosts (empfohlen)

SELinux ist so konfiguriert, dass es mit der Standard-Apache-Konfiguration funktioniert. Da Sie ein benutzerdefiniertes Protokollverzeichnis in der Konfigurationsdatei für virtuelle Hosts eingerichtet haben, erhalten Sie eine Fehlermeldung, wenn Sie versuchen, den Apache-Dienst zu starten. Um dies zu beheben, müssen Sie die SELinux-Richtlinien aktualisieren, damit Apache in die erforderlichen Dateien schreiben kann. SELinux erhöht die Sicherheit Ihrer CentOS 7-Umgebung, daher wird nicht empfohlen, das Kernelmodul vollständig zu deaktivieren.

Es gibt verschiedene Möglichkeiten, Richtlinien basierend auf den Anforderungen Ihrer Umgebung festzulegen, da Sie mit SELinux Ihre Sicherheitsstufe anpassen können. In diesem Schritt werden zwei Methoden zum Anpassen von Apache-Richtlinien behandelt: universell und in einem bestimmten Verzeichnis. Das Anpassen von Richtlinien für Verzeichnisse ist sicherer und daher der empfohlene Ansatz.

Apache-Richtlinien universell anpassen

Wenn Sie die Apache-Richtlinie universell festlegen, wird SELinux angewiesen, alle Apache-Prozesse identisch zu behandeln, indem der Boolesche Wert httpd_unified verwendet wird. Dieser Ansatz ist zwar bequemer, bietet Ihnen jedoch nicht das gleiche Maß an Kontrolle wie ein Ansatz, der sich auf eine Datei- oder Verzeichnisrichtlinie konzentriert.

Führen Sie den folgenden Befehl aus, um eine universelle Apache-Richtlinie festzulegen:

  • sudo setsebool -P httpd_unified 1

Der Befehl setsebool ändert boolesche SELinux-Werte. Das Flag -P aktualisiert den Wert für die Startzeit, sodass diese Änderung über Neustarts hinweg beibehalten wird. httpd_unified ist der Boolesche Wert, der SELinux anweist, alle Apache-Prozesse als denselben Typ zu behandeln, sodass Sie ihn mit dem Wert 1 aktiviert haben.

Anpassen von Apache-Richtlinien in einem Verzeichnis

Das individuelle Festlegen von SELinux-Berechtigungen für das /var/www/example.com/log -Verzeichnis gibt Ihnen mehr Kontrolle über Ihre Apache-Richtlinien, erfordert jedoch möglicherweise auch mehr Wartung. Da diese Option Richtlinien nicht universell festlegt, müssen Sie den Kontexttyp für alle neuen Protokollverzeichnisse, die in den Konfigurationen Ihrer virtuellen Hosts angegeben sind, manuell festlegen.

Überprüfen Sie zuerst den Kontexttyp, den SELinux dem /var/www/example.com/log Verzeichnis gegeben hat:

  • sudo ls -dZ /var/www/example.com/log/

Dieser Befehl listet den SELinux-Kontext des Verzeichnisses auf und druckt ihn aus. Sie sehen eine Ausgabe ähnlich der folgenden:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /var/www/example.com/log/

Der aktuelle Kontext ist httpd_sys_content_t, der SELinux mitteilt, dass der Apache-Prozess nur Dateien lesen kann, die in diesem Verzeichnis erstellt wurden. In diesem Tutorial ändern Sie den Kontexttyp des Verzeichnisses /var/www/example.com/log in httpd_log_t . Mit diesem Typ kann Apache Webanwendungsprotokolldateien generieren und an diese anhängen:

  • sudo semanage fcontext -a -t httpd_log_t "/var/www/example.com/log(/.*)?"

Verwenden Sie als nächstes den Befehl restorecon, um diese Änderungen zu übernehmen und über Neustarts hinweg beizubehalten:

  • sudo restorecon -R -v /var/www/example.com/log

Das -R Flag führt diesen Befehl rekursiv aus, was bedeutet, dass alle vorhandenen Dateien aktualisiert werden, um den neuen Kontext zu verwenden. Das -v Flag gibt die Kontextänderungen aus, die der Befehl vorgenommen hat. Sie sehen die folgende Ausgabe, die die Änderungen bestätigt:

Output
restorecon reset /var/www/example.com/log context unconfined_u:object_r:httpd_sys_content_t:s0->unconfined_u:object_r:httpd_log_t:s0

Sie können die Kontexte noch einmal auflisten, um die Änderungen zu sehen:

  • sudo ls -dZ /var/www/example.com/log/

Die Ausgabe spiegelt den aktualisierten Kontexttyp:

Output
drwxr-xr-x. root root unconfined_u:object_r:httpd_log_t:s0 /var/www/example.com/log

Nun, da das Verzeichnis /var/www/example.com/log den Typ httpd_log_t verwendet, können Sie Ihre virtuelle Hostkonfiguration testen.

Schritt 6 – Testen des virtuellen Hosts (empfohlen)

Sobald der SELinux-Kontext mit beiden Methoden aktualisiert wurde, kann Apache in das /var/www/example.com/log Verzeichnis schreiben. Sie können den Apache-Dienst nun erfolgreich neu starten:

  • sudo systemctl restart httpd

Listen Sie den Inhalt des /var/www/example.com/log Verzeichnisses auf, um zu sehen, ob Apache die Protokolldateien erstellt hat:

  • ls -lZ /var/www/example.com/log

Sie werden sehen, dass Apache die error.log und requests.log Dateien erstellen konnte, die in der Konfiguration des virtuellen Hosts angegeben sind:

Output
-rw-r--r--. 1 root root 0 Feb 26 22:54 error.log-rw-r--r--. 1 root root 0 Feb 26 22:54 requests.log

Nachdem Sie Ihren virtuellen Host eingerichtet SELinux Berechtigungen aktualisiert, Apache wird nun Ihren Domain-Namen dienen. Sie können dies testen, indem Sie zu http://example.comnavigieren, wo Sie Folgendes sehen sollten:

Erfolg! Die example.com virtueller Host funktioniert!

Dies bestätigt, dass Ihr virtueller Host erfolgreich konfiguriert wurde und Inhalte bereitstellt. Wiederholen Sie die Schritte 4 und 5, um neue virtuelle Hosts mit SELinux-Berechtigungen für zusätzliche Domänen zu erstellen.

Fazit

In diesem Tutorial haben Sie den Apache-Webserver installiert und verwaltet. Nachdem Sie Ihren Webserver installiert haben, haben Sie viele Optionen für die Art der Inhalte, die Sie bereitstellen können, und für die Technologien, mit denen Sie eine umfassendere Erfahrung erstellen können.

Wenn Sie einen vollständigeren Anwendungsstapel erstellen möchten, können Sie sich diesen Artikel zum Konfigurieren eines LAMP-Stacks unter CentOS 7 ansehen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.