Apache VirtualHost

Počeli ste da pravite novi sajt i imate problem sa putanjama ka fajlovima. Napravili ste novi poddirektorijum na localhostu i u njega stavili vaš novi projekat. Problem nastaje kad kopirate sve to na internet i tamo ne radi jer ste negde zaboravili da obrišete naziv direktorijuma iz neke putanje. Rešenje je pravljenje VirtualHosta, tj. nove internet adrese koja će biti dostupna samo vama.VirtualHost  se pravi u dva koraka. Prvi je odlazak u kreniranje nove VirtualHost sekcije u Apache konfiguracionim fajlovima, a drugi dodavanje novog hiosta u Windowsov hosts fajl.

Prvi korak – VirtualHost

Potrebno je otići u direktorijum u kom se nalaze konfiguracioni fajlovi od Apache servera. U slučaju XAMPP-a, o kojema sam pričao u ovom postu, konfiguracioni direktorijum se nalazi u C:\xampp\apache\conf\extra\. Fajl koji nama treba je httpd-vhosts.conf, i kad ga otvorite u njega treba dodati sledeće redove:

NameVirtualHost * 

<VirtualHost *>
  DocumentRoot "/xampp/htdocs"
  ServerName localhost
</VirtualHost> 

<VirtualHost *>
  DocumentRoot "/xampp/htdocs/projekat"
  ServerName projekat
</VirtualHost>

Sličan primer se već nalazi u tom fajlu. Prilikom mog prvog kreiranja VirtualHostova sam prevideo sledeću bitnu stvar, a to je da morate imati prvi red, koji je dat u gornjem primeru, NameVirtualHost *, što mi je uzelo dosta vremena da shvatim da je u tom redu problem.  Takođe morate imati naveden localhost kao jedan od virtelnih hostova, da bi vam localhost radio normalno kao i do sad.

Putanja na koju DocumentRoot pokazuje i ServerName nisu povezani, tako da za ServerName možete izabrati ime koje hoćete. Kada ste ovo upisali u httpd-vhosts.conf i snimili ga, potrebno je resetovati Apache. To možete preko XAMPP Control panela ili u servisima, ako ste postavili Apache kao servis. Jedna napomena, da bi se server uspešno pokrenuo, direktorijum koji ste naveli u DocumentRoot mora da postoji, inače se Apache neće startovati.

Takođe da napomenem da se direktorijum u kome ćete držati vaš projekat ne mora obavezno nalaziti u htdocs, nego ga možete postaviti u bilo koji proizvoljan direktorijum.

Drugi korak – Hosts

Da bi sve ovo proradilo, i da bi mogli iz browsera da pristupite vašem novom sajtu, potrebno je da podesite hosts fajl (nema ekstenziju). Njegova lokacija je u C:\WINDOWS\system32\drivers\etc\, naravno ako ste instalirali Windows na neku drugu lokaciju potražite ga tamo :)

Otvorite hosts i na kraj dodajte sledeći red:

127.0.0.1    projekat

Tako će Windows znati IP adresu vašeg novog sajta. Važno je da svaki novi host koji budete dodavali ima navedenu IP adresu (127.0.0.1).

NAPOMENA:
Ako koristite bilo koji 64-bitni Windows (XP, Vista, 7), hosts fajl, nećete videti ako pokušate da mu pristupite iz 32-bitnog programa, kao što je recimo Total Commander. Za potrebe pronalaženja ovog fajla koristite Windows Explorer. Lokacija na kojoj se nalazi hosts fajl je ista kao i za 32-bitni Windows.

Treći korak – httpd.conf

U fajlu httpd.conf koji se nalazi u C:\xampp\apache\conf\, za početak potražite linije sa koje počinju sa user i group.

User daemon
Group daemon

Promenite ih tako da umesto daemon, iza user stoji ime koje ste izabrali prilikom instalacije Windowsa, a iza group unesite Administrator (najčešća grupa na kućnim računarima). Sledeći primer je sa mog računara:

User Pedja
Group Administrator

Sledeća izmena je da se “olabave” sigurnosna podešavanja. Na ovaj način ne morate da podešavate prava pristupa za svaki direktorijum i VirtualHost koji napravite. Potražite sledeću sekciju (počinje sa <Directory />):

<Directory />
    Options FollowSymLinks
    AllowOverride None
    Order deny,allow
    Deny from all
</Directory>

i prepravite je da izgleda ovako:

<Directory />
    Options Indexes FollowSymLinks ExecCGI Includes
    AllowOverride All
    Order allow,deny
    Allow from all
</Directory>

Za kraj skinite komentar sa linije gde se učitava httpd-vhost.conf, original izgleda ovako:

#Include conf/extra/httpd-vhosts.conf

treba obrisati # na početku reda, i dobićete ovo:

Include conf/extra/httpd-vhosts.conf

NAPOMENA:
Sigurnosna podešavanja koja smo menjali gore ni u kom slučaju ne koristite na produkcionim serverima, ovo je podešavanje samo za vaš lokalni server, da bi smanjili broj problema koji mogu nastati u radu vašeg projekta na lokalu.

Za kraj…

Kad ste sve ovo odradili u vašem browseru je dovoljno da umesto localhost otkucate projekat i pred vama bi trebalo da se učita vaš novi sajt, ako ste ga već smestili u taj direktorijum.

Za dalje proširenje i pravljenje novog VirtualHosta, dovoljno je da napravite novu VirtualHost sekciju, podesite direktorijum i da taj novi host dodate u hosts fajl.

 

One Response to “Apache VirtualHost”

  1. Aleks

    Super tutorial.

Leave a Reply