Critical Mass külön webszerverrel.

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.

To respond on your own website, enter the URL of your response which should contain a link to this post's permalink URL. Your response will then appear (possibly after moderation) on this page. Want to update or remove your response? Update or delete your post and re-enter your post's URL again. (Find out more about Webmentions.)