Was sind Apache Virtual Hosts?
Virtueller Host Der Begriff bezieht sich auf die Methode, mehr als eine Website wie host1.domain.com, host2.domain.com oder www.domain1.com, www.domain2.com usw. auf einem einzigen System zu betreiben. Es gibt zwei Arten von virtuellem Hosting in Apache, nämlich IP-basiert virtuelles Hosting und namensbasiert virtuelles Hosting. Mit IP-basiertem virtuellem Hosting können Sie mehrere Websites oder Domains auf demselben System hosten, aber jede Website/Domain hat eine andere IP-Adresse. Mit namensbasiertem virtuellem Hosting können Sie mehrere Websites/Domains unter derselben IP-Adresse hosten. Virtuelles Hosting kann nützlich sein, wenn Sie mehrere Websites und Domains von einem einzigen physischen Server oder VPS aus hosten möchten. Ich hoffe, Sie haben die Grundidee der virtuellen Apache-Hosts verstanden. Heute werden wir sehen, wie man virtuelle Apache-Hosts in Ubuntu 18.04 LTS konfiguriert.
Herunterladen - Kostenloses eBook:"Apache HTTP Server Cookbook"Konfigurieren Sie virtuelle Apache-Hosts in Ubuntu 18.04 LTS
Die IP-Adresse meiner Testbox lautet 192.168.225.22 und der Hostname ist ubuntuserver .
Zuerst werden wir sehen, wie namensbasierte virtuelle Hosts im Apache-Webserver konfiguriert werden.
Namensbasierte virtuelle Hosts konfigurieren
1. Installieren Sie den Apache-Webserver
Stellen Sie sicher, dass Sie den Apache-Webserver installiert haben. Um es unter Ubuntu zu installieren, führen Sie Folgendes aus:
$ sudo apt-get install apache2
Sobald Apache installiert ist, testen Sie, ob es funktioniert oder nicht, indem Sie die Apache-Testseite im Browser durchsuchen.
Öffnen Sie Ihren Webbrowser und verweisen Sie auf http://IP_Address oder http://localhost . Sie sollten eine Seite wie unten sehen.
Gut! Der Apache-Webserver ist hochgefahren und funktioniert!!
2. Webverzeichnis für jeden Host erstellen
Ich werde zwei virtuelle Hosts erstellen, nämlich ostechnix1.lan und ostechnix2.lan .
Lassen Sie uns ein Verzeichnis für den ersten virtuellen Host ostechnix1.lan erstellen. Dieses Verzeichnis wird zum Speichern der Daten unserer virtuellen Hosts benötigt.
Geben Sie dazu ein:
$ sudo mkdir -p /var/www/html/ostechnix1.lan/public_html
Erstellen Sie ebenso ein Verzeichnis für den zweiten virtuellen Host ostechnix2.lan, wie unten gezeigt.
$ sudo mkdir -p /var/www/html/ostechnix2.lan/public_html
Die beiden oben genannten Verzeichnisse gehören dem Root-Benutzer. Wir müssen den Besitz auf den regulären Benutzer ändern.
Führen Sie dazu Folgendes aus:
$ sudo chown -R $USER:$USER /var/www/html/ostechnix1.lan/public_html
$ sudo chown -R $USER:$USER /var/www/html/ostechnix2.lan/public_html
Hier, $USER bezieht sich auf den aktuell angemeldeten Benutzer.
Legen Sie als Nächstes Leseberechtigungen für das Apache-Stammverzeichnis fest, z. B. /var/www/html/, indem Sie den Befehl verwenden:
$ sudo chmod -R 755 /var/www/html/
Wir tun dies, weil wir bereits für jeden virtuellen Host ein separates Verzeichnis zum Speichern seiner Daten erstellt haben. Also haben wir das Apache-Root-Verzeichnis für alle Benutzer außer dem Root-Benutzer schreibgeschützt gemacht.
Wir haben die erforderlichen Verzeichnisse zum Speichern von Daten jedes virtuellen Hosts erstellt und die richtigen Berechtigungen eingerichtet. Jetzt ist es an der Zeit, einige Beispielseiten zu erstellen, die von jedem virtuellen Host bereitgestellt werden.
3. Demo-Webseiten für jeden Host erstellen
Lassen Sie uns eine Beispielseite für die Website ostechnix1.lan erstellen. Führen Sie dazu Folgendes aus:
$ sudo vi /var/www/html/ostechnix1.lan/public_html/index.html
Fügen Sie darin die folgenden Zeilen hinzu:
<html> <head> <title>www.ostechnix.lan</title> </head> <body> <h1>Hello, This is a test page for ostechnix1.lan website</h1> </body> </html>
Speichern und schließen Sie die Datei.
Erstellen Sie auf ähnliche Weise eine Beispielseite für die Website ostechnix2.lan:
$ sudo vi /var/www/html/ostechnix2.lan/public_html/index.html
Fügen Sie darin die folgenden Zeilen hinzu:
<html> <head> <title>www.ostechnix.lan</title> </head> <body> <h1>Hello, This is a test page for ostechnix2.lan website</h1> </body> </html>
Speichern und schließen Sie die Datei.
4. Konfigurationsdatei für jeden Host erstellen
Als nächstes müssen wir Konfigurationsdateien für jeden virtuellen Host erstellen. Lassen Sie uns dies zunächst für die Website ostechnix1.lan tun.
Kopieren Sie die standardmäßige virtuelle Hostdatei namens 000-default.conf Inhalte in die neuen virtuellen Hostdateien wie unten.
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ostechnix1.lan.conf
$ sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ostechnix2.lan.conf
Bitte beachten Sie, dass Sie alle Konfigurationsdateien mit .conf speichern müssen Erweiterung am Ende, sonst funktioniert es nicht.
Ändern Sie nun die Konfigurationsdateien so, dass sie mit unseren virtuellen Hosts übereinstimmen.
Bearbeiten Sie ostechnix.lan1.conf Datei:
$ sudo vi /etc/apache2/sites-available/ostechnix1.lan.conf
Bearbeiten/ändern Sie die ServerAdmin-, ServerName-, ServerAlias- und DocumentRoot-Werte, die mit dem virtuellen Host übereinstimmen.
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin [email protected] ServerName ostechnix1.lan ServerAlias www.ostechnix1.lan DocumentRoot /var/www/html/ostechnix1.lan/public_html # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost>
Speichern und schließen Sie die Datei.
Als nächstes bearbeiten Sie ostechnix2.lan.conf Datei:
$ sudo vi /etc/apache2/sites-available/ostechnix2.lan.conf
Nehmen Sie die erforderlichen Änderungen vor.
<VirtualHost *:80> # The ServerName directive sets the request scheme, hostname and port that # the server uses to identify itself. This is used when creating # redirection URLs. In the context of virtual hosts, the ServerName # specifies what hostname must appear in the request's Host: header to # match this virtual host. For the default virtual host (this file) this # value is not decisive as it is used as a last resort host regardless. # However, you must set it for any further virtual host explicitly. #ServerName www.example.com ServerAdmin [email protected] ServerName ostechnix2.lan ServerAlias www.ostechnix2.lan DocumentRoot /var/www/html/ostechnix2.lan/public_html # Available loglevels: trace8, ..., trace1, debug, info, notice, warn, # error, crit, alert, emerg. # It is also possible to configure the loglevel for particular # modules, e.g. #LogLevel info ssl:warn ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined # For most configuration files from conf-available/, which are # enabled or disabled at a global level, it is possible to # include a line for only one particular virtual host. For example the # following line enables the CGI configuration for this host only # after it has been globally disabled with "a2disconf". #Include conf-available/serve-cgi-bin.conf </VirtualHost>
Datei speichern/schließen.
5. Konfigurationsdateien für virtuelle Hosts aktivieren
Nachdem Sie die erforderlichen Änderungen vorgenommen haben, deaktivieren Sie die standardmäßige Konfigurationsdatei des virtuellen Hosts, d. h. 000.default.conf , und aktivieren Sie alle neu erstellten Konfigurationsdateien für virtuelle Hosts wie unten gezeigt.
$ sudo a2dissite 000-default.conf
$ sudo a2ensite ostechnix1.lan.conf
$ sudo a2ensite ostechnix2.lan.conf
Starten Sie den Apache-Webserver neu, um die Änderungen zu übernehmen.
$ sudo systemctl restart apache2
Das ist es. Wir haben erfolgreich virtuelle Hosts in Apache konfiguriert. Lassen Sie uns weitermachen und prüfen, ob sie funktionieren oder nicht.
6. Virtuelle Hosts testen
Öffnen Sie die /etc/hosts-Datei in einem beliebigen Editor:
$ sudo vi /etc/hosts
Fügen Sie alle Ihre virtuellen Websites/Domains nacheinander wie unten beschrieben hinzu.
[...] 192.168.225.22 ostechnix1.lan 192.168.225.22 ostechnix2.lan [...]
Bitte beachten Sie, dass Sie, wenn Sie von entfernten Systemen auf die virtuellen Hosts zugreifen möchten, die obigen Zeilen in die Datei /etc/hosts jedes entfernten Systems einfügen müssen.
Speichern und schließen Sie die Datei.
Öffnen Sie Ihren Webbrowser und zeigen Sie ihn auf http://ostechnix1.lan oder http://ostechnix2.lan .
ostechnix1.lan Testseite:
ostechnix2.lan Testseite:
Herzliche Glückwünsche! Sie können jetzt auf alle Ihre Websites zugreifen. Von nun an können Sie die Daten hochladen und von verschiedenen Websites aus bedienen.
Wie Sie bemerkt haben, haben wir dieselbe IP-Adresse (z. B. 192.168.225.22) zum Hosten von zwei verschiedenen Websites (http://ostechnix1.lan und http://ostechnix2.lan) verwendet. Das nennen wir namensbasiertes virtuelles Hosting. Hoffe das hilft. Ich werde Ihnen in der nächsten Anleitung zeigen, wie Sie IP-basiertes virtuelles Hosting konfigurieren. Bleiben Sie bis dahin dran!