论坛首页 编程语言技术论坛

django的lighttpd+fastcgi方式部署

浏览 4263 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-05-07   最后修改:2009-05-07
参考了robbin在 《Linux 平台上安装和配置 Ruby on Rails 详解》 的部分内容:http://www.iteye.com/topic/43228
本文假定已正确安装python和django,系统为ubuntu9.04

      light footprint + httpd = Lighttpd 可以读成Lighty,是由德国人 Jan Kneschke 领导开发的,基于BSD许可的开源WEB服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的web server环境。具有非常低的内存开销,CPU占用率低,效能好,以及丰富的模块等特点。Lighttpd 是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth, 输出压缩(output compress), URL重写, Alias等重要功能。因此对于那些负载非常高的WEB服务器选用 Lighttpd 会是非常完美的解决方案。
    
1.安装lighttpd
    如果你用的是ubuntu,用命令sudo apt-get install lighttpd即可。从源码安装的方法如下:
    解压安装文件(eg:lighttpd-1.5.0-r1691.tar.gz)并切换到该目录,在终端执行:
./configure --prefix=/usr/local/lighttpd
make
sudo make install

其中prefix参数指定lighttpd的安装路径
安装后配置:
sudo cp doc/rc.lighttpd /etc/init.d/lighttpd
sudo mkdir /etc/lighttpd
sudo cp doc/lighttpd.conf /etc/lighttpd/lighttpd.conf 
sudo gedit /etc/init.d/lighttpd

将启动脚本换为ubuntu系统的,内容见:http://redmine.lighttpd.net/wiki/1/ScriptsUbuntu
2.配置lighttpd
sudo gedit /etc/lighttpd/lighttpd.conf

server.modules:取消如下模块的注释mod_rewrite,mod_access,mod_fastcgi,mod_simple_vhost,mod_accesslog
其中mod_fastcgi应在mod_rewrite,mod_access之后,在mod_accesslog之前
#server.document-root指向你的django项目的目录
#例如我在/home/ruby目录下django-admin.py startproject mysite,那么server.document-root = "/home/ruby/mysite"
server.document-root = "/home/ruby/mysite"
fastcgi.server = (
    #这里mysite.fcgi文件可以不存在,可任意命名,但要和下文(url.rewrite-once)保持一致
    "/mysite.fcgi" => (
        "main" => (
             # Use host / port instead of socket for TCP fastcgi
             #指定重定向的django的访问由谁来处理,这里host和port要和运行fcgi的参数对应
             #如以如下参数运行fcgi:./manage.py runfcgi method=threaded host=127.0.0.1 port=3033
             "host" => "127.0.0.1",
             "port" => 3033,
             #"socket" => "/home/ruby/mysite/mysite.sock",
            "check-local" => "disable",
        )
    ),
)
alias.url = (
            #指向admin的midia文件夹,当然你也可以在项目主目录下建立该文件夹的符号链接,则该参数指向项目主目录
            "/media/" => "/path/to/django_home/django/contrib/admin/media/",
)
url.rewrite-once = (
    "^(/media.*)$" => "$1",
    "^/favicon\.ico$" => "/media/favicon.ico",
    "^(/.*)$" => "/mysite.fcgi$1",         #$1是传给django的fcgi的url参数
)
3.配置完毕,可以运行服务了
sudo /etc/init.d/lighttpd start   #启动lighttpd
cd /home/ruby/mysite          #切到项目路径下
#以线程方式运行fcgi服务,其中host和port参数要和上面lighttpd.conf中定义的一致
./manage.py runfcgi method=threaded host=127.0.0.1 port=3033

Ok,打开浏览器,输入http://127.0.0.1,就可以看到你的index页面了

PS:django把http://127.0.0.1/admin和http://127.0.0.1/admin/解析为不同的路径,/admin/可以正常跳转,而/admin则是跳到/mysite.fcgi/admin/,当然是404了。通常在settings.py里加入FORCE_SCRIPT_NAME = '' 即可,可强行在url后加/
论坛首页 编程语言技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics