So installieren Sie Apache mit virtuellem Host unter CentOS 8

Der Apache-Webserver ist ein Open-Source und beliebter HTTP-Webserver, der weiterhin einen massiven Marktanteil in der Hosting-Branche genießt. Er wird mit einer Vielzahl von Funktionen geliefert, darunter Modulerweiterungen, Unterstützung für mehrere Protokolle, vereinfachte Konfiguration und Unterstützung für mehrere Sprachen, um nur einige zu nennen.

Weitere Informationen: So installieren Sie Nginx unter CentOS 8

In diesem Handbuch führen wir Sie durch die Installation des Apache-Webservers unter CentOS 8 und RHEL 8 mit einer virtuellen Host-Umgebung. Zum Zeitpunkt des Verfassens dieses Tutorials ist die neueste Version von Apache Apache 2.2.43.

Apache-Webserver installieren

Um zu beginnen, aktualisieren Sie zuerst Ihre CentOS 8– oder RHEL 8-Systempaketliste mithilfe des folgenden dnf-Befehls.

$ sudo dnf update

Nach Abschluss des Updates installieren Sie den Apache-Webserver, indem Sie den folgenden Befehl ausführen.

$ sudo dnf install httpd

Nach der Installation können Sie die Version von Apache über den rpm-Befehl überprüfen.

$ rpm -qi httpd
Verify Apache Version

Der Befehl gibt eine Reihe von Informationen wie Version, Veröffentlichungsdatum, Build und Architektur des Pakets aus.

Um den Apache HTTP-Webdienst zu starten, führen Sie den systemctl-Befehl aus.

$ sudo systemctl start httpd

Um zu bestätigen, ob der Dienst läuft, führen Sie aus.

$ sudo systemctl status httpd
Verify Apache Service Status

Ausgabe zeigt, dass der Status „aktiv“ in grün darauf hinweist, dass der Apache-Webserver aktiv ist.

Um alle Zweifel auszuräumen, ob der Webserver läuft, fordern Sie eine Testseite von Apache an, indem Sie die IP-Adresse oder den Domainnamen Ihres Servers wie gezeigt durchsuchen.

http://server-ip  

Sie können Ihre Server-IP erhalten, indem Sie den ifconfig-Befehl ausführen. Wenn Ihr Server in der Cloud gehostet wird, können Sie die öffentliche IP durch Ausführen des curl-Befehls erhalten.

$ curl ifconfig.me 
OR
$ curl -4 icanhazip.com
Find CentOS Server IP Address

Wenn Sie die IP-Adresse des Servers durchsuchen, sollte die folgende Webseite angezeigt werden.

Check Apache Webpage

Dies ist eine sichere Bestätigung, dass der Webserver läuft.

Verwaltung des Apache-Webservers

Mit Apache installiert und aktiv, können Sie das Inspektionswerkzeug systemctl verwenden, um Apache zu verwalten.

Zum Beispiel, um Apache zu stoppen, führen Sie den Befehl aus:

$ sudo systemctl stop httpd

Um den Dienst erneut zu starten, führen Sie aus:Wenn Sie Änderungen an einer seiner Konfigurationsdateien vorgenommen haben und Sie diese anwenden müssen, führen Sie den Befehl aus:

$ sudo systemctl start httpd

Das Neustarten des Dienstes führt in der Regel zu einer Dienstunterbrechung. Eine bessere Alternative ist es, einfach neu zu laden, ohne die Verbindung zu unterbrechen.

$ sudo systemctl restart httpd

Um den Apache-Webserver automatisch beim Booten oder Neustarten zu starten, führen Sie den folgenden Befehl aus. Dadurch wird sichergestellt, dass Apache automatisch startet, ohne Ihr Eingreifen.

$ sudo systemctl reload httpd

Wenn Sie sich entscheiden, den Dienst nicht automatisch beim Booten zu starten, führen Sie Folgendes aus:

$ sudo systemctl enable httpd

Einrichten von Apache Virtual Hosts

$ sudo systemctl disable httpd

Standardmäßig ist der Apache-Webserver so konfiguriert, dass er nur eine Website bedient oder hostet. Wenn Sie nur eine Website hosten möchten, ist dieser Schritt nicht erforderlich. Wenn Sie jedoch planen, mehrere Domains auf Ihrem Server zu hosten, müssen Sie Apache Virtual Hosts konfigurieren.

Der Standard-Virtual Host befindet sich im Verzeichnis /var/www/html. Dies funktioniert nur für eine einzige Seite. Um einen separaten virtuellen Host für unsere Domain zu erstellen, erstellen wir eine weitere Verzeichnisstruktur innerhalb des Verzeichnisses /var/www, wie gezeigt.

A virtual host is a separate file that contains configurations that allow you to set up a separate domain from the default one. For this guide, we will set up a virtual host for the domain crazytechgeek.info.

Zusätzlich können Sie auch ein Verzeichnis zum Speichern von Protokolldateien erstellen.

$ sudo mkdir -p /var/www/crazytechgeek.info/html

Dann bearbeiten Sie die Dateiberechtigungen mit der Umgebungsvariable $USER, wie gezeigt.

$ sudo mkdir -p /var/www/crazytechgeek.info/log

Passen Sie auch die Berechtigungen des Webroot-Verzeichnisses wie gezeigt an.

$ sudo chown -R $USER:$USER /var/www/crazytechgeek.info/html

Erstellen Sie als nächstes eine Beispieldatei index.html, wie gezeigt.

$ sudo chmod -R 755 /var/www

Drücken Sie auf der Tastatur die Taste 'i' und fügen Sie einige Beispieldaten ein, wie gezeigt, die im Webbrowser angezeigt werden, wenn Sie den virtuellen Host testen.

$ sudo vim /var/www/crazytechgeek.info/html/index.html

Speichern und verlassen Sie die Konfigurationsdatei.

<html>
  <head>
    <title>Welcome to crazytechgeek.info!</title>
  </head>
  <body>
    <h1>Success! The crazytechgeek.info virtual host is up and perfectly working!</h1>
  </body>
</html>

Speichern und Schließen Sie die Konfigurationsdatei.

Nachdem Sie die Beispiel-Indexdatei und das Verzeichnis erstellt haben, können Sie nun fortfahren und die virtuelle Hostdatei erstellen. Die virtuelle Hostdatei enthält die Seitenkonfiguration Ihrer Domain und weist Apache an, wie es auf Anfragen von Clients reagieren soll.

Die virtuelle Hostdatei enthält die Seitenkonfiguration Ihrer Domain und weist Apache an, wie es auf Anfragen von Clients reagieren soll. Um fortzufahren, müssen Sie 2 Verzeichnisse erstellen: das sites-available und das sites-enabled Verzeichnis.

Die virtuelle Hostdatei wird im sites-available Verzeichnis gespeichert, während das sites-enabled Verzeichnis den symbolischen Link zur virtuellen Hostdatei enthält.

Erstellen Sie beide Verzeichnisse wie gezeigt.

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

Als nächstes bearbeiten Sie die Hauptkonfigurationsdatei des Apache-Webservers und weisen Apache an, wo sich die virtuelle Hostdatei im sites-enabled-Verzeichnis befindet.

$ sudo vim /etc/httpd/conf/httpd.conf

Fügen Sie die Zeile wie gezeigt ganz am Ende der Konfigurationsdatei hinzu.

IncludeOptional sites-enabled/*.conf

Speichern und schließen.

Erstellen Sie nun eine virtuelle Hostdatei wie gezeigt:

$ sudo vim /etc/httpd/sites-available/crazytechgeek.info

Fügen Sie den folgenden Inhalt ein und ersetzen Sie crazytechgeek.info durch Ihre eigene Domain.

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

Speichern und schließen Sie die Datei.

Aktivieren Sie nun die virtuelle Hostdatei, indem Sie einen symbolischen Link im sites-enabled Verzeichnis erstellen.

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

Anpassen der SELinux-Berechtigungen für virtuelle Hosts

CentOS 8 und RHEL 8 werden mit SELinux ausgeliefert, das ein Sicherheitsmodul zur Stärkung der Sicherheit des Linux-Systems ist. Da Sie im vorherigen Schritt ein benutzerdefiniertes Protokoll Verzeichnis konfiguriert haben, müssen Sie einige SELinux-Richtlinien aktualisieren, um den Apache-Webserver anzuweisen, in das Verzeichnis zu schreiben.

Es gibt 2 Ansätze zur Anpassung der SELinux Apache-Richtlinien: Die Anpassung von Richtlinien universell und die Richtlinien in einem Verzeichnis. Letzteres wird bevorzugt, da es bevorzugt wird.

Anpassen von SELinux-Richtlinien in einem Verzeichnis

Das Bearbeiten von SELinux Berechtigungen für das Protokollverzeichnis gibt Ihnen absolute Kontrolle über die Richtlinien des Apache-Webservers. Diese Methode ist ziemlich langwierig und erfordert, dass Sie den Kontexttyp für zusätzliche Verzeichnisse, die in der Konfigurationsdatei des virtuellen Hosts angegeben sind, manuell konfigurieren.

Bevor Sie beginnen, bestätigen Sie zunächst den durch SELinux zugewiesenen Kontexttyp für das Protokollverzeichnis:

$ sudo ls -dlZ /var/www/crazytechgeek.info/log/

Die Ausgabe sollte ähnlich wie unten aussehen.

Set SELinux Policies on Apache Log Directory

Aus der Ausgabe geht hervor, dass der festgelegte Kontext httpd_sys_content_t ist. Dies zeigt an, dass der Webserver nur Dateien im Protokollverzeichnis lesen kann. Sie müssen diesen Kontext in httpd_log_t ändern, um Apache zu ermöglichen, Protokolleinträge im Verzeichnis zu generieren und hinzuzufügen.

Führen Sie daher den Befehl aus:

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

Wenn Sie den folgenden Fehler erhalten „semanage: Befehl nicht gefunden„.

bedeutet dies, dass die Pakete, die den semanage Befehl bereitstellen, nicht installiert sind. Um diesen Fehler zu beheben, müssen Sie diese Pakete installieren. Überprüfen Sie zunächst, welche Pakete den semanage-Befehl bereitstellen, indem Sie Folgendes ausführen:

$ sudo dnf whatprovides /usr/sbin/semanage

Die Ausgabe gibt uns das Paket, das den semanage bereitstellt, nämlich policycoreutils-python-utils.

Installieren Sie das Paket jetzt, wie im DNF-Paketmanager gezeigt.

$ sudo dnf install policycoreutils-python-utils

Der Befehl zum Ändern des Kontexts sollte nun funktionieren.

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

Um die Änderungen zu speichern und dauerhaft zu machen, geben Sie den restorecon Befehl wie gezeigt ein:

$ sudo restorecon -R -v /var/www/crazytechgeek.info/log

Sie können die Änderungen bestätigen, indem Sie den Befehl erneut ausführen:

$ sudo ls -dlZ /var/www/crazytechgeek.info/log/
Check SELinux Context Type

Beachten Sie, dass der Kontexttyp in der Ausgabe auf httpd_log_t geändert wurde.

Starten Sie Apache neu, damit die Änderungen übernommen werden.

$ sudo systemctl restart httpd

Sie können jetzt bestätigen, ob Apache die Protokolldateien im Protokollverzeichnis speichert, indem Sie den Inhalt wie folgt auflisten:

$ ls -l /var/www/crazytechgeek.info/log/

Sie sollten zwei Protokolldateien sehen können: Fehlerprotokoll und Anforderungsprotokolldateien.

Check Apache Log Files

Testen des Apache Virtual Host

Zuletzt müssen Sie sicherstellen, dass der Apache-Webserver Ihre virtuelle Host-Datei bereitstellt. Öffnen Sie hierfür Ihren Browser und gehen Sie zur IP-Adresse oder zum Domainnamen Ihres Servers:

http://domain-name
Check Apache Virtual Host for Website

Perfekt! Dies zeigt, dass alles gut gelaufen ist und unser virtueller Host wie erwartet bedient wird.

Abschluss

In diesem Leitfaden haben wir gelernt, wie man den Apache-Webserver auf CentOS 8 und RHEL 8 installiert und auch wie man eine virtuelle Host-Datei konfiguriert, um Inhalte für eine zusätzliche Domain zu bedienen. Fühlen Sie sich frei, mehrere virtuelle Host-Dateien zu konfigurieren, um zusätzliche Domains zu berücksichtigen.

Wenn Sie einen kompletten Hosting-Stack einrichten möchten, empfehle ich Ihnen, ein LAMP-Stack auf CentOS 8 zu installieren.

Source:
https://www.tecmint.com/install-apache-with-virtual-host-on-centos-8/