Posts Tagged: dns

2008
03
ápr

Leopard, BIND, Apache és vhost


Úgy kezdődött, hogy XAMPP-ot telepítettem a gépemre, mert a Leo-s php-ba nincs beleforgatva a MySQL PDO támogatás, a MySQL szervert pedig nem lehet a System Preferences-ből indítani leállítani (meg még a jogosultságokkal is küzdeni kell). Méretes oboa. Egyszer ugyan már újraforgattam a php-t is és az apache-ot is 10.5-re, de a tökömnek sincs kedve ezt minden frissítés után eljátszani, főleg ha van MAMP meg XAMPP.

Aztán felmerült az igény, hogy ha már ilyen jó kis fejlesztői szervert varázsoltunk a MacBookra XAMPP-al, Bazaarral meg Eclipse PDT-vel (az utóbbi kettőről majd máskor bővebben) akkor jó lenne magát a fejlesztést is kényelmesebbé tenni. Ennek az első lépése az lenne, hogy ne kelljen minden egyes új projekt indulásakkor a hosts és a virtual-hosts beállításokat piszkálgatni. A hosts állománynak az a legnagyobb baja, hogy nem eszi meg a wildcard karaktereket. Így mindig be kell püfölni az új aldomain (pl.: mynewproject.devserver: 127.0.0.1) elérhetőségét. Majd ezután elő kell rántani az apache virtuális hosztokra vonatkozó konfigját is és oda is fel kell venni a mynewproject-et www-root-ostól-, mindenestől. Na ebből lett nagyon elegem!

Szerencsére az OS X-ben alapból megtalálható a BIND névszerver, csak nincs aktiválva. Bővebben lehet erről olvasni itt. Bár még Tigeres időkben készült az írás, Leopard alatt is tökéletesen működik. Kivonatosan az alábbiak szerint élesíthető a BIND:

# sudo -s
# rndc-confgen > /etc/rndc.conf
# head -n5 /etc/rndc.conf |tail -n4 > /etc/rndc.key

A /etc/named.conf-ba:

zone "devserver" IN {
        type master;
        file "devserver.zone";
        allow-update { none; };
};

A /var/named/devserver.zone-ba:

$TTL    86400
$ORIGIN devserver.
@       1D IN SOA    @ root (
            42    ; serial (galaxis uk.)
            3H    ; refresh
            15M   ; retry
            1W    ; expiry
            1D )  ; minimum
        1D IN NS   @
        1D IN A     127.0.0.1
* IN A 127.0.0.1

Végezetül a named indítása:

# sudo launchctl load -w /System/Library/LaunchDaemons/org.isc.named.plist
# sudo /usr/sbin/named

Hát nem gyönyörű? A BIND szerverünk már üzemel is és feloldja a *.devserver neveket, csak hozzá kell adni a DNS szerverek listájához:

Már csak egy virtual hostot kell belőni a következő módon: az én fejlesztői notebookomon a ~/dev könyvtár tartalmazza a web alkalmazásokat, minden egyes alkönyvtár egy külön projekt így szeretem ezeket külön aldomainen elérni. Így tehát egyetlen virtual hostot vettem csak fel a /Applications/xampp/etc/extra/httpd-vhosts.conf-ba:

<VirtualHost *:80>
    ServerAdmin webmaster@devserver
    DocumentRoot "/Users/vbali/dev"
    ServerName devserver
    ServerAlias *.devserver
    ErrorLog "logs/devserver-error_log"
    CustomLog "logs/devserver-access_log" common
</VirtualHost>

Ezáltal minden *.devserver-hez irányított kérés a “/Users/vbali/dev” könyvtárban landol, ahol egy .htaccess várja az érdeklődőt:

RewriteEngine On
RewriteCond %{HTTP_HOST} ^(.*)\.devserver$
RewriteRule (.*) /%1/$1 [L]

ami semmi mást nem csinál csak az aldomainként megadott alkönyvtárba irányítja a kérést. Például a mynewproject.devserver-nek intézett kérés a “/Users/vbali/dev/mynewproject” mappából kerül kiszolgálásra. That’s all!