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!
3 Responses to Leopard, BIND, Apache és vhost
MINDEN VÉLEMÉNY SZÁMÍT! Kilépés a válaszból
Fotók



ha csak úgy nem..
)))
van workaround a MySQL PrefPane-ből indítására: http://kobak.org/2008/03/12/apache2-php5-mysql5-105/
kobak: igazad van, köszi! Bár öszintén megvallva maradok a XAMPP-os, lama megoldásnál, mert baromi kényelmes és fejlesztői gépen tökéletes, hisz legalább a PHP-t úgyis újra kell forgatni MacPorts-ból! Hacsak az Apple nem csinál egy normálisabb verziót valamelyik frissítésben. De miért is tenne?