请教django lighttpd的多后端部署问题?
a-zhu
2008-10-23
1. 软件环境
我的机器ip为192.168.1.183。 在此机器上安装了lighttpd1.4.20、python2.5、以及django1.0、flu1.0。 2.创建工程 在/work/sites下创建一个django工程mysite,如:pwd/django-admin.py startproject mysite 在mysite里添加一个py文件first.py from django.http import HttpResponse def index(request): return HttpResponse('first django page .....') 修改url.py,在patterns里添加: (r'^mysite/$','mysite.first.index') 3.在mysite下添加一个文件mysite.cgi #!/usr/bin/python import sys,os sys.path.inert(0, "/work/sites/mysite") os.environ['DJANGO_SETTING_MODULE'] = 'setting' from django.core.servers.fastcgi import runfastcgi runfastcgi(method='threaded', daemonize='fase', socket='/work/sites/mysite/django.sock') 4.配置lighty server.modules= ("mod_rewrite","mod_redirect","mod_alias","mod_access","mod_fastcgi","mod_accesslog") #添加如下信息(采用load balance),采用tcp方式通讯: $HTTP["remoteip"] == "192.168.1.183"{ server.document-root = "/work/sites/mysite/" fastcgi.server = ( "/mysite.fcgi" => ( ("host" => "127.0.0.1", "port" => 8100, #"socket" => "/work/sites/mysite/django.sock", "check-local" => "disable"), ("host" => "192.168.1.183", "port" => 8101, "check-local" => "disable"), ), ) alias.url = ( "/media/" => "/work/sites/mysite/media/", ) url.rewrite-once = ( "^(/media.*)$" => "$1", "^/favicon.ico$" => "/media/favicon.ico", "^(/.*)$" => "/mysite.fcgi$1", ) } 启动lighty 5.启动2个fastcgi服务(注意host区别,在前端分发时会匹配) sudo python manage.py runfcgi host=127.0.0.1 port=8100 method=threaded sudo python manage.py runfcgi host=192.168.1.183 port=8101 method=threaded 6.访问 http://192.168.1.183/mysite 页面输出为:first django page ..... 而且观察请求被正常分发到127.0.0.1:8100和192.168.1.183:8101上(不同的fastcgi server)。 7.疑问请教各位 这个测试中可谓一切正常,由于我都是部署在同一台机器上掩盖了一些事实, 对于一个稍有规模的网站不可能这样。一般把lighty和fastcgi server都是独立部署在不同的机器上,fastcgi server也可能部署在多台机器上。如: X.X.X.1 lighty #web server X.X.X.2 django #fastcgi server X.X.X.3 django #fastcgi server X.X.X.4 django #fastcgi server 此时该怎么配置? a) 在1上需要安装python吗?(我怎么觉得不需要) server.document-root写什么(并不在该机器上,似乎没意义)? 在这种情况下mysite.fcgi还需要吗? lighttpd.conf该怎么配置? b) 在2,3,4上安装flu吗? 虽然看了lighttpd文档,有些概念还比较模糊(例如flu具体干什么)。 多谢!! |
|
bohemia
2008-10-31
不是特别熟悉,应该是这样:
在1上需要安装python吗?(我怎么觉得不需要) 不需要.lightTPD已经是WEB服务了. server.document-root写什么(并不在该机器上,似乎没意义)? 相对地址,或者LightTPD配置地址即可; 在这种情况下mysite.fcgi还需要吗? mysite.fcgi应该在每台CGI服务端配置. 是需要的.lighttpd.conf该怎么配置? 你现在已经配置好了.多台服务的时候,只是IP不同而已 在2,3,4上安装flu吗? 需要安装flu,才能将Python服务输出FCGI接口. |
|
a-zhu
2008-10-31
非常感谢bohemia,你的回答正是我所想的。
在1上安装lighty, 2,3,4上安装flu以及django,当然每台机器上都可以起多个fastcgi服务。 由1负责负载分发。 这种方法应该是很普通的做法。 但在lighty的配置上让人费解,尤其是mysite.fcgi,是一个python脚本,放在哪? 圈中700多的圈友就没有更多的解答吗? |
|
shaotaost
2009-05-16
今天刚加入圈子,看到了这个问题,貌似mysite.fcgi这个文件可以不要,在运行的时候它自动给你生成一个mysite.fcgi(而且一直是空的)。。。。
|