reader

fc

os test

syntaxerror @ indafoto

Nginx perl modullal osx-en

2010.04.07. 11:22 | Syntax Error | Szólj hozzá!

Úgy alakult hogy sokat nginx-ezek mostanában munkában, általában akkor használjuk ha gyors és egyszerű válaszokat kell adni meglehetősen sok requestre. Ismertem már korábban is, de azt mostanáig nem tudtam hogy van neki embedded perl modulja, ami azt jelenti hogy perlben lehet kiegészítéseket írni hozzá.

Mivel ilyesmivel akadt dolgom, muszáj volt felraknom a gépemre, ami viszont újabban Macbook Pro, ergo osx van rajta. Gondolom nginx elérhető macports-ból, de nem bíztam benne hogy a perl modul is bennelesz, úgyhogy inkább fordítottam magamnak. A forrás letöltése és kicsomagolása után a klasszikus módon kell forgatni:

./configure --prefix=/usr/local/nginx --with-http_ssl_module --with-http_perl_module
./make
./make install

Itt a prefix adja meg hogy hova kerüljön a kész cucc, az ssl module a https kérésekhez kell, a perl modul pedig ami miatt az egész felkerült ;)

Ezután a prefix alatti conf dirben található egy kupac default konfig file, ezek közül valójában csak az nginx.conf módosítása szükséges. A defaultban elég sok mindenre van példa, a lényeg az hogy legkülső szinten vannak a globális beállítások (errorlog, workerek száma, stb), van egy http blokk amiben a webszerverekre vonatkozó általános dolgok vannak (én ide raktam a log formátumot, itt lehet includeolni a mime.types filet, stb) és ezen belül server blokkokban lehet különféle vhostokat definiálni. Amire figyeljünk oda hogy a keepalive_timeout értékét vegyük le 0-ra különben a perl modul a válasz elküldése után még várni fog ahelyett hogy rendesen lezárná a kapcsolatot.

A perl cuccok beüzemeléséhez a perl_require direktívára lesz mindenképp szükség, ezzel tudjuk includeolni perl modulunkat, illetve a perl direktíva kell ahhoz hogy meghívjuk azt. Utóbbi értelemszerűen a server blokkon belül használandó, például location-hoz rendelhetünk perl végrehajtást:

location /helloworld {
    perl helloworld::url_handler;
}

ez a helloworld modul url_handler metódusát fogja meghívni. Erről bővebben nemsokára egy másik posztban lesz szó.

Miután idáig megvagyunk, a megfelelő bináris elindításával már futtatható is az nginxünk. Én a magam részéről nem elégedtem meg ezzel, szerettem volna indító és leállító parancsot mint linuxon az init script, főleg mivel a leállításhoz mindig ki kell deríteni a master process pidjét (beírja egy pidfileba, defaultból a prefix alatti logs könyvtárba) és azt kell killezni. Úgyhogy összedobtam egy scriptet erre:

#!/bin/sh
# nginx.sh
# nginx start-stop stuff

PIDFILE="/usr/local/nginx/logs/nginx.pid"
#
# Start
#
Start()
{
    echo "starting nginx."
    nginx
}
#
# Stop
#
Stop()
{
    if [ -e "$PIDFILE" ]
    then
        PID=`cat $PIDFILE`
        echo "stopping nginx. master PID: $PID"
        kill $PID
    else
        echo "no process"
    fi
}
#
# Restart
#
Restart()
{
    Stop
    Start
}
#
# Run
#
Run()
{
case $1 in
  start  ) Start   ;;
  stop   ) Stop    ;;
  restart) Restart ;;
  *      ) echo "$0: unknown argument: $1";;
esac
}

Run $1

Ahhoz hogy ez működjön az nginx binárisnak PATH-ban kell lennie, vagy itt a scriptben teljes elérési úttal kell hivatkozni rá. Ezután már csak egy aliast kell felvenni erre a scriptre, célszerű betenni a .alias fileba is:

alias nginx="sudo /usr/local/nginx/nginx.sh"

és máris használhatóak a szokásos parancsok:

nginx start
nginx stop
nginx restart

Hozzátenném, hogy az itt leírtak nagyjából érvényesek linuxon is, csak ezt az sh scriptet nem próbáltam még ki, de lehet hogy az is működne ott, a többi meg pont így van.

Címkék: osx nginx

New Zealand's new Copyright Law presumes 'Guilt Upon Accusation' and will Cut Off Internet Connections without a trial. Join the black out protest against it!

A bejegyzés trackback címe:

https://syntaxerror.blog.hu/api/trackback/id/tr91900686

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Nincsenek hozzászólások.
süti beállítások módosítása