放弃Mod_fastcgi+apache?
尝试了一晚上,Apache没有重启成功。Mod_fastcgi在2003年的时候就已停止了开发。那时只是支持到Apache2.0.X版,现在使用的都2.2.X了,官方虽然提供了一个Patch,但我本地没有C编译环境,于是不了了之。此外,Fastcgi本身有些问题,线程出问题的时候可能关闭不了,不过中国(没有错吧?)有人解决了这个问题,那是另一个项目“fcgid”。用这个可以直接代替Fcgi。
寻找另一种部署FastCGI的方式。。lighttpd?
尝试了一晚上,Apache没有重启成功。Mod_fastcgi在2003年的时候就已停止了开发。那时只是支持到Apache2.0.X版,现在使用的都2.2.X了,官方虽然提供了一个Patch,但我本地没有C编译环境,于是不了了之。此外,Fastcgi本身有些问题,线程出问题的时候可能关闭不了,不过中国(没有错吧?)有人解决了这个问题,那是另一个项目“fcgid”。用这个可以直接代替Fcgi。
寻找另一种部署FastCGI的方式。。lighttpd?
Django + mod_python的部署方式的基础是我的上一篇文章。前提python、Django、Apache、Mod_python安装完备。
部署方式有两种:一是加直接在apache的httpd.conf下面加一个一个Location的元素:
<Location "/mysite/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE myblog.settings
PythonDebug On
PythonPath "[r'F:\\develope\\projects\\myblog'] + sys.path"
</Location>
主要留意两个参数:SetEnv DJANGO_SETTINGS_MODULE 指定你的Django应用的settings.py。PythonPath Python程序的路径,如果你的Django应用不在Sys.path里面,那么加上你的应用路径,注意,如果你的项目路径为:D:\\projects\myblog那么,Python Path应该填D:\\projects。
这样,你可以通过http://localhost/mysite来访问你的应用,不过有一个问题,Django会把“mysite”当作请求的URL的一部分。你必须要把URLConf里的配置全加上mysite。显然,这种做法并不是很理想的。
为解决上面的URL问题,可以通过VirtualHost来配置使用另一个虚拟机作为Django应用的所在地。所不同的是,还是可以从根目录下访问应用,不过使用了不同的端口:
Listen 127.0.0.1:81
<VirtualHost 127.0.0.1:81>
<Location "/">
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE myblog.settings
PythonPath "[r'F:\\develope\\projects\\myblog'] + sys.path"
PythonDebug On
</Location>
</VirtualHost>
这一次,可以通过http://localhost:81/来访问应用了。
下面的文章讲述如何处理静态文件与FastCGI + Django
Mod_python的使用要求与Apache结合。我使用的Apache版本为2.2,python为2.5,配套的Mod_python为3.3.1。安装及调通的步骤如下:
一、安装Apache。到http://httpd.apache.org/下载最新版本的Apache,如果是Windows环境,直接下载可执行文件安装完就可以了。测试Apache是否正常工作,直接访问http://localhost就可以,当看到It works表示安装成功了。
二、安装Python。下载Python2.5版,直接安装即可。
三、安装Mod_python。到http://www.modpython.org/下载合适版本的Mod_python,注意Apache与Python的版本。在Windows下直接执行安装完之后,找到 C:/Program Files/Apache Software Foundation/Apache2.2\conf\httpd.conf(看apache安装的地方而定) 文件进行编辑,找到LoadModule部分并加上这句:LoadModule python_module modules/mod_python.so,这时候,安装Mod_python已经完成了。下面来进行测试Mod_python的工作情况。
四、测试。在本地建立一个独立的测试目录,如 D:/site,然后修改httpd.conf加入下面代码:
Alias /py d:/site/
<Directory d:/site/>
Order deny,allow
Allow from all
AddHandler mod_python .py
PythonHandler mptest
PythonDebug On
</Directory/>
上面的代表是这样的意思:定义一个别名,当访问localhost/py时,实际上是去d:/site/找文件。Directory里面定义了一些规则,注意前两行很有必要,否则有可能出现拒绝访问的情况,AddHandler mod_python .py意指针对.py文件指定一个Handler。PythonHandler mptest意指Python的Handler是mptest.py。我们在d:/site/下面添加一个mptest.py文件:
from mod_python import apache
def handler(req):
req.content_type = 'text/plain'
req.write('hello world')
return apache.OK
重启Apache,访问http://localhost/py/xyz.py 得到的结果是hello world。只要是.py结束的请求都会调用mptest.py来处理。
That's all。
关于黑莓手机、apple、twitter、互联网、web2.0以及生活的碎言碎语。请在twitter上
follow我,欢迎同好者talk to me bbmyth AT gmail.com。博客Hosting在 webfaction。