網路上找到的資料都有點不完全, 最近在逃避現實的過程中找到了一個比較簡單的方式, 供有需要的人參考.
首先當然要安裝 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/djangoinitscript 幫助你讓 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. 其內容為:
socket 的內容即為前段所述 Django 服務所開的 local socket 路徑. check-local 設為 disable, 這樣碰到 /aaa 或 /bbb 這樣的網址, 它就不會找檔案系統裡的路徑, 而是直接導向到這個 fastcgi server.
不要設定 bin-path, bin-path 的意思是讓 lighttpd 自己啟動 Django, 如此一來你還要另外寫一個 script 去配合 lighttpd 開的 socket.
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 吧!
沒有留言:
張貼留言