So installieren Sie den Apache-Webserver unter CentOS 7

Einführung

Der HTTP-Server Apache ist der weltweit am häufigsten verwendete Webserver. Es bietet viele leistungsstarke Funktionen, einschließlich dynamisch ladbarer Module, robuster Medienunterstützung und umfassender Integration in andere gängige Software.

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

Voraussetzungen

Sie benötigen Folgendes, um dieses Handbuch zu vervollständigen:

Schritt 1 - Installieren von Apache

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

Aktualisieren Sie als Nicht-Root-Benutzer von sudo, der in den Voraussetzungen konfiguriert wurde, den lokalen Apache-Paketindex + httpd +, um die neuesten Änderungen in der Originalautorenversion wiederzugeben:

sudo yum update httpd

Nachdem die Pakete aktualisiert wurden, installieren Sie das Apache-Paket:

sudo yum install httpd

Nach der Bestätigung der Installation installiert + yum + Apache und alle erforderlichen Abhängigkeiten. Sobald die Installation abgeschlossen ist, können Sie den Dienst starten.

Schritt 2 - Überprüfen Sie Ihren Webserver

Apache wird unter CentOS nach Abschluss der Installation nicht automatisch gestartet. Sie müssen den Apache-Prozess manuell starten:

sudo systemctl start httpd

Stellen Sie mit dem folgenden Befehl sicher, dass der Dienst ausgeführt wird:

sudo systemctl status httpd

Wenn der Dienst ausgeführt wird, wird der Status "+ aktiv +" angezeigt:

OutputRedirecting 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:  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, wurde der Dienst anscheinend erfolgreich gestartet. Der beste Weg, dies zu testen, ist jedoch, eine Seite von Apache anzufordern.

Sie können auf die Standard-Apache-Startseite 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 erhalten. Sie können jeden in Ihrem Webbrowser ausprobieren, um zu sehen, ob er funktioniert.

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

curl -4 icanhazip.com

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

http://

Die Standardwebseite von CentOS 7 Apache wird angezeigt:

Diese Seite zeigt an, dass Apache korrekt funktioniert. Es enthält auch einige grundlegende Informationen zu wichtigen Apache-Dateien und -Verzeichnissen. Nachdem der Dienst installiert ist und ausgeführt wird, können Sie jetzt verschiedene Befehle + systemctl + verwenden, um den Dienst zu verwalten.

Schritt 3 - Verwalten des Apache-Prozesses

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

Geben Sie Folgendes ein, um Ihren Webserver zu stoppen:

sudo systemctl stop httpd

Geben Sie Folgendes ein, um den Webserver nach dem Stoppen zu starten:

sudo systemctl start httpd

Geben Sie Folgendes ein, um den Dienst zu beenden und erneut zu starten:

sudo systemctl restart httpd

Wenn Sie lediglich Konfigurationsänderungen vornehmen, kann Apache häufig neu laden, ohne dass Verbindungen unterbrochen werden. Verwenden Sie dazu diesen Befehl:

sudo systemctl reload httpd

Standardmäßig ist Apache so konfiguriert, dass es automatisch startet, wenn der Server startet. Wenn Sie dies nicht möchten, deaktivieren Sie dieses Verhalten, indem Sie Folgendes eingeben:

sudo systemctl disable httpd

Geben Sie Folgendes ein, um den Dienst wieder für den Start beim Systemstart zu aktivieren:

sudo systemctl enable httpd

Apache wird jetzt automatisch gestartet, wenn der Server erneut gestartet wird.

Die Standardkonfiguration für Apache ermöglicht es Ihrem Server, eine einzelne Website zu hosten. Wenn Sie mehrere Domänen 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 einzelnen 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 unter Introduction to DigitalOcean DNS.

In Apache unter CentOS 7 ist standardmäßig ein Serverblock aktiviert, der zum Bereitstellen von Dokumenten aus dem Verzeichnis "+ / var / www / html " konfiguriert ist. 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 Site " example.com ", wobei " / var / www / html +" unverändert bleibt Das Standardverzeichnis, das bedient werden soll, wenn eine Client-Anfrage mit keiner anderen Site übereinstimmt.

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

sudo mkdir -p /var/www//html

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

sudo mkdir -p /var/www//log

Als nächstes weisen Sie den Besitz des "+ html" -Verzeichnisses mit den Umgebungsvariablen "+ $ USER" und "" zu:

sudo chown -R $USER:$USER /var/www//html

Stellen Sie sicher, dass in Ihrem Webstamm die Standardberechtigungen festgelegt sind:

sudo chmod -R 755 /var/www

Als nächstes erstellen Sie eine Beispielseite "+ index.html" mit "+ vi" oder Ihrem bevorzugten Editor:

sudo vi /var/www//html/index.html

Drücken Sie + i +, um in den Modus + INSERT + zu wechseln, und fügen Sie der Datei den folgenden Beispiel-HTML-Code hinzu:

/var/www/example.com/html/index.html

<html>
 <head>
   <title>Welcome to !</title>
 </head>
 <body>
   <h1>Success! The  virtual host is working!</h1>
 </body>
</html>

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

Mit Ihrem Site-Verzeichnis und Ihrer Beispielindexdatei sind Sie fast bereit, die virtuellen Host-Dateien 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 Verzeichnis "+ sites-available " erstellen, um sie zu speichern. Sie erstellen auch das Verzeichnis " sites-enabled ", das Apache mitteilt, dass ein virtueller Host für Besucher bereit ist. Das " sites-enabled" -Verzeichnis enthält symbolische Links zu virtuellen Hosts, die veröffentlicht werden sollen. 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 diese Zeile hinzugefügt haben. Nachdem Sie Ihre virtuellen Host-Verzeichnisse eingerichtet haben, erstellen Sie Ihre virtuelle Host-Datei.

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

sudo vi /etc/httpd/sites-available/.conf

Fügen Sie den folgenden Konfigurationsblock hinzu und ändern Sie die Domain "+ example.com +" in Ihren Domainnamen:

/etc/httpd/sites-available/example.com.conf

<VirtualHost *:80>
   ServerName www.
   ServerAlias
   DocumentRoot /var/www//html
   ErrorLog /var/www//log/error.log
   CustomLog /var/www//log/requests.log combined
</VirtualHost>

Dies teilt Apache mit, wo das Stammverzeichnis zu finden ist, in dem sich die öffentlich zugänglichen Webdokumente befinden. Außerdem wird Apache mitgeteilt, 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 sie den Besuchern zur Verfügung stellen kann. Dazu erstellen Sie einen symbolischen Link für jeden virtuellen Host im Verzeichnis + sites-enabled:

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

Ihr virtueller Host ist jetzt 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 standardmäßigen 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. Es wird daher nicht empfohlen, das Kernelmodul vollständig zu deaktivieren.

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

Allgemeine Anpassung der Apache-Richtlinien

Durch universelles Einstellen der Apache-Richtlinie wird SELinux angewiesen, alle Apache-Prozesse mit dem Booleschen Wert + httpd_unified + identisch zu behandeln. Dieser Ansatz ist zwar praktischer, bietet Ihnen jedoch nicht die gleiche 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 die booleschen SELinux-Werte. Das Flag "+ -P " aktualisiert den Wert für die Startzeit, sodass diese Änderung auch nach einem Neustart beibehalten wird. ` httpd_unified ` ist der Boolesche Wert, der SELinux anweist, alle Apache-Prozesse als denselben Typ zu behandeln. Sie haben ihn also mit einem Wert von ` 1 +` aktiviert.

Anpassen von Apache-Richtlinien in einem Verzeichnis

Indem Sie die SELinux-Berechtigungen für das Verzeichnis "+ / var / www // log +" individuell festlegen, können Sie Ihre Apache-Richtlinien besser steuern, benötigen jedoch möglicherweise auch mehr Wartung. Da diese Option keine universellen Richtlinien festlegt, müssen Sie den Kontexttyp für alle neuen Protokollverzeichnisse, die in Ihren virtuellen Hostkonfigurationen angegeben sind, manuell festlegen.

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

sudo ls -dZ /var/www//log/

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

Outputdrwxr-xr-x. root root unconfined_u:object_r::s0 /var/www//log/

Der aktuelle Kontext ist "+ httpd_sys_content_t ", was 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 // log " in " httpd_log_t +". Dieser Typ ermöglicht es Apache, Protokolldateien für Webanwendungen zu generieren und an diese anzuhängen:

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

Verwenden Sie anschließend den Befehl + restorecon +, um diese Änderungen zu übernehmen und sie auch nach einem Neustart beizubehalten:

sudo restorecon -R -v /var/www//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 den Kontext aus, in dem der Befehl geändert wurde. Sie werden die folgende Ausgabe sehen, die die Änderungen bestätigt:

Outputrestorecon reset /var/www/example.com/log context unconfined_u:object_r::s0->unconfined_u:object_r::s0

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

sudo ls -dZ /var/www//log/

Die Ausgabe spiegelt den aktualisierten Kontexttyp wider:

Outputdrwxr-xr-x. root root unconfined_u:object_r::s0 /var/www//log

Nachdem das Verzeichnis "+ / var / www // 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 einer der beiden Methoden aktualisiert wurde, kann Apache in das Verzeichnis + / var / www // log + schreiben. Sie können den Apache-Dienst jetzt erfolgreich neu starten:

sudo systemctl restart httpd

Listen Sie den Inhalt des Verzeichnisses + / var / www // log + auf, um festzustellen, ob Apache die Protokolldateien erstellt hat:

ls -lZ /var/www//log

Sie werden sehen, dass Apache die in der Konfiguration des virtuellen Hosts angegebenen Dateien "+ error.log " und " request.log +" erstellen konnte:

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 und die SELinux-Berechtigungen aktualisiert haben, wird Apache nun Ihren Domain-Namen bereitstellen. Sie können dies testen, indem Sie zu "+ http: // +" navigieren, wo Sie ungefähr Folgendes sehen sollten:

image: https://assets.digitalocean.com/articles/CART-65406/virtual_host_success.png [Erfolg! Der virtuelle Host von example.com funktioniert!]

Hiermit wird 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 Lernprogramm haben Sie den Apache-Webserver installiert und verwaltet. Nachdem Sie Ihren Webserver installiert haben, stehen Ihnen zahlreiche Optionen für die Art des Inhalts und die Technologien zur Verfügung, mit denen Sie eine umfassendere Erfahrung erzielen können.

Wenn Sie einen vollständigeren Anwendungsstapel erstellen möchten, finden Sie in diesem Artikel Informationen zum Konfigurieren einer https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql -php-lamp-stack-on-centos-7 # step-four-% E2% 80% 94-test-php-verarbeitung-auf-deinem-web-server [LAMP-stack unter CentOS 7].