Jak si rozjet domácí Apache server

Pokročilejší nastavení - virtual hosts

Každý, kdo se začne malinko více zajímat o webdesign a php, začne po chvilce uvažovat, že přecejenom pro testování by se hodil doma mít zapnutý server a nemuset využívat freehostingy pro každý pokus s PHP. To se mě ani netýkalo, jelikož jsem si s Apachem hrál o něco málo dříve, než jsem si pořídil net, na kterém by tohle šlo provozovat.

A cože je to ten virtual hosts

Pokud se omezujete jen html, server nepotřebujete. Pokud začnete pracovat s PHP, tak již potřebujete Apache+PHP. Pkud se začnete hrabat i s mod_rewrite, zjistíte, že vám již přestává vyhovovat struktura stránek, že každou doménu máte v nějaké složce a jen se do ní prokliknete pomocí Options +Indexes, jelikož se vám pak budou špatně nastavovat cesty v .htaccess pro rewrite.

Virtual host je v podstatě funkce apache, který pak dokáže na jedné IP adrese provozovat několik domén.

Pro přístup z localhostu (tedy jen z vašeho počítače) se dá využít toho, že váš počítač není pouze na IP adrese 127.0.0.1, ale ještě na dalších 255x255x255 adresách naráz (o tom jste netušili že?). Takže pokud vám běží apache, můžete si zkusit zadat do prohlížeče třeba: 127.250.1.19 a zjistíte, že se opět ocitnete na vaší prezentaci, která běží na localhostu.

Jak toho tedy využít?
Je to prosté. Na každou IP si můžete naadresovat jinou prezentaci a v podstatě simulujete reálný provoz na serveru.

Kde to zapnout a nastavit?

Nejdříve pokud nemáte, tak si stáhněte tuto aktualizaci pro WinXP SP2, jelikož bez ní směrování na 127.0.0.x neběhá. (krom 127.0.0.1)

V první řadě musíte v hlavním konfiguračním souboru apache (tedy httpd.conf) odebrat křížek z řádku #Include conf/extra/httpd-vhosts.conf. Tím se zapne načítání souboru ./extra/httpd-vhosts.conf ve kterém je uloženo veškeré nastavení virtual hostu.
Dále naeditujeme takto:

NameVirtualHost *:80    # zapricini, ze nam server bude naslouchat pro vsehcny dotazy na IP

# hlavni cast serveru (pokud je zapnuty virtual hosts, tak se preskoci zakladni nasatveni)
# to spousta lidi opomiji a pak se divi, ze se jim nezobrazuje defaultni stranka
<VirtualHost *:80>
	ServerName 127.0.0.1
  DocumentRoot "Cesta, ktera je uvedena v httpd.conf u DocumentRoot (HLAVNI_CESTA)"
</VirtualHost>

<VirtualHost *:80>
	ServerName 127.0.0.2
	ServerAlias 127.0.19.2 127.255.0.2
	ServerPath /podcesta_0
	DocumentRoot "HAVNI_CESTA/podcesta_0"
</VirtualHost>

<VirtualHost *:80>
	ServerName 127.0.0.3
	ServerAlias 127.0.19.3 127.255.0.3
	ServerPath /podcesta_1
	DocumentRoot "HAVNI_CESTA/podcesta_1"
</VirtualHost>

Objasnění

První a základní prezentace naslouchá na locahost (127.0.0.1) a tedy se nic nemění od minula.

Druhá prezentace, která byla do nynějška umístěna v localhost/podcesta_0 se nyní nachází i na 127.0.0.3, 127.0.19.3 a i 127.255.0.3. Server Name je hlavní jméno serveru a Alias name se využívá v reálu například pro definování adresy s www.

Třetí je obdoba druhé, jen na naslouchá na jiných IP.

Je tohle vůbec správné použití virtual hosts?

Podle všeobecného používání NE, ale pro naše domácí účely to je naprosto dokonalé řešení situace.

Jak to tedy má vypadat?

Jelikož mám (již konečně) zaregistrovanou doménu a tudíž si na subdoménách mohu vymýšlet naprosté šílenosti, tak to také činím :-). Tedy na základní doméně trtkal.net mi běží tato stránka. Na subdoméně online.trtkal.net se dá nalézt můj PC a domácí apache server (testovací) a na dalších subdoménách typu: neco.online.trtkal.net se nachází jednotlivé prezentace a výtvory, kde používám mod_rewrite, abych simuloval právě reálný provoz webu.

A takto to pak vypadá přibližně v reálu u mne:

NameVirtualHost *:80

<VirtualHost *:80>
	ServerName online.trtkal.net
	ServerAlias www.online.trtkal.net
  DocumentRoot "c:/web/"
</VirtualHost>

<VirtualHost *:80>
	ServerName domena1.online.trtkal.net
	ServerAlias www.domena1.online.trtkal.net 127.0.0.2
	ServerPath /domena1
	DocumentRoot "c:/web/domena1/"
</VirtualHost>

<VirtualHost *:80>
	ServerName domena2.online.trtkal.net
	ServerAlias www.domena2.online.trtkal.net 127.0.0.3
	ServerPath /domena2
	DocumentRoot "c:/web/domena2/"
</VirtualHost>

Pro dnešek zas stačí

Na pár dní pokusování vám to vydá a já snad mezitím zas sepíšu nějaký neužitečný blábolek o apachi a nebo něčěm jiném. :-)

homepage | RSS 2.0 | kontakt © Trtkal 2008