Website-Suche

So installieren Sie Apache mit Virtual Host unter CentOS 8


Der Apache-Webserver ist ein Open-Source- und beliebter HTTP-Webserver, der weiterhin einen enormen Marktanteil in der Hosting-Branche genießt. Es wird mit zahlreichen Funktionen ausgeliefert, darunter Modulerweiterungen, Unterstützung mehrerer Protokolle, vereinfachte Konfiguration und Unterstützung mehrerer Sprachen, um nur einige zu nennen.

Lesen Sie auch: So installieren Sie Nginx unter CentOS 8

In dieser Anleitung führen wir Sie durch die Installation des Apache-Webservers auf CentOS 8 und RHEL 8 mit einer Virtual Host-Umgebung. Zum Zeitpunkt der Erstellung dieses Tutorials ist die neueste Version von Apache Apache 2.2.43.

Installieren des Apache-Webservers

Um zu beginnen, aktualisieren Sie zunächst Ihre CentOS 8- oder RHEL 8-Systempaketliste mit dem folgenden dnf-Befehl.

sudo dnf update

Sobald das Update abgeschlossen ist, 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 überprüfen, indem Sie den Befehl rpm ausführen.

rpm -qi httpd

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

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

sudo systemctl start httpd

Um zu bestätigen, ob der Dienst ausgeführt wird, führen Sie ihn aus.

sudo systemctl status httpd

In der Ausgabe zeigt der Status „aktiv“ in Grün an, dass der Apache-Webserver betriebsbereit ist.

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

http://server-ip  

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

curl ifconfig.me 
OR
curl -4 icanhazip.com

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

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

Verwalten des Apache-Webservers

Wenn Apache installiert und ausgeführt ist, können Sie das Inspektionstool systemctl verwenden, um Apache zu verwalten.

Um beispielsweise Apache zu stoppen, führen Sie den folgenden Befehl aus:

sudo systemctl stop httpd

Um den Dienst erneut zu starten, führen Sie Folgendes aus:

sudo systemctl start httpd

Wenn Sie Änderungen an einer seiner Konfigurationsdateien vorgenommen haben und einen Neustart benötigen, um die Änderungen zu übernehmen, führen Sie den folgenden Befehl aus:

sudo systemctl restart httpd

Ein Neustart des Dienstes führt normalerweise zu einer Dienstunterbrechung. Eine bessere Alternative besteht darin, einfach ohne Verbindungsunterbrechung neu zu laden.

sudo systemctl reload httpd

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

sudo systemctl enable httpd

Wenn Sie den Dienst beim Booten nicht automatisch starten möchten, führen Sie Folgendes aus:

sudo systemctl disable httpd

Einrichten virtueller Apache-Hosts

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

Ein virtueller Host ist eine separate Datei, die Konfigurationen enthält, mit denen Sie eine separate Domäne als die Standarddomäne einrichten können. Für diese Anleitung richten wir einen virtuellen Host für die Domain crazytechgeek.info ein.

Der standardmäßige virtuelle Host befindet sich im Verzeichnis /var/www/html. Dies funktioniert nur für eine einzelne Site. Um einen separaten virtuellen Host für unsere Domain zu erstellen, erstellen wir wie gezeigt eine weitere Verzeichnisstruktur im Verzeichnis /var/www.

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

Darüber hinaus können Sie auch ein Verzeichnis zum Speichern von Protokolldateien erstellen.

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

Bearbeiten Sie als Nächstes die Dateiberechtigungen mithilfe der Umgebungsvariablen $USER wie gezeigt.

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

Passen Sie außerdem die Berechtigungen des Webroot-Verzeichnisses wie gezeigt an.

sudo chmod -R 755 /var/www

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

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

Drücken Sie den Buchstaben 'i' auf der Tastatur und fügen Sie wie gezeigt einige Beispielinhalte ein, die beim Testen des virtuellen Hosts im Webbrowser angezeigt werden.

<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 beenden Sie die Konfigurationsdatei.

Nachdem die Beispielindexdatei und das Site-Verzeichnis erstellt wurden, können Sie nun fortfahren und die virtuelle Hostdatei erstellen. Die virtuelle Hostdatei enthält die Site-Konfiguration Ihrer Domain und weist Apache an, wie es auf Kundenanfragen reagieren wird.

Die virtuelle Hostdatei enthält die Site-Konfiguration Ihrer Domain und weist Apache an, wie es auf Kundenanfragen reagieren wird. Als nächstes müssen Sie jedoch zwei Verzeichnisse erstellen: die Verzeichnisse sites-available und sites-enabled.

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

Erstellen Sie beide Verzeichnisse wie gezeigt.

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

Ändern Sie als Nächstes die Hauptkonfigurationsdatei des Apache-Webservers und weisen Sie Apache an, wo sich der virtuelle Host im Verzeichnis „sites-enabled“ befinden soll.

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

Hängen Sie die Zeile wie am Ende der Konfigurationsdatei gezeigt an.

IncludeOptional sites-enabled/*.conf

Speichern und schließen.

Erstellen Sie nun wie gezeigt eine virtuelle Hostdatei:

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

Fügen Sie den Inhalt unten ein und ersetzen Sie crazytechgeek.info durch Ihren eigenen Domainnamen.

<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 beenden Sie die Datei.

Aktivieren Sie nun die virtuelle Hostdatei, indem Sie einen symbolischen Link im Verzeichnis sites-enabled 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, einem Sicherheitsmodul zur Stärkung der Sicherheit des Linux-Systems. 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 zwei Ansätze zum Anpassen von SELinux-Apache-Richtlinien: Anpassen von Anpassungsrichtlinien allgemein und der Richtlinien für ein Verzeichnis. Letzteres wird bevorzugt, weil es bevorzugter ist.

Anpassen von SELinux-Richtlinien für ein Verzeichnis

Durch Bearbeiten der SELinux-Berechtigungen für das Protokollverzeichnis haben Sie die absolute Kontrolle über die Richtlinien des Apache-Webservers. Diese Methode ist ziemlich langwierig und erfordert die manuelle Konfiguration des Kontexttyps für zusätzliche Verzeichnisse, die in der Konfigurationsdatei des virtuellen Hosts angegeben sind.

Bevor Sie beginnen, bestätigen Sie zunächst den Kontexttyp, der dem Protokollverzeichnis von SELinux zugewiesen wurde:

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

Die Ausgabe sollte der unten aufgeführten ähneln.

Aus der Ausgabe geht hervor, dass der festgelegte Kontext httpd_sys_content_t ist. Dies weist darauf hin, dass der Webserver nur Dateien im Protokollverzeichnis lesen kann. Sie müssen diesen Kontext in httpd_log_t ändern, damit Apache Protokolleinträge generieren und dem Verzeichnis hinzufügen kann.

Führen Sie daher den Befehl aus:

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

Wenn Sie die folgende Fehlermeldung erhalten: „semanage: Befehl nicht gefunden“.

Dies bedeutet, dass die Pakete, die den Befehl semanage bereitstellen, nicht installiert sind. Um diesen Fehler zu beheben, müssen Sie diese Pakete installieren. Überprüfen Sie jedoch 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 die Semanage bereitstellt, nämlich policycoreutils-python-utils.

Installieren Sie nun das Paket wie gezeigt mit dem DNF-Paketmanager.

sudo dnf install policycoreutils-python-utils

Der Befehl zum Ändern des Kontexts sollte jetzt funktionieren.

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

Um die Änderungen zu speichern und dauerhaft zu machen, führen Sie den Befehl restorecon wie gezeigt aus:

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/

Beachten Sie unbedingt, dass sich der Kontexttyp in httpd_log_t geändert hat, wie in der Ausgabe zu sehen ist.

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

sudo systemctl restart httpd

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

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

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

Testen des virtuellen Apache-Hosts

Schließlich müssen Sie sicherstellen, dass der Apache-Webserver Ihre virtuelle Hostdatei bereitstellt. Öffnen Sie dazu Ihren Browser und rufen Sie die IP-Adresse oder den Domänennamen Ihres Servers auf:

http://domain-name

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

Abschluss

In dieser Anleitung haben wir gelernt, wie man den Apache-Webserver unter CentOS 8 und RHEL 8 installiert und auch eine virtuelle Hostdatei dafür konfiguriert Inhalte für eine zusätzliche Domain bereitstellen. Sie können nach Belieben mehrere virtuelle Hostdateien konfigurieren, um zusätzliche Domänen unterzubringen.

Wenn Sie einen vollständigen Hosting-Stack einrichten möchten, empfehle ich Ihnen, einen LAMP-Stack unter CentOS 8 zu installieren.