Debian testing
Python 2.5.2
MySQL 5.0.51a
Lighttpd 1.4.19
Django Django version 0.97-pre-SVN-7480
Django 專案位址,您要對應您自己的位址
/home/terry/digez
Python 的部份
要安裝 python-flup
Django 的部份
一般只要把 django 用 fastcgi 的方式跑起來,即可
在命令列執行方式,其中 socket 還有 pidfile 可以放在你喜歡的地方,注意權限沒有問題就可以,也可以用 TCP 的方式執行 fastcgi
可以在命令列下打 ./manage.py help runfcgi 得到更多的提示
/home/terry/digez/manage.py runfcgi socket=/home/terry/run/digez.sock pidfile=/home/terry/run/digez.pid
您可以把執行的方式,寫成 Linux 或是 FreeBSD 下的 init.d 的執行方式,也可以用 supervisord 的方式來監控啟動
init.d 的方式可以參考 http://code.djangoproject.com/wiki/InitdScriptForDebian
Lighttpd 的部份
至少必須把 fastcgi 的模組啟動
在 Debian 的環境下,用 root的權限,在命令列下打
lighttpd-enable-mod
來啟動,下面是我執行的結果
terry:~# lighttpd-enable-mod 
Available modules: auth cgi fastcgi proxy rrdtool simple-vhost ssi ssl status userdir 
Already enabled modules: fastcgi simple-vhost 
Enable module: 
下面則是在 Lighttpd 下,我設的 virtual host,我所有的主機都是設定 virtual host 的方式
下面是整個 virtual host 的設定檔,我的環境下是放在 /etc/lighttpd/conf-enabled/10-simple-vhost.conf
有井字號開頭的,整行是註解
在這裡面要注意的是 socket file 的權限,如果是 執行 Lighttpd 的 user 是 www-data 的話,socket 檔案的權限就要是 www-data 可以的讀寫
設定裡那個叫 /mysite.fcgi 的檔案,是假的,不必真實存在
## Simple name-based virtual hosting
##
## Documentation: /usr/share/doc/lighttpd-doc/simple-vhost.txt
##                http://www.lighttpd.net/documentation/simple-vhost.html
server.modules += ( "mod_simple_vhost" )
## The document root of a virtual host isdocument-root =
##   simple-vhost.server-root + $HTTP["host"] + simple-vhost.document-root
simple-vhost.server-root         = "/var/www"
simple-vhost.document-root       = "/blog/"
simple-vhost.default-host        = "home.digez.com"
$HTTP["host"] =~ "^(home.digez.com|stock.digez.com)$" {
        server.document-root = "/home/terry/digez"
        
        fastcgi.server = (
        "/mysite.fcgi" => (
                "main" => (
                # Use host / port instead of socket for TCP fastcgi
                #"host" => "127.0.0.1",
                #"port" => 8080,
                "socket" => "/home/terry/run/digez.sock",
                "check-local" => "disable",
                )
        ),
)
        alias.url = (
                "/media/" => "/home/terry/django_src/django/contrib/admin/media/",
                "/site_media/" => "/home/terry/media/",
                )
        url.rewrite-once = (
                "^(/media.*)$" => "$1",
                "^(/site_media.*)$" => "$1",
                "^/favicon\.ico$" => "/site_media/images/favicon.ico",
                "^(/.*)$" => "/mysite.fcgi$1",
        )
}
以上Lighttpd 設定更改過後,該重新啟動的要啟動過後才會生效,有關於 Lighttpd 設定還有多進階的方法,可以幫我們擋攻擊,或是增加效能 ;-)
 
 
沒有留言:
張貼留言