Posts Tagged: apache

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!

2007
16
feb

Digest: generating secret for digest authentication…


Régóta problémát okozott, hogy az Apache szerver újraindításakor megjelent az error_log-ban a

Digest: generating secret for digest authentication…

üzenet, majd hosszú percekig semmi sem történt, de ez idő alatt sajnos maga, a szerver sem volt elérhető. Mikor a “secret generation” lefutott a szerver ismét elérhetővé vált és minden futott a maga rendje és módja szerint. Csak az a fránya újraindítás okozta mindig a kiesést. Bár akkor sem mindig, úgy tízből egyszer. Amikor először összefutottam a jelenséggel, akkor rákerestem, hátha van valami megoldás, de mivel nem akadtam rá így nem foglalkoztam vele tovább. Szerencsére az Apache újraindítása csak alkalamzásfrissítés esetén szokott esedékes lenni (a web.config beolvasása végett), így az a plussz pár perc nem jelentett egetverő problémát.

Egészen mostanáig, mikoris belefutottam ugyanebbe a jelenségbe egy sokkal kisebb teljesítményű gépen, ahol a titok generálása néha még fél órába is beletelt. Ezt már nem tartottam megengedhetőnek így ismét keresgéltem a megoldás után, így találtam rá erre a postra: Apache hangs on Digest Secret generation. Örömmel nyugtáztam a hozzászólásokat olvasva, hogy nem csak nekem okozott fejfájást a hiba elhárítása.

A mod_digest Apache modul kikapcsolása jelentené a legkézenfekvőbb megoldást, azonban ha ez használatban van akkor értelemszerűen más után kell nézni. Nos, a cikkben utólsóként feltüntetett megoldással próbálkoztam. Engedélyeztem az urandom use flaget, leforgattam a dev-libs/apr csomagot, majd újraforgattam az Apache csomagot:

euse -E urandom
emerge apr
emerge apache

Végezetül újraindítottam az Apache daemont és hipp-hopp már el is indult a webszerver, mindenféle fennakadás nélkül. Azóta sem volt ezzel probléma. Cool…