当前位置: 代码迷 >> CGI >> Lighttpd+FastCGi发布Django站点遇到的奇怪有关问题
  详细解决方案

Lighttpd+FastCGi发布Django站点遇到的奇怪有关问题

热度:7185   发布时间:2013-02-26 00:00:00.0
Lighttpd+FastCGi发布Django站点遇到的奇怪问题
    我算是一个django新手,最近接受维护一个django站点,前面的人基本上搞完了,只是发布这块弄的不尽人意,所以我现在主要就是弄这块内容,当然有问题的地方还是要改的。
    手上这个django站点采用lighttpd作为服务器结合fastcgi来运行,刚开始的时候还没注意这个问题,今天研究lighttpd发布多站点的时候无意间将lighttpd.conf中的server.document-root项改成了一个无关紧要的地址,然后重启lighttpd和fcgi,启动FCGI的脚本 
exec /usr/bin/env -  python ./manage.py runfcgi host=127.0.0.1 port=3333  pidfile=$PIDFILE method=prefork  minspare=40 maxspare=60

我当时也就是在一个站点目录下运行上述启动fcgi脚本的 ,在浏览器中竟然就可以访问该站点了,但是在lighttpd.conf 中并没有把server.document-root指向该站点目录呀,感觉非常奇怪。
     不知道大家是否遇到过这样的问题。不知道是不是启动fcgi的shell脚本上的问题,望高手指点。
     
------解决方案--------------------------------------------------------
该回复于2011-06-17 13:53:18被版主删除
------解决方案--------------------------------------------------------
这个我估计:它的设计可能是,
如果在程序比如DJANGO中设定,就用程序中的设定,
如果在程序及SERVER中都设定,都用程序中的,
如果只有SERVER设定,就用SERVER的,

不知到它的文档有没有说到这一点,又或是开发者当卖生菜,
连写都懒得写吧,楼主可以到网上搜搜看

------解决方案--------------------------------------------------------
引用:
这个我估计:它的设计可能是,
如果在程序比如DJANGO中设定,就用程序中的设定,
如果在程序及SERVER中都设定,都用程序中的,
如果只有SERVER设定,就用SERVER的,

不知到它的文档有没有说到这一点,又或是开发者当卖生菜,
连写都懒得写吧,楼主可以到网上搜搜看


我也有看了下lighttpd的配置文档,不过也只是找对应点看的,没有把所有相关的配置看完,下面这段是原文:
Lighttpd needs a configuration file called lighttpd.conf—in 
fact it will not run without one. To make it as simple as possible, we start with the 
absolute minimum: 
server.document-root = "/var/www"

mimetype.assign = ("" => "text/html")

Yes, that is all. Of course you should take the path to your website as your document 
root. Under UNIX, /var/www is a probable path, while Windows users may want to 
put their site in a place like C:\www\mysite. The mimetype.assign statement simply 
says that everything is to be served as if it were an HTML page. 

其实主要文档是英文的,自己的英文也不是很好,可能理解上有点偏差,这个文档感觉说的还挺详细的,就是没涉及到我想要的说明。
------解决方案--------------------------------------------------------
好吧,我自己来说一个出现上述情况的原因:

主要是在fastcgi.server中将check-local项设置成了disable,这样就不会检查server.document-root,看原文

"check-local": is optional and may be "enable" (default) or "disable". If enabled the server first checks for a file in local 'server.document-root' tree and returns 404 (Not Found) if no such file, and does not fall back to FastCGI. If disabled, the server forwards a request to the FastCGI interface without this check.