Apache: Virtual Host
Virtuální hostování je způsob, který serverům umožní hostovat na jednom počítači více domén, popřípadě hostovat více domén na stejné IP adrese.
Ve článku si ukážeme jednoduché nastavení Apache, pomocí nějž můžete vytvořit více doménových jmen na jednom počítači. Toto nastavení se označuje názvem Name-based a znamená, že pro jednu IP adresu používáte více hostitelských názvů.
Způsob Name-based je vhodný hlavně pro nastavení lokálního počítače a vytvoření subdomén pro localhost.
V praxi to zjednodušeně funguje
tak, že pomocí podpory HTTP / 1.1 je možno serveru poslat přímo adresu, kterou uživatel zadal do adresního řádku, tedy kterou adresu si přímo vyžádal.
Tyto informace jsou serverem zpracované a uživateli je zobrazen na výstup ten adresář, který je pro danou adresu nastaven.
Například si uživatel vyžádá dvě domény: site1.cz a site2.cz, a my jsme schopni mu pro každou doménu nastrčit jiný lokální adresář a tím pádem pod každou z těchto dvou domén jiný obsah.
Konfigurace Virtual Hostů se provádí v souboru httpd.conf, popřípadě, v některých linuxových distribucích, v jiném souboru, který je do httpd.conf přilinkovaný.
Pro konfiguraci Virtual Hostu budeme používat direktivy:
- VirtualHost (uvozuje celé nastavení každého z virtuálních adres)
- SeverAdmin (email pro administrátora serveru)
- DocumentRoot (adresář, který se bude pro dané doménové jméno zobrazovat)
- ServerName (doménový název daného virtuálního serveru)
- ErrorLog (adresa k chybovým logům pro daný virtual host)
Celý zápis VirtualHostu bude vypada například takto:
1 2 3 4 5 6 7 |
<VirtualHost *:80> ServerAdmin admin@mysite.cz DocumentRoot /var/www/mysite ServerName mysite.local ServerAlias mysite.localhost ErrorLog /var/logs/error.log </VirtualHost> |
Důležitý je hned první řádek zápisu, direktiva VirtualHost, která obsahuje zápis *:80, kdy hvězdička representuje IP adresu – tedy v tomto případě 127.0.0.1 a 80 značí číslo portu – 80 pro HTTP.
Druhý řádek – ServerAdmin není nutný a udává pouze email pro administrátora, který se bude na serveru zobrazovat například při nedostupnosti v chybových hlášeních.
Důležitý je ovšem řádek pro DocumentRoot, který udává lokální adresář pro daný VirtualHost. Obsah tohoto adresáře bude načítán pro zadání doménového jména z direktivy ServerName, popřípadě ServerAlias, která je taky nepovinná.
Další věc, kterou je nutné pro vytvoření lokálního VirtualHostu udělat je přidat je do seznamu v hosts (ve windows je to soubor /windows/system32/drivers/etc/hosts). Zápis v něm bude vypadat například takto:
1 2 3 |
127.0.0.1 localhost ::1 localhost 127.0.0.1 mysite.local mysite.localhost |
Nyní nám budou na našem localhostu fungovat dvě domény, a to klasická http://localhost a nová http://mysite.local.
Virtuálních adres můžete vytvořit neomezeně mnoho, záleží pouze na vašich potřebách.
Ještě jednou uvedu celé nastavení httpd.conf pro VirtualHost:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# VirtualHost example: # Almost any Apache directive may go into a VirtualHost container. # The first VirtualHost section is used for requests without a known # server name. # NameVirtualHost *:80 #virtual host pro domemu local – stejna jako localhost <VirtualHost *:80> ServerAdmin admin@localhost DocumentRoot /var/www ServerName local ErrorLog /var/logs/error.log </VirtualHost> #virtual host pro domenu mysite.local <VirtualHost *:80> ServerAdmin admin@mysite DocumentRoot /var/www/mysite ServerName mysite.local ServerAlias mysite.localhost ErrorLog /var/logs/error.log </VirtualHost> #virtual host pro domenu mysite2.local <VirtualHost *:80> ServerAdmin admin@mysite2 DocumentRoot /var/www/mysite2 ServerName mysite2.local ServerAlias mysite2.localhost ErrorLog /var/logs/error.log </VirtualHost> |
Závěrem
Používání VirtualHostů je v Apache nutnost i na localhostu. Bez jejich používání není možné funkčně spravovat více projektů a jednoduše je na lokálním počítači provozovat.
Gratuluji k AsusEEE a vítám tě zpět na tvé doméně 🙂
Diky.
Dal budu psat i na zive, kam budu davat jenom zajimave clanky. Ale vsechny budu davat i na svuj blog.