Website-Suche

Erstellen von namens- und IP-basierten virtuellen Apache-Hosts unter Linux


Virtuelles Hosting ist ein Konzept, bei dem mehrere Websites oder Domains auf einem einzigen Server gehostet werden, um den Ressourcenaufwand und die Betriebskosten eines Unternehmens oder einer Organisation zu reduzieren.

Der Apache-Webserver vereinfacht das Hosten mehrerer Websites, indem er es Systemadministratoren ermöglicht, virtuelle Hosts für jede Website einfach zu konfigurieren. Virtuelles Hosting kann entweder IP-basiert oder namensbasiert sein.

In diesem Tutorial untersuchen wir, wie Sie virtuelles Hosting in RHEL-basierten Distributionen wie Fedora, CentOS Stream, Rocky Linux und Alma Linux einrichten, indem Sie sowohl IP-basierte als auch namensbasierte virtuelle Hosts in Linux verwenden.

Die Konzepte von Shared Web Hosting und Reseller Web Hosting basieren hauptsächlich auf dieser Funktion von Apache.

Arten von Apache Virtual Hosting unter Linux

Es gibt zwei Arten von virtuellem Hosting, die mit Apache verfügbar sind.

Namensbasiertes virtuelles Hosting

Bei dieser Art des Hostings können mehrere Domains oder Websites mit nur einer einzigen IP-Adresse auf einem einzigen Server gehostet werden. Einfach ausgedrückt, teilen sich alle Domains eine einzige IP-Adresse. Dies ist der am einfachsten zu konfigurierende virtuelle Hosting-Typ, da Sie lediglich die Domänennamen der IP-Adresse zuordnen und dann die virtuellen Apache-Hosts für jeden der Domänennamen konfigurieren müssen.

IP-basiertes virtuelles Hosting

Beim IP-basierten virtuellen Hosting wird jeder Domain eine eindeutige IP-Adresse zugewiesen. Diese IP-Adressen können mit mehreren NIC-Karten oder einer einzelnen NIC-Karte an den Server angehängt werden.

Testumgebung

  • Betriebssystem – Fedora 34
  • Anwendung – Apache-Webserver
  • IP-Adresse – 192.168.2.105
  • IP-Adresse – 192.168.2.106
  • Domäne – www.mydomain1.com
  • Domäne – www.mydomain2.com

So richten Sie IP-basierte und namensbasierte virtuelle Apache-Hosts ein

Bevor Sie beginnen, stellen Sie sicher, dass der Apache-Webserver auf Ihrem System installiert ist, indem Sie den Befehl dnf verwenden, wie gezeigt.

$ sudo dnf install httpd -y

Namensbasiertes virtuelles Hosting einrichten

Der erste Schritt beim Einrichten von namensbasiertem virtuellem Hosting besteht darin, die Auflösung des Domänennamens in der Datei /etc/hosts einzurichten. Führen Sie daher die folgenden Befehle als Root-Benutzer aus, um die Domänennameneinträge hinzuzufügen, die auf die IP-Adresse des Hosts verweisen.

$ echo '192.168.2.105 www.mydomain1.com' >> /etc/hosts
echo '192.168.2.105 www.mydomain2.com' >> /etc/hosts

Der nächste Schritt besteht darin, ein Verzeichnis zu erstellen, das die Website-Dateien enthält. Daher erstellen wir zwei Verzeichnisse für die virtuellen Hosts im Document Root, dem Ordner /var/www/html in der Apache-Konfiguration.

$ sudo mkdir /var/www/html/mydomain1.com/
sudo mkdir /var/www/html/mydomain2.com/

Der nächste Schritt besteht darin, die virtuelle Hostdatei zu ändern, die Apache anweist, die IP anzuweisen, auf eingehende Apache-Webserver-Anfragen für alle Domänennamen zu warten. Öffnen Sie daher die Apache-Konfigurationsdatei mit Ihrem bevorzugten Texteditor.

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

Fügen Sie die folgenden Codeblöcke für die beiden virtuellen Hosts hinzu.

<VirtualHost 192.168.2.105:80>
   ServerName mydomain1.com
   ServerAlias www.mydomain1.com
   DocumentRoot /var/www/html/mydomain1.com/
ErrorLog logs/www.mydomain1.com-error_log
CustomLog logs/www.mydomain1.com-access_log common
</VirtualHost>


<VirtualHost 192.168.2.105:80>
    ServerName mydomain2.com
    ServerAlias www.mydomain2.com
    DocumentRoot /var/www/html/mydomain2.com
ErrorLog logs/www.mydomain2.com-error_log
CustomLog logs/www.mydomain2.com-access_log common
</VirtualHost>

Speichern Sie die Änderungen und beenden Sie den Vorgang. Überprüfen Sie als Nächstes, ob die Syntax in Ordnung ist und keine Fehler vorhanden sind.

$ httpd -t

Als nächstes erstellen wir HTML-Testseiten für jede der Domains und fügen einige Inhalte hinzu, um zu bestätigen, ob alles über den Browser ordnungsgemäß funktioniert.

Für mydomain1.com

Erstellen Sie eine index.html Datei im Verzeichnis mydomain1.com.

$ sudo vim /var/www/html/mydomain1.com/index.html 

Fügen Sie die folgenden Zeilen ein.

<html>
  <head>
    <title>My sample site</title>
  </head>
  <body>
    <h1>Success! Welcome to mydomain1.com.</h1>
  </body>
</html>

Speichern Sie die Änderungen und beenden Sie die Datei.

Für mydomain2.com

Erstellen Sie eine index.html Datei in mydomain2.com Verzeichnis.

$ sudo vim /var/www/html/mydomain2.com/index.html 

Fügen Sie die folgenden Zeilen ein.

<html>
  <head>
    <title>My sample site</title>
  </head>
  <body>
    <h1>Success! Welcome to mydomain2.com.</h1>
  </body>
</html>

Speichern Sie die Änderungen und beenden Sie die Datei.

Starten Sie nun den Apache-Webserver und bestätigen Sie, dass er läuft.

$ sudo systemctl start httpd
sudo systemctl status httpd

Wenn Sie eine Firewall aktiviert haben, lassen Sie den HTTP- und HTTPS-Datenverkehr (falls erforderlich) zu.

$ sudo firewall-cmd --add-service=http --zone=public --permanent
sudo firewall-cmd --add-service=https --zone=public --permanent
sudo firewall-cmd --reload

Testen Sie nun die Domains über einen Browser.

Einrichten von IP-basiertem virtuellem Hosting Linux

Beim IP-basierten virtuellen Hosting werden, wie der Name schon sagt, mehrere IP-Adressen verwendet, die Ihrem Linux-Server zugewiesen sind. In den meisten Fällen sind zwei oder mehr NIC-Karten an Ihr System angeschlossen, um mehrere IP-Adressen bereitzustellen.

Das Ziel des IP-basierten virtuellen Hostings besteht darin, jeder Domain eine eindeutige IP-Adresse zuzuweisen, die von keiner anderen Domain verwendet wird.

Dies ist ideal für Situationen, in denen Websites mit einem SSL-Zertifikat (mod_ssl) verschlüsselt sind oder auf verschiedenen Ports ausgeführt werden. In unserem Setup haben wir zwei NIC-Adapter.

Um die IP-Konfiguration auf Ihrem System anzuzeigen, führen Sie den Befehl ifconfig oder ip a aus.

$ ifconfig
OR
ip addr

Unser Server verfügt über zwei IP-Adressen, die jeweils einer Netzwerkkarte zugeordnet sind. Die IP 192.168.2.106 ist ens160 und 192.168.2.105 ens224 zugewiesen.

Lassen Sie uns noch einmal die Datei httpd.conf konfigurieren.

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

Erstellen Sie virtuelle Hosts für beide Domänen, wie gezeigt. Stellen Sie sicher, dass jede IP-Adresse der jeweiligen Konfiguration des virtuellen Hosts zugewiesen ist.

<VirtualHost 192.168.2.105:80>
   ServerName mydomain1.com
   ServerAlias www.mydomain1.com
   DocumentRoot /var/www/html/mydomain1.com/
ErrorLog logs/www.mydomain1.com-error_log
CustomLog logs/www.mydomain1.com-access_log common
</VirtualHost>


<VirtualHost 192.168.2.106:80>
    ServerName mydomain2.com
    ServerAlias www.mydomain2.com
    DocumentRoot /var/www/html/mydomain2.com
ErrorLog logs/www.mydomain2.com-error_log
CustomLog logs/www.mydomain2.com-access_log common
</VirtualHost>

Speichern und beenden Sie die Konfigurationsdatei. Ändern Sie als Nächstes die Datei /etc/hosts wie gezeigt.

$ echo '192.168.2.105 www.mydomain1.com' >> /etc/hosts
echo '192.168.2.106 www.mydomain2.com'>> /etc/hosts

Bestätigen Sie die Eingaben:

$ cat /etc/hosts

192.168.2.105 www.mydomain1.com
192.168.2.106 www.mydomain2.com

Starten Sie als Nächstes den Apache-Webserver neu, damit die Änderungen wirksam werden.

$ sudo systemctl restart httpd

Testen Sie abschließend Ihr IP-basiertes virtuelles Hosting-Setup, indem Sie auf die URLs wie gezeigt zugreifen.

http://192.168.2.105
http://192.168.2.106

Dieser Test bestätigt, dass das IP-basierte virtuelle Hosting genau wie erwartet funktioniert!

Schlussfolgerung

Und das war's für diesen Vortrag. Wir hoffen, dass Sie beide Arten von virtuellem Hosting nahtlos und ohne große Probleme konfigurieren können. Wir freuen uns über Ihr Feedback zu diesem Leitfaden.

Verwandte Artikel: