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.