Dinamikus local domain és apache vhosts - webfejlesztés Ubuntu alatt

Címkék: web, ubuntu, apache, linux, vhost
Létrehozva: 2011. március 22. 11:00
Jól jöhet ha nem kell minden új projekt fejlesztői domain-ját bevezetnünk egyesével a 'hosts' fájlba. A következőkben ezt fogom megkerülni és automatizálni.
Apache2 vhost config:

1. Ha még nem tettük volna meg engedélyezzük az apache vhost alias modult:

sudo cp /etc/apache2/mods-available/mod_vhost_alias.load /etc/apache2/mods-enabled/

2. Hozzuk létre és szerkesszük a saját vhost config fájlunkat:

sudo gedit /etc/apache2/sites-enabled/local.vhost

illesszük be a következő sorokat:

<VirtualHost *:80>
	ServerName local
	ServerAlias *.local
        VirtualDocumentRoot /var/www/%1/trunk/webroot/
    	
        #Alias /javascript/ /var/www/%1/trunk/webroot/javascript/

        <Directory /var/www/%1/trunk/webroot/>
                Options Indexes FollowSymLinks MultiViews
                AllowOverride all
                Order allow,deny
                allow from all
	        IndexOptions FancyIndexing
        </Directory>
</VirtualHost>

VirtualDocumentRoot használva egy bug miatt nem működik az Alias amit egy javascript-common kiiktatása miatt használtam, ami lefoglata a webroot-ban a "/javascript" mappát, csomag eltávolítása megoldja a problémát.

sudo apt-get remove javascript-common

3. Indítsuk újra az apache szervert:

sudo service apache2 restart

4/1. DNS, névfeloldás hosts fájl beállításával manuálisan

sudo gedit /etc/hosts

127.0.0.1 local projektunk_neve.local barmi.local

Hátránya, hogy minden új projektet be kell vezetni ebbe a felsorolásba és új hálózati kapcsolatokkor a Network Manager kitörölhet beállításainkat.

4/2. DNS, névfeloldás Bind-al automatikusan, telepítsük a Bind-ot:

sudo apt-get install bind9 dnsutils

5. Bind beállítása:

Szerkesszük a "named.conf.local" fájlt, fontos lehet a sortörés a végén:

sudo gedit /etc/bind/named.conf.local

illesszük be a következő sorokat, fontos lehet a sortörés a végén:

zone "local" in {
	type master;
	file "/etc/bind/zones/local.db";
};

Hozzuk létre és szerkesszük a "local.db" fájlt, fontos lehet a sortörés a végén:

sudo mkdir /etc/bind/zones | sudo gedit /etc/bind/zones/local.db

illesszük be a következő sorokat, fontos lehet a sortörés a végén:

;
; BIND data file for local loopback interface
;
$TTL	604800
@	IN	SOA	sod.local. root.sod.local. (
			      2		; Serial
			 604800		; Refresh
			  86400		; Retry
			2419200		; Expire
			 604800 )	; Negative Cache TTL
;
@	IN	NS	sod.local.
@	IN	A	127.0.0.1
*	IN	A	127.0.0.1

Vegyük észre a kiemelt "sod" szó-nak praktikusan a sajátgépünk nevét érdemes megadni.

6. Be kell állítanunk az elsődleges DNS kiszolgálónkat ami mostantól "127.0.0.1"-lesz, azaz a saját gépünk, Ubuntu 10.10-en ezt a Network Manager-el célszerű megtenni, az ütközések elkerülés végett. (Ő sem tesz mást mint hogy szerkeszti a /etc/resolv.conf fájlt )

Rendszer > Beállítások > Hálózati kapcsolatok

(Vezetékes) kapcsolatunk szerkesztés > IPv4 beállításai > Módszer: kézi

Címek:
 - Cím: ( saját hálózati IP címünk, nekem: 192.168.1.90 van a router-ben dedikálva van a MAC címemhez )
 - Hálózati maszk: 255.255.255.0
 - Átjáró: ( jelenlegi hálózattól kapott átjárónk ip címe, ezzel a paranccsal kinyerheted:

ip ro li | awk '/^default/ {print $3}'
)

DNS kiszolgálók: 127.0.0.1

Bind újraindítás:

sudo /etc/init.d/bind9 restart

Ezt kellne kapnunk, ha mindent jól csináltunk és nem írtunk el semmit:
Stopping domain name service... bind9 [ OK ]
Starting domain name service... bind9 [ OK ]

7. Név feloldási sorrend beállítása:

sudo gedit /etc/nsswitch.conf

A "hosts:" sort állítsuk be úgy, hogy a "dns" legyen elől

hosts:          files  dns mdns4_minimal [NOTFOUND=return] mdns4

Hálózat újraindítás:

sudo /etc/init.d/networking restart

8. Tesztelés:

ping projektunk_neve.local

Kimenet:

PING projektunk_neve.local (127.0.0.1) 56(84) bytes of data.
64 bytes from localhost.localdomain (127.0.0.1): icmp_req=1 ttl=64 time=0.017 ms

Látható, hogy "projektunk_neve.local"-t sikeresen belső IP címünkre (127.0.0.1) irányítottuk

Egy gép vagy network, böngésző újraindítás nem árt a dns cache-k miatt.

Sikerült, megvagyunk!