首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

windows下安装mod_python 注意事项

2012-08-21 
windows上安装mod_python 注意事项综述:?windows上安装apache python mod_python的例子、教程甚至图解都不

windows上安装mod_python 注意事项

综述:

?

windows上安装apache python mod_python的例子、教程甚至图解都不少;但作为新手还是会出错,而且一时无法快速排解。 在此笔者将根据自己的实践经验,给出几个需要注意的地方,以总结自我、方便大家!

?

?

PS:如果您关注的是linux上的mod_python安装,那么尽管去做好了,相信你不会遇到太多的麻烦! windows下安装mod_python 注意事项

?

?

1 确认安装版本:

目前推荐的都是 apache2.2 + python2.5 + mod+python3.3 ; 注意,这里说的都是大版本号,即一般是版本号的第一位和第二位 。 之所以选择这样的版本组合,主要考虑到mod_python的版本,因为我们一般下载后都是这样的:

?

mod_python-3.3.1.win32-py2.5-Apache2.2.exe 
?

?

如果您真的是菜鸟,而且实在担心出错,那么建议你把目前windows上的apache服务停止甚至卸载;然后安装所需要的版本;至于python,大可不必卸载,只要安装另一个版本,然后将系统环境变量PATH修改为使用你需要的python版本即可!

?

2 安装顺序: 这个实在没有必要,列出来的目的只是提醒;重点是安装过程:

?(1 安装完apache之后,启动,并访问http://localhost 或者 http://127.0.0.1 ,看到成功画面即可;

?(2 接着安装python,完成后设置好系统环境变量PATH,打开一个cmd窗口,成功运行python即可;

?(3 安装mod_python,成功安装后,需要做两件事:

??? 一 重新进入python>>>,import mod_python 看是否成功;或者 输入help(),然后输入modules,在出现的列表中检查是否有mod_python;

??? 二 在安装mod_python结束后,确认得到的mod_python.so在apache的modules子目录下,如果不在请手动拷贝。

?

?

3 加载mod_python,配置测试应用

?

?打开apache的conf/httpd.conf :

(1 在多行loadModule 记录后,增加下列语句,以加载mod_python

?

?

# add by GentleYang for mod_pythonLoadModule python_module modules/mod_python.so

?

此时请重启apache,如果顺利启动并且仍然可以成功访问,则load mod_python成功;如果要查看load记录,可浏览apache的日志文件!

?

(2 在apache的htdocs子目录下新建testmp目录,在其中新建hello.py,内容如下:

?

from mod_python import apachedef hello_handler(req):req.write("This is a 'Hello World' from mod_python !")return apache.OK
?

? 之后找到httpd.conf 靠后的<directory> 标签,在其中增加下列测试应用的配置:

?

# Add by Gentle Yang for testmp with mod_python<Directory "D:/xxx/server/Apache Software Foundation/htdocs/testmp">AddHandler mod_python .pyPythonHandler hello::hello_handlerPythonDebug On</Directory>

? 至此,测试应用配置完成!!! (2012-5-16 更新:配置与代码不一致造成各位困扰了)

?

接下来,尽管重启apache,然后访问http://localhost/testmp/hello.py;

如果出错,请查看日志;或者使用 start从cmd启动,控制台会打印出具体的错误信息!

?

有可能出现的错误包括:

1 <directory> 标签中的内容前面有空格等,导致无法找到配置的handler ;

2 hello.py 脚本文件的编码有误,或者含有特殊字符比如全角空格等

?

如果无法排除错误,请先尝试将配置的<directory>标签移除,重启apache看是否成功,然后重新配置! 注意,每一次修改httpd.conf前都养成先备份后修改得好习惯;修改时最好使用记事本等工具!

?

?

希望你能如愿看到含有下列字样的页面

This is a 'Hello World' from mod_python !

?

?

GOOD? LUCK !!!

1 楼 aotian16 2012-05-16   楼主的代码测试代码有错。。
from mod_python import apache 
 
def hello_handler(req): 
    req.write("This is a 'Hello World' from mod_python !") 
    return apache.OK

改为

from mod_python import apache 
 
def handler(req): 
    req.write("This is a 'Hello World' from mod_python !") 
    return apache.OK

才行,请以后发表文章时认真核对。不要误导别人! 2 楼 bluky999 2012-05-16   aotian16 写道楼主的代码测试代码有错。。
from mod_python import apache 
 
def hello_handler(req): 
    req.write("This is a 'Hello World' from mod_python !") 
    return apache.OK

改为

from mod_python import apache 
 
def handler(req): 
    req.write("This is a 'Hello World' from mod_python !") 
    return apache.OK

才行,请以后发表文章时认真核对。不要误导别人!

不好意思,给你造成困扰了。

实际上handler只是mod_python强制约定的一个名字,你可以使用任何你喜欢的名字命名handler,之所以出错是因为自定义名称后要更新PythonHandler的配置,而且支持子目录,使用::指定自定义方法名等; 访问的时候默认可能需要使用 yourscript.py/func_name 形式的URL 。

热点排行