jiyuu-מחשבות פתוחות

עבודה עם lighttpd 1.5

13/01/2008 19:13 ע"י כתריאל טראום

עם השחרור הממשמש ובא של lighttpd 1.5 החלטתי לבדוק את הסחורה.

ניסיתי להשתמש בחבילות שקומפלו מראש עבור Sarge, אבל היה קצת בעיות עם תלויות, לכן החלטתי להוריד את חבילת המקור ולקמפלה מחדש עבור Etch. מי שרוצה לנסות את החבילות המקומפלות, מוזמן להוריד את החבילות ולנסות.

מכיוון שאני משתמש ב-lighttpd שרץ ב-VM תחת lguest כדי לפתח את jiyuu, הדבר הראשון שניגשתי לעשות הוא לקנפג את lighttpd לעבוד עם fast-cgi/php. כמובן שאי אפשר להוציא גירסא חדשה אם לא שוברים לפחות דבר אחד או שניים בתאימות לאחור.

בדיקה מהירה הראתה כי המודול mod_fastcgi הוחלף ב-mod_proxy_core עם תוספת של קצת mod_proxy_backend_fastcgi בצד. במקום ליישם מודול נפרד, התמיכה ב-FastCGI הועברה לתת-מודול של mod_proxy אשר תומך לא רק ב-FastCGI אלא גם ב-scgi, http ו- ajp. מתוחכם.

הבעיה היחידה, או יותר נכון "חוסר הנוחות" שהשינוי יוצר, הוא ש-lighttpd לא יעשה יותר spawning של php-cgi בשבילנו, צריך לעשות את העבודה לבד. לצורך כך, נצטרך להשתמש בפקודה "spawn-fcgi" ולשתול אותה בתסריט האתחול של lighttpd, עוד על כך מייד.

עם שינוי השיטה, שונתה גם הקונפיגורציה כמובן. הקונפיגורציה החדשה להפעלת php ב-FastCGI נראית כך:

server.modules  += ("mod_proxy_core", "mod_proxy_backend_fastcgi")
$PHYSICAL["existing-path"] =~ "\.php$" {
  proxy-core.balancer = "round-robin"
  proxy-core.protocol = "fastcgi"
  proxy-core.allow-x-sendfile = "enable"
  proxy-core.backends = ( "unix:/tmp/php-fastcgi.sock" )
  proxy-core.max-pool-size = 5
  proxy-core.rewrite-request = (
    "_pathinfo" => ( "\.php(/.*)" => "$1" )
  )
}

ההסתמכות על mod_proxy מאפשרת ל-lighttpd להשתמש ביכולת המובנית של load balancing דרך socket מקומי או מעל הרשת.

הקטע הטריקי הוא כמובן התוספת של העלאת FastCGI עם העליה\ירידה של lighttpd. הקובץ הבא הוא התאמה של תסריט האתחול עבור דביאן 4.0 (Etch), ומכיל את התוספת הדרושה כדי להעלות את php-cgi.
התוספת היא די פשוטה וברורה, לכן לא תהיה בעיה להעתיקה לתסריטי אתחול בהפצות אחרות. בפונקציה start יש להוסיף הפקודה הבאה:

/usr/bin/spawn-fcgi -s /tmp/php-fastcgi.sock \
-f /usr/bin/php-cgi -u www-data -g www-data -C 5 -P /var/run/spawn-fcgi.pid

בעוד לפונקציה stop נוסיף משהו בסגנון של:

kill `cat /var/run/spawn-fcgi.pid`
if [ -f /tmp/php-fastcgi.sock ]; then /bin/rm -f /tmp/php-fastcgi.sock; fi
if [ -f /var/run/spawn-fcgi.pid ]; then /bin/rm -f /var/run/spawn-fcgi.pid; fi

לא משהו, אחרי שהורגלתי לטוב בגירסא 1.4, אבל אפשר לחיות עם זה.

עכשיו אפשר להתחיל לבדוק את שאר החידושים ושיפורי הביצועים בגירסא 1.5. תהנו!


 

תגובות ל: "עבודה עם lighttpd 1.5" | הוסף תגובה