Log in


Forgot your password?
prijatelji LUGoNSa
gnu.gif
linuxzasve.jpg
hulk.jpg
 
You are here: Home / Uputstva / Opšte / Django + Lighttpd

Django + Lighttpd

by Goran Mekić last modified Oct 12, 2007 11:42 AM
Kako spojiti lepo (django) i korisno (lighttpd)

"Django is a high-level Python Web framework that encourages rapid development and clean, pragmatic design" kaže se na django sajtu. U prevodu, django je okvir za web programiranje visokog nivoa urađen u python-u koji podstiče rapidan razvoj i čist, pragmatičan dizajn. Komplikovano, zar ne? Ne baš. Veoma neformalno i skoro netačno bi bilo reći da je django alat za pravljenje sajtova u python programskom jeziku, ali je mnogo lakše za shvatiti o čemu se radi kad se ovako kaže. Naime, django je ništa drugo do gomila python klasa koje olakšavaju izradu dinamičkih strana (ne potpuno tačno, ali da ne komplikujemo stvari). Kako je dokumentacija jako dobro urađena, ovde neće biti reči o instalaciji i podešavanju samog django-a, već o integraciji sa lighttpd-om. Još samo dve stvari za uvod. Prvo, django se izgovara "jango". Drugo, ime je dobio, ako ste se ikad pitali, po ciganskom jazz gitaristi, Django Reinhardt

U sledećoj listi su pobrojani paketi koji su Vam potrebni da biste pratili ostatak uputstva:

Flup je potreban za podršku FastCGI protokola. Postoji nekoliko načina za povezivanje lighttpd i djngo-a, ali ćemo ovde koristiti UNIX socket fajlove. Pokrenite Vaš projekat kao običan korisnik (bilo koji, samo da nije root) tako da sluša na UNIX socket-u:

# python manage.py startfcgi socket=/tmp/mysite.sock

To je sve što je potrebno sa django-ove strane uraditi da bi se omogućio FastCGI.

Potrebno je samo malo truda da bi se on povezao sa lighttpd. Ovde se predpostavlja da je lighttpd već podešen i radi, te će se ukazati na konfiguraciju samo onih delova koji su potrebni da bi se povezali django i lighttpd.

/etc/lighttpd/lighttpd (kod Vas se putanja konfiguracionog fajla može razlikovati):

server.modules = (
"mod_rewrite",
"mod_alias",
"mod_access",
"mod_accesslog"
)

server.document-root = "/home/user/public_html"
fastcgi.server = (
"/mysite.fcgi" => (
(
# Use host / port instead of socket for TCP fastcgi
# "host" => "127.0.0.1",
# "port" => 3033,
"socket" => "/tmp/mysite.sock",
"check-local" => "disable",
)
),
)
alias.url += ( "/media/" => "/home/user/django/contrib/admin/media/" )

url.rewrite-once = (
"^(/media.*)$" => "$1",
"^/favicon\.ico$" => "/media/favicon.ico",
"^(/.*)$" => "/mysite.fcgi$1",
)

Ovo je dovoljno da biste videli Vaš sajt, doduše poprilično čudno. Bez sličica, stilova i ostalih djakonija. Evo šta treba uraditi da biste videli sve kako treba. Primetite gornju liniju koja počinje sa alias.url. U njoj se definiše da svaki url koji počinje sa "/media/" treba da se vuče iz "/home/user/django/contrib/admin/media/". Dakle, sve što treba da uradite je da slike, stilove i ostale stvari iz django-vog podrazumevanog direktorijuma za media prekopirate u taj direktorijum:

# mkdir -p /home/user/django/contrib/admin
# cp -RP /usr/lib64/python2.5/site-packages/django/contrib/admin/media /home/user/django/contrib/admin/

Sada bi Vaš django sajt treba da funkcioniše u potpunosti. Naravno, potrebno je da "user" zamenite sa svojim korisničkim imenom.

Par napomena. Zavisno od Vaše konfiguracije, ovo uputstvo neće raditi kakvo jeste i treba mu malo doterivanja. Recimo, na Gentoo distribuciji (moguće da je na ostalim isto) je potrebno zakomentarisati ceo fastcgi.server blok u fajlu /etc/lighttpd/mod_fastcgi.conf, što će onemogućiti PHP (ta dva mogu da rade zajedno, ali to sad nije predmet ovog uputstva).

Related content
Lighttpd HOWTO

Document Actions