Elkészült a Critical Mass site első védvonala, kicsit máshogy, mint terveztem.
Eredetileg (a tegnapi tesztelés ennek volt a próbája) egyszerűen másik porton futó lighttpd-re akartam egy Apache VHost-on belüli Redirect direktívával dobálni a kéréseket. Ha tegnap nézegetted a criticalmass.hu-t, láthattad, hogy időnként átdob a http://criticalmass.hu:8080-ra – na hát az az volt. A lighttpd gyors, mint az állat (mondjuk egy gepárd), 8 instance-ban fut a fastcgi alatta (local socketen csatlakozik), és szép is volt az egész, kivéve azt a tényt, hogy a site-ot működtető Drupal engine minden egyes linket teljes URL-ként, és nem abszolút vagy akár relatív linkként generál le, tehát egy cikk, amit te a http://criticalmass.hu/node/443 címen látsz, az engine-ben nem /node/443 -ként, hanem teljes URL-lel: http://criticalmass.hu/node/443 -ként jelenik meg. Ez akkor szopás, amikor az URL-ben a portot reprezentálni kéne, tehát a cikknek így kéne kinéznie: http://criticalmass.hu:8080/node/443. Nos, nem így nézett ki, vagyis bár a főoldalt a 8080-as porton figyelő lighttpd szolgálja ki, minden mást a 80-as portról, vagyis az Apache-tól szed be a böngésződ. Képeket, linkeket, CSS-t, mindent.
A megoldás végén tehát az oldalt a 80-as portról kell kiszolgálni, így vagy úgy. Az egyik megoldás az Apache-on belüle proxyzás a 8080-as portra, de ezt elvetettem, mert nincs értelme: ugyan az oldalt a lighttpd szolgálná ki, de ugyanúgy használnám az Apache-ot, akkor meg minek?
Így aztán a site (és a lighttpd) külön IP-re mozgatása mellett döntöttem: a szerver kapott egy virtuális interface-t új IP-címmel, ezen a lighttpd a 80-as porton figyel, és a jelek szerint hiba nélkül szolgálja ki az oldalt.
Persze a dolognak Apache- és lighttpd-oldalról is voltak bonyodalmai:
- A lighttpd teljesen más szintaktikát használ a rewrite szabályokra, mint az Apache. A rewrite szabályoknak pedig (ninja a megmondhatója) a Drupal esetében (és mindenféle dinamikus contentkezelő engine esetében) jelentősége van: így érjük el azt, hogy az egyes postoknak ne olyan címe legyen, hogy http://criticalmass.hu/?p=345&t=4 (csak példa, nem tudom, pontosan hogy néz ki), hanem (az eddigi példával élve) ilyen szép: http://criticalmass.hu/node/443. For the reference, Drupalhoz a következő (innen szedett) rewrite rule-ok működnek gyönyörűen (persze tesztüzem, és remélem szólsz, ha anomáliát látsz a működésben):
url.rewrite-final = (
„^/system/test/(.*)$” => „/index.php?q=system/test/$1”,
„^/([^.?]*)?(.*)$” => „/index.php?q=$1&$2”,
„^/([^.?]*)$” => „/index.php?q=$1”,
„^/search/node/(.*)$” => „/index.php?q=search/node/$1”
) - Az Apache konfig egy számomra logikátlan featúrájával kellett szembesülnöm: úgy gondolnám, hogy ha beállítok egy BindAddress direktívát, akkor azzal minden további konfig értékkészletét meghatározom, tehát onnantól nem tudok olyat mondani, hogy *:80, ami minden IP-n figyel. Most ez történt: egy „Listen 80” sor kellemetlen perceket okozott. Úgyhogy for the reference, a BindAddress beállítása nem elég.
(Érdekes ezt egyébként működés közben látni: ahogy hozzáadod az eth0:1 virtuális interface-t a rendszerhez, az Apache egyből elkezd figyelni rajta, nem csak reload, meg ilyesmi után.)
Summa summárom, a criticalmass.hu DNS zónája át van írva, úgyhogy amint frissülnek a nameserverek, szép lassan átveszi a lighttpd a terhelést, közben tweakelhetem még, a terheléstől függően. (Azt hiszem a TTL 86400, tehát maximum egy nap kell az átálláshoz.) A jelenlegi felállás április végéig biztosan így lesz, talán utána is – meglátjuk.
Amire a hétvégi tesztüzem során kíváncsi vagyok:
- Keepalive adatok: hogy viselkedik a lighttpd keepalive szempontból.
- Cookie-k, és lesz-e ezekből zavar-kavar.
Egy gondolat “Critical Mass külön webszerverrel.” bejegyzéshez
Hozzászólások lehetősége itt nem engedélyezett.