本站首页    管理页面    写新日志    退出


«August 2025»
12
3456789
10111213141516
17181920212223
24252627282930
31


公告
 本博客在此声明所有文章均为转摘,只做资料收集使用。

我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:
日志总数:1304
评论数量:2242
留言数量:5
访问次数:7594536
建立时间:2006年5月29日




[Django]Django 学习笔记 - Apache2 + FastCGI
软件技术

lhwork 发表于 2007/1/15 16:32:34

昨天开始学习Django站点的生产服务器(Production Server),尝试了一下lighttpd和Apache2,最后决定采用Apache2来搭建整个环境(其实lighttpd更为方便一些)。虽然Apache2 + mod_python就可以跑Django站点服务,但是听说FastCGI有更优异的性能。 FastCGI applications are fast because they're persistent. There is no per-request startup and initialization overhead. This makes possible the development of applications which would otherwise be impractical within the CGI paradigm (e.g. a huge Perl script, or an application which requires a connection to one or more databases).需要让Apache2支持FastCGI,就必须下载mod_fastcgi这个Apache模块。可以从http://www.fastcgi.com/站点下载,不过非Windows用户需要自行编译这个模块,其实也挺方便的。下面是我在 Ubuntu 下安装的例子:apt-get install apache2-dev # 会安装Apache2开发相关的库cd $mod_fastcgi_dirapxs2 -o mod_fastcgi.so -c *.c # 编译sudo apxs2 -i -a -n fastcgi mod_fastcgi.so # 安装到Apache2/modules里面去,同时会到apache配置里面加上一条加载语句mod_fastcgi.so就这样完成了,下面需要配置你的Django站点。首先去下载 flup,然后写一个mysite.fcgi,这个在Django的站点上有介绍,里面需要指定Django应用的绝对路径。#!/bin/bash# Replace these three settings.PROJDIR="/home/user/myproject"PIDFILE="$PROJDIR/mysite.pid"SOCKET="$PROJDIR/mysite.sock"cd $PROJDIRif [ -f $PIDFILE ]; thenkill `cat -- $PIDFILE`rm -f -- $PIDFILEfiexec /usr/bin/env - \PYTHONPATH="../python:.." \./manage.py runfcgi socket=$SOCKET pidfile=$PIDFILE 这个文件搁在你的Django应用的根目录里面,改成可执行属性。然后你每次只需要执行这个文件就可以将Django以FastCGI方式启动出来了,启动后你是不能够直接访问的,因为不是走的Web方式。下面我们看一下Apache相关的配置:# Connect to FastCGI via a socket / named pipe.FastCGIExternalServer /home/user/public_html/mysite.fcgi -socket /home/user/mysite.sock<VirtualHost 12.34.56.78>ServerName example.comDocumentRoot /home/user/public_htmlAlias /media /home/user/python/django/contrib/admin/mediaRewriteEngine OnRewriteRule ^/(media.*)$ /home/user/public_html/$1 [QSA,L]RewriteCond %{REQUEST_FILENAME} !-fRewriteRule ^/(.*)$ /mysite.fcgi/$1 [QSA,L]</virtualhost>$1处我遇到了一个奇怪的问题,因为用的是 Ubuntu,没在其他平台试过,/$1会指向硬盘的/media物理路径,很奇怪,所以需要修改这个路径为Django的站点目录,即将DocumentRoot的地址再写一遍。这样一来,整个Apache2+FastCGI就完成了,的确比较费力气。


阅读全文(1774) | 回复(0) | 编辑 | 精华
 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.324 second(s), page refreshed 144784341 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号