Tutorial

Installieren des Apache-Webservers unter CentOS 8 [Schnellstart]

Published on June 12, 2020
Deutsch
Installieren des Apache-Webservers unter CentOS 8 [Schnellstart]

Einführung

Der Apache-HTTP-Server ist der am häufigsten verwendete Webserver der Welt. Er bietet viele leistungsfähige Funktionen, einschließlich dynamisch ladbarer Module, robuster Medienunterstützung und umfassender Integration mit anderen beliebten Programmen.

In diesem Leitfaden installieren Sie einen Apache-Webserver mit virtuellen Hosts auf Ihrem CentOS 8-Server. Eine ausführlichere Version dieses Tutorials finden Sie unter Installieren des Apache-Webservers unter CentOS 8.

Voraussetzungen

Zur Absolvierung dieses Leitfadens benötigen Sie Folgendes:

Schritt 1 — Installieren von Apache

Apache ist in den Standard-Software-Repositorys von CentOS verfügbar und kann daher mit dem dnf-Paketmanager installiert werden.

Installieren Sie das Apache-Paket als der non-root sudo user, der in den Voraussetzungen konfiguriert wurde:

  1. sudo dnf install httpd

Nach Bestätigen der Installation installiert dnf Apache und alle erforderlichen Abhängigkeiten.

Schritt 2 — Anpassen der Firewall

Wenn Sie dem im Abschnitt Voraussetzungen erwähnten Schritt 4 des Leitfadens Ersteinrichtung des Servers unter CentOS 8 gefolgt sind, haben Sie bereits firewalld auf Ihrem Server installiert, um Anforderungen über HTTP zu bedienen.

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

  1. sudo firewall-cmd --permanent --add-service=https

Laden Sie als Nächstes die Firewall neu, um diese neuen Regeln anzuwenden:

  1. sudo firewall-cmd --reload

Nach dem Neuladen der Firewall können Sie den Dienst starten und den Webserver überprüfen.

Schritt 3 — Testen Ihres Webservers

Apache startet beim Abschluss der Installation nicht automatisch auf CentOS, sodass Sie den Apache-Prozess manuell starten müssen:

  1. sudo systemctl start httpd

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

  1. sudo systemctl status httpd

Wenn der Dienst ausgeführt wird, erhalten Sie einen active-Status:

Output
● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disa> Active: active (running) since Thu 2020-04-23 22:25:33 UTC; 11s ago Docs: man:httpd.service(8) Main PID: 14219 (httpd) Status: "Running, listening on: port 80" Tasks: 213 (limit: 5059) Memory: 24.9M CGroup: /system.slice/httpd.service ├─14219 /usr/sbin/httpd -DFOREGROUND ├─14220 /usr/sbin/httpd -DFOREGROUND ├─14221 /usr/sbin/httpd -DFOREGROUND ├─14222 /usr/sbin/httpd -DFOREGROUND └─14223 /usr/sbin/httpd -DFOREGROUND ...

Öffnen Sie die Standardstartseite von Apache, um zu bestätigen, dass die Software über Ihre IP-Adresse ordnungsgemäß ausgeführt wird:

http://your_server_ip

Sie sehen dann die Standardwebseite von CentOS 8 Apache:

Standardseite von Apache für CentOS 8

Diese Seite zeigt an, dass Apache richtig funktioniert. Sie enthält auch einige grundlegende Informationen zu wichtigen Apache-Dateien und Verzeichnispositionen.

Schritt 4 — Einrichten eines virtuellen Hosts (empfohlen)

Bei Verwendung des Apache-Webservers können Sie virtuelle Hosts verwenden (diese sind ähnlich wie Serverblocks in Nginx), um Konfigurationsdetails einzuschließen, und mehr als eine Domäne von einem einzelnen Server aus zu hosten. In diesem Schritt richten wir eine Domäne namens example.com ein. Sie sollten diesen Namen aber durch Ihren eigenen Domänennamen ersetzen. Wenn Sie mit DigitalOcean einen Domänennamen einrichten, lesen Sie bitte unsere Netzwerkdokumentation.

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

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

Erstellen Sie ein zusätzliches Verzeichnis, um Protokolldateien für die Site zu speichern:

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

Weisen Sie als Nächstes das Eigentum am html-Verzeichnis mit der Umgebungsvariablen $USER zu:

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

Stellen Sie sicher, dass Ihre Webroot über die Standardberechtigungen verfügt:

  1. sudo chmod -R 755 /var/www

Erstellen Sie als Nächstes eine index.html-Seite unter Verwendung von vi oder Ihrem bevorzugten Texteditor:

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

Drücken Sie i, um zum INSERT-Modus zu wechseln, und fügen Sie der Datei folgende Beispiel-HTML hinzu:

/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>

Speichern und schließen Sie die Datei, indem Sie ESC drücken, :wq eingeben und ENTER drücken.

Mit dem fertig erstellten Siteverzeichnis und der Beispiel-Indexdatei sind Sie nun fast bereit, die virtuellen Host-Dateien zu erstellen. Virtuelle Host-Dateien legen die Konfiguration Ihrer einzelnen Sites fest und sagen dem Apache-Webserver, wie er auf verschiedene Domänenanforderungen reagieren soll.

Vor der Erstellung Ihrer virtuellen Hosts müssen Sie ein sites-available-Verzeichnis erstellen, in der diese gespeichert werden. Sie erstellen auch ein sites-enabled-Verzeichnis, das Apache mitteilt, dass ein virtueller Host verfügbar ist, um Besucher zu bedienen. 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:

  1. sudo mkdir /etc/httpd/sites-available /etc/httpd/sites-enabled

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

  1. sudo vi /etc/httpd/conf/httpd.conf

Drücken Sie den Großbuchstaben G, um zum Ende der Datei zu navigieren. Drücken Sie dann i, um zum INSERT-Modus zu wechseln, und fügen Sie die folgende Zeile ganz am Ende der Datei hinzu:

/etc/httpd/conf/httpd.conf
...
# Supplemental configuration
#
# Load config files in the "/etc/httpd/conf.d" directory, if any.
IncludeOptional conf.d/*.conf
IncludeOptional sites-enabled/*.conf

Nach dem Hinzufügen der Zeile speichern und schließen Sie die Datei. Nachdem Sie nun die virtuellen Host-Verzeichnisse eingerichtet haben, erstellen Sie die virtuelle Host-Datei.

Erstellen Sie zuerst eine neue Datei im sites-available-Verzeichnis:

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

Fügen Sie folgenden Konfigurationsblock hinzu und ändern Sie example.com zu Ihrem Domänennamen:

/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>

Hierdurch wird Apache mitgeteilt, wo das Rootverzeichnis mit den öffentlich zugänglichen Webdokumenten zu finden ist. Außerdem wird Apache angewiesen, wo die Fehler- und Anforderungsprotokolle für die jeweilige Site zu speichern sind.

Wenn Sie fertig sind, speichern und schließen Sie die Datei.

Die virtuellen Host-Dateien sind nun erstellt und können von Ihnen aktiviert werden, damit Apache sie für Besucher bereitstellen kann. Erstellen Sie hierzu einen symbolischen Link für jeden virtuellen Host im sites-enabled-Verzeichnis:

  1. 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. Vor dem Neustart des Apache-Dienstes prüfen wir, ob SELinux über die richtigen Richtlinien für Ihre virtuellen Hosts verfügt.

Schritt 5 — Anpassen von SELinux-Berechtigungen für virtuelle Hosts (empfohlen)

SELinux ist ein Sicherheitsmodul des Linux-Kernels, das eine erhöhte Sicherheit für Linux-Systeme bietet. CentOS 8 ist mit SELinux ausgestattet und konfiguriert, um mit der Apache-Konfiguration zu arbeiten. Da Sie durch Einrichten eines benutzerdefinierten Protokollverzeichnisses in der Konfigurationsdatei der virtuellen Hosts die Standardkonfiguration geändert haben, erhalten Sie beim Versuch, den Apache-Dienst zu starten, eine Fehlermeldung. Zur Lösung des Problems müssen Sie die Richtlinien von SELinux aktualisieren, damit Apache in die erforderlichen Dateien schreiben kann.

Es gibt verschiedene Möglichkeiten, Richtlinien entsprechend den Anforderungen Ihrer Umgebung festzulegen, da SELinux Ihnen die Möglichkeit bietet, Ihre Sicherheitsstufe anzupassen. Dieser Schritt behandelt zwei Methoden der Anpassung der Richtlinien von Apache: universell und in einem bestimmten Verzeichnis. Da es sicherer ist, Richtlinien von Verzeichnissen anzupassen, wird dieser Ansatz empfohlen.

Universelles Anpassen der Apache-Richtlinien

Bei einer universellen Festlegung der Apache-Richtlinien wird SELinux angewiesen, alle Apache-Prozesse mit dem booleschen Argument httpd_unified identisch zu behandeln. Dieser Ansatz ist zwar bequemer, gibt Ihnen aber 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 universelle Apache-Richtlinien festzulegen:

  1. sudo setsebool -P httpd_unified 1

Der Befehl setsebool ändert boolesche SELinux-Werte. Das -P-Flag aktualisiert den Bootzeitwert, sodass diese Änderung auch bei Neustarts erhalten bleibt. httpd_unified ist das boolesche Argument, das SELinux anweist, alle Apache-Prozesse als den gleichen Typ zu behandeln. Sie haben es mit dem Wert von 1 aktiviert.

Anpassen von Apache-Richtlinien in einem Verzeichnis

Das individuelle Einrichten von SELinux-Berechtigungen für das Verzeichnis /var/www/example.com/log gibt Ihnen mehr Kontrolle über die Apache-Richtlinien, kann aber wartungsintensiver sein. Da es sich bei dieser Option nicht um eine universelle Festlegung von Richtlinien handelt, müssen Sie den Kontexttyp für alle neuen Protokollverzeichnisse, die in Ihren virtuellen Host-Konfigurationen angegeben sind, manuell festlegen.

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

  1. sudo ls -dlZ /var/www/example.com/log/

Dieser Befehl listet den SELinux-Kontext des Verzeichnisses auf und gibt ihn aus. Sie werden eine Ausgabe sehen, die etwa folgendermaßen aussieht:

Output
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_sys_content_t:s0 6 Apr 23 23:51 /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 Leitfaden ändern Sie den Kontexttyp des Verzeichnisses /var/www/example.com/log zu httpd_log_t. Dieser Typ ermöglicht Apache, Protokolldateien von Web-Anwendungen zu generieren und an diese anzuhängen:

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

Verwenden Sie als Nächstes den Befehl restorecon, um diese Änderungen anzuwenden und sie bei Neustarts beizubehalten:

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

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

Output
Relabeled /var/www/example.com/log from unconfined_u:object_r:httpd_sys_content_t:s0 to unconfined_u:object_r:httpd_log_t:s0

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

  1. sudo ls -dlZ /var/www/example.com/log/

Die Ausgabe zeigt den aktualisierten Kontexttyp an:

Output
drwxr-xr-x. 2 root root unconfined_u:object_r:httpd_log_t:s0 6 Apr 23 23:51 /var/www/example.com/log/

Das Verzeichnis /var/www/example.com/log verwendet nun den Typ httpd_log_t​​​​​​ und Sie können jetzt die Konfiguration des virtuellen Hosts testen.

Schritt 6 — Testen des virtuellen Hosts (empfohlen)

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

  1. sudo systemctl restart httpd

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

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

Sie erhalten eine Bestätigung, dass Apache die in der Konfiguration des virtuellen Hosts angegebenen Dateien error.log und requests.log erstellen konnte:

Output
-rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 error.log -rw-r--r--. 1 root root system_u:object_r:httpd_log_t:s0 0 Apr 24 00:06 requests.log

Nachdem Sie nun Ihren virtuellen Host eingerichtet und die Berechtigungen von SELinux aktualisiert haben, stellt Apache Ihren Domänennamen bereit. Sie können dies testen, indem Sie zu http://example.com navigieren, wo Sie etwas Ähnliches sehen sollten wie:

Erfolg!  Der virtuelle Host example.com funktioniert!

Das bestätigt, dass Ihr virtueller Host erfolgreich konfiguriert ist 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.

Zusammenfassung

In diesem Leitfaden haben Sie den Apache-Webserver installiert und verwaltet. Nachdem Sie Ihren Webserver nun installiert haben, haben Sie viele Möglichkeiten für die Art des Inhalts und die Technologien, die Sie verwenden möchten, um eine umfassendere Benutzererfahrung zu erzielen.

Wenn Sie einen vollständigeren Anwendungsstapel erstellen möchten, lesen Sie den Artikel Konfigurieren eines LAMP-Stacks unter CentOS 8.

Thanks for learning with the DigitalOcean Community. Check out our offerings for compute, storage, networking, and managed databases.

Learn more about us


About the authors
Default avatar

Senior Manager, DevEd

Open source advocate and lover of education, culture, and community.



Still looking for an answer?

Ask a questionSearch for more help

Was this helpful?
 
Leave a comment


This textbox defaults to using Markdown to format your answer.

You can type !ref in this text area to quickly search our full set of tutorials, documentation & marketplace offerings and insert the link!

Try DigitalOcean for free

Click below to sign up and get $200 of credit to try our products over 60 days!

Sign up

Join the Tech Talk
Success! Thank you! Please check your email for further details.

Please complete your information!

Get our biweekly newsletter

Sign up for Infrastructure as a Newsletter.

Hollie's Hub for Good

Working on improving health and education, reducing inequality, and spurring economic growth? We'd like to help.

Become a contributor

Get paid to write technical tutorials and select a tech-focused charity to receive a matching donation.

Welcome to the developer cloud

DigitalOcean makes it simple to launch in the cloud and scale up as you grow — whether you're running one virtual machine or ten thousand.

Learn more
DigitalOcean Cloud Control Panel