简单的Apache+FastCGI+Django配置指南
在Apache和FastCGI上使用Django,你需要安装和配置Apache,并且安装mod_fastcgi。请参见Apache和mod_fastcgi文档:http://www.djangoproject.com/r/mod_fastcgi/。
当完成了安装,通过httpd.conf(Apache的配置文件)来让Apache和DjangoFastCGI互相通信。你需要做两件事:
- 使用FastCGIExternalServer指明FastCGI的位置。
- 使用mod_rewrite为FastCGI指定合适的URL。
指定FastCGIServer的位置
FastCGIExternalServer告诉Apache如何找到FastCGI服务器。按照FastCGIExternalServer文档(http://www.djangoproject.com/r/mod_fastcgi/FastCGIExternalServer/),你可以指明socket或者host。以下是两个例子:
#ConnecttoFastCGIviaasocket/namedpipe: FastCGIExternalServer/home/user/public_html/mysite.fcgi-socket/home/user/mysite.sock #ConnecttoFastCGIviaaTCPhost/port: FastCGIExternalServer/home/user/public_html/mysite.fcgi-host127.0.0.1:3033
在这两个例子中,/home/user/public_html/目录必须存在,而/home/user/public_html/mysite.fcgi文件不一定存在。它仅仅是一个Web服务器内部使用的接口,这个URL决定了对于哪些URL的请求会被FastCGI处理(下一部分详细讨论)。(下一章将会有更多有关于此的介绍)
使用mod_rewrite为FastCGI指定URL
第二步是告诉Apache为符合一定模式的URL使用FastCGI。为了实现这一点,请使用mod_rewrite模块,并将这些URL重定向到mysite.fcgi(或者正如在前文中描述的那样,使用任何在FastCGIExternalServer指定的内容)。
在这个例子里面,我们告诉Apache使用FastCGI来处理那些在文件系统上不提供文件
<VirtualHost12.34.56.78> ServerNameexample.com DocumentRoot/home/user/public_html Alias/media/home/user/python/django/contrib/admin/media RewriteEngineOn RewriteRule^/(media.*)$/$1[QSA,L] RewriteCond%{REQUEST_FILENAME}!-f RewriteRule^/(.*)$/mysite.fcgi/$1[QSA,L] </VirtualHost>