Dinamikus local domain és apache vhosts - webfejlesztés Ubuntu alatt
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 kimelt "sod" szó-nak a sajátgépünk nevének kellene lenni, de az sem baj ha nem.
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!

