TAG

首都機能移轉 (2) 歌詞 (2) 靠北文 (40) 戲言 (30) 糟糕 (7) ACG (23) Assembly (2) Boost (2) C (31) C++ (69) CMake (4) CSIE (67) Debian (34) Design_Pattern (2) Django (1) Eclipse (1) en_US (13) FFmpeg (3) FoolproofProject (26) FreeBSD (2) Git (4) GNU_Linux (65) IDE (5) Java (11) JavaScript (19) KDE (15) Khopper (16) KomiX (3) Kubuntu (18) Life (1) Lighttpd (2) Mac_OS_X (2) Opera (1) PHP (2) PicKing (2) Programing (21) Prolog (1) Python (7) QSnapshot (2) Qt (30) Qt_Jambi (1) Regular_Expression (1) Shell_Script (7) Talk (98) VirtualBox (7) Visual_Studio (13) Windows (18) zh_TW (36)

2011年6月23日 星期四

Configure Django with Lighttpd on Debian/Ubuntu

網路上找到的資料都有點不完全, 最近在逃避現實的過程中找到了一個比較簡單的方式, 供有需要的人參考.
首先當然要安裝 Django 和 Lighttpd:
# aptitude install python-django python-flup lighttpd
不裝 python-flup 就不能啟動 Django.
在 /usr/share/doc/python-django/examples 裡有兩個檔案: initscript 和 default:
# cp initscript /etc/init.d/django
# chmod a+x /etc/init.d/django
# cp default /etc/default/django
initscript 幫助你讓 Django 成為系統服務, default 的內容則是一些變數設定. 要特別修改的是 DJANGO_SITES 這個變數, 改成你自己要啟動的 projects, 用空白分隔. 其他的設定功用, 註解都有寫, 可自行修改.
如果你沒有修改 initscript 的內容的話, 那它預設會找的地方是 /var/lib/django, 把這個資料夾建立起來之後, 就可以用 django-admin startproject 在這個資料夾裡建立 Django projects 了. 建立完成後, 就可以啟動 Django:
service django start
你可能會希望 Django 在你開機後就啟動, 就像其他系統服務一樣. 在 Debian 上可使用:
insserv django
它會自動調整依賴的順序. 至於 Ubuntu, 因為它改用 UpStart, 我還不確定它要如何設定, 就不獻醜了.
接著是 Lighttpd 的部分, 首先要啟動 fastcgi:
lighty-enable-mod fastcgi
在 /etc/lighttpd/conf-available 下建立 Django 的設定檔 70-django.conf . 前面的數字可自訂, 但至少要比 fastcgi 還大, 也就是說至少要大於 10. 其內容為:
fastcgi.server = (
    "/aaa" => ((
        "socket" => "/var/lib/django/run/myproj1.socket",
        "check-local" => "disable",
    )),
    "/bbb" => ((
        "socket" => "/var/lib/django/run/myproj2.socket",
        "check-local" => "disable",
    )),
)
以上是假設你有兩個 projects 分別是 myproj1 和 myproj2, 那麼網址 http://yourhost/aaa 會連上 myproj1, http://yourhost/bbb 會連上 myproj2, 以此類推.
socket 的內容即為前段所述 Django 服務所開的 local socket 路徑. check-local 設為 disable, 這樣碰到 /aaa 或 /bbb 這樣的網址, 它就不會找檔案系統裡的路徑, 而是直接導向到這個 fastcgi server.
不要設定 bin-path, bin-path 的意思是讓 lighttpd 自己啟動 Django, 如此一來你還要另外寫一個 script 去配合 lighttpd 開的 socket.
設定完成之後別忘了啟動這個 mod 並重啟 lighttpd:
# lighty-enable-mod django
# service lighttpd restart
好啦, 享受你的 Django 吧!

沒有留言:

張貼留言