Fig 1: Apache IP-gebaseerde VirtualHost.
Op naam gebaseerde VirtualHost: In op naam gebaseerde VirtualHost heeft een Apache-server een enkel IP-adres en meerdere domeinnamen geconfigureerd voor elke website. In een DNS-server wordt aan elk van deze domeinnamen het IP-adres van de Apache-server toegewezen. Afhankelijk van de domeinnaam die de client heeft gebruikt, retourneert de server verschillende websites.
Fig 2: op Apache-naam gebaseerde VirtualHost.
In dit artikel laat ik je zien hoe je de op Apache-naam gebaseerde VirtualHost configureert. Ik zal Ubuntu 18 . gebruiken.04 LTS voor de demonstratie. Maar het zou moeten werken op elke moderne Linux-distributie met weinig tot geen verandering. Dus laten we beginnen.
Apache 2-webserver installeren:
Apache 2-webserver is beschikbaar in de officiële pakketrepository van Ubuntu 18.04 LTS. U kunt het dus eenvoudig installeren met de APT-pakketbeheerder.
Werk eerst de cache van de APT-pakketrepository bij met de volgende opdracht:
$ sudo apt-update
Voer nu de volgende opdracht uit om de Apache 2-webserver te installeren:
$ sudo apt installeer apache2
Druk nu op ja en druk vervolgens op
Apache 2-webserver moet zijn geïnstalleerd.
DNS configureren:
Nu moet u de DNS-server configureren om de domeinnamen die u voor VirtualHost wilt gebruiken toe te wijzen aan het IP-adres van uw Apache-server.
U kunt het IP-adres van uw Apache-server vinden met het volgende commando:
$ ip een | egrep "inet"Zoals je kunt zien, is het IP-adres in mijn geval: 192.168.21.166. Het zal voor jou anders zijn. Dus zorg ervoor dat je het vanaf nu vervangt door de jouwe.
Als u wilt leren hoe u Apache VirtualHost lokaal kunt configureren, kunt u de /etc/hosts bestand voor lokale DNS/naamomzetting.
Om lokale DNS-resolutie te configureren, opent u de /etc/hosts bestand met nano als volgt:
$ sudo nano /etc/hosts
Voeg nu de regel toe zoals aangegeven in de onderstaande schermafbeelding aan het bestand. Druk vervolgens op
Nu zou de lokale naamomzetting moeten werken.
Directory-structuren:
Ik wil alle websitegegevens van mijn Apache VirtualHost in een specifieke map bewaren /www. Hier wil ik een map maken voor elke gebruiker. Elke gebruiker heeft zijn/haar eigen public_html/ en logboeken/ map ook.
Bijvoorbeeld voor 3 gebruikers bob (voorbeeld1.com), alice (voorbeeld2.com), linda (voorbeeld3.com), de mappenstructuur is als volgt:
/www- voorbeeld 1.com/
- www/
- public_html/
- inhoudsopgave.html
- logboeken/
- voorbeeld2.com/
- www/
- public_html/
- inhoudsopgave.html
- logboeken/
- voorbeeld3.com/
- www/
- public_html/
- inhoudsopgave.html
- logboeken/
Een gemakkelijke manier om dat te doen, is door een sjabloon- of skeletmap te maken en de mapstructuur daar te plaatsen. Maak vervolgens elke gebruiker met behulp van deze skeletmap.
Kopieer eerst de inhoud van de standaard skeletmap /etc/skel naar een andere map /etc/skel-www als volgt:
$ sudo cp -rv /etc/skel /etc/skel-www
Navigeer nu als volgt naar de nieuwe skeletmap:
$ cd /etc/skel-www
Maak vervolgens als volgt de gewenste directorystructuur in de skeletdirectory:
$ sudo mkdir -p www/public_html,logs
U kunt ook een standaard maken inhoudsopgave.html bestand in de public_html/ map als je wilt.
$ echo "Het werkt
" | sudo tee www/public_html/index.html
Maak nu de /www map met het volgende commando:
$ sudo mkdir /www
Gebruikers aanmaken:
Nu kunt u de gebruiker maken bob voor www.voorbeeld 1.com als volgt:
$ sudo useradd --create-home --home-dir /www/example1.com --shell/bin/bash --gid www-data --skel /etc/skel-www bob
Maak op dezelfde manier de gebruiker alice voor www.voorbeeld2.com als volgt:
$ sudo useradd --create-home --home-dir /www/example2.com --shell /bin/bash--gid www-data --skel /etc/skel-www alice
Maak opnieuw de gebruiker linda voor www.voorbeeld3.com als volgt:
$ sudo useradd --create-home --home-dir /www/example3.com --shell /bin/bash--gid www-data --skel /etc/skel-www linda
Hier heb ik de primaire groep van elke gebruiker toegewezen aan: www-gegevens. Standaard draait de Apache-server als deze groep. Als ik dat niet had gedaan, heeft de Apache-server geen toegang tot de bestanden in de public_html/ directory en maak logbestanden aan in de logboeken/ map.
Apache VirtualHost configureren:
Nu bent u klaar om Apache VirtualHost te configureren voor 3 gebruikers bob (www.voorbeeld 1.com), alice (www.voorbeeld2.com) en linda (www.voorbeeld3.com).
De standaard Apache-siteconfiguratiemap op Ubuntu is: /etc/apache2/sites-beschikbaar.
Navigeer nu naar de map /etc/apache2/sites-beschikbaar/ als volgt.
$ cd /etc/apache2/sites-beschikbaar/
Maak eerst een nieuw configuratiebestand voor bob www.voorbeeld 1.com.conf als volgt:
$ sudo nano www.voorbeeld 1.com.conf
Er moet een teksteditor worden geopend.
Typ nu de volgende regels:.
Servernaam voorbeeld1.comServeralias www.voorbeeld 1.com
DocumentRoot "/www/voorbeeld1.com/www/public_html"
Opties -VolgSymLinks +MultiViews +Indexen
ToestaanAlles overschrijven
Vereisen dat alles is verleend
ErrorLog "/www/voorbeeld1.com/www/logs/error.loggen"
CustomLog "/www/voorbeeld1.com/www/logs/access.log" gecombineerd
OPMERKING: Wijzig de vetgedrukte teksten volgens uw vereisten.
Eindelijk, het configuratiebestand www.voorbeeld.com.conf zou er als volgt uit moeten zien. druk op
om gewoon het configuratiebestand te kopiëren voor bob (www.voorbeeld 1.com.conf) en breng de kleine wijzigingen aan die nodig zijn.
Kopieer het configuratiebestand van bob voor alice en linda met de volgende commando's:
$ sudo cp -v www.voorbeeld 1.com.conf www.voorbeeld2.com.conf$ sudo cp -v www.voorbeeld 1.com.conf www.voorbeeld3.com.conf
Bewerk nu het configuratiebestand van alice als volgt:
$ sudo nano www.voorbeeld2.com.conf
Wijzig nu alle exemplaren van voorbeeld 1 naar voorbeeld2. Sla het bestand vervolgens op.
Doe hetzelfde voor linda.
$ sudo nano www.voorbeeld3.com.conf
Alle exemplaren van . wijzigen voorbeeld 1 naar voorbeeld3 en sla het bestand op.
VirtualHost-configuraties inschakelen:
Schakel nu de Apache-standaardwebsiteconfiguratie als volgt uit:
$ sudo a2dissite 000-standaard.conf
Schakel nu de VirtualHost-configuraties in www.voorbeeld 1.com.conf, www.voorbeeld2.com.conf, www.voorbeeld3.com.conf als volgt:
$ sudo a2ensite www.voorbeeld 1.com.conf www.voorbeeld2.com.conf www.voorbeeld3.com.conf
Start ten slotte de Apache-service als volgt opnieuw:
$ sudo systemctl herstart apache2
Virtuele Hosts testen:
Probeer nu toegang te krijgen tot de websites www.voorbeeld 1.com, www.voorbeeld2.com, www.voorbeeld3.com
Zoals je kunt zien, werken al deze websites zoals verwacht.
OPMERKING: Ik heb de standaardpagina gewijzigd inhoudsopgave.html voor elke site, zodat het voor elke website een beetje anders is voor testdoeleinden. Anders kun je niet zien of de VirtualHost-configuratie werkt of niet.
Dus zo configureer je op naam gebaseerde Apache VirtualHost op Ubuntu 18.04 LTS. Bedankt voor het lezen van dit artikel.