如何在Apache下设置Python(WIN,CGI方法)
关于Python,本人不想多说了,如果不知道什么是Python,可以看《什么是Python
?》一文。Python可以开发CGI程序,那么在Apache下应如何配置呢?本文只讲述了如何
以CGI方式配置Apache,使其支持Python程序。其它方式,如mod_python则不在讨论范围
(其实是没配成功:-)。我所使用的系统环境为Windows 2000, Apache 1.3.19,Python
2.1版。
准备
首先检查以下要求是否已经达到:
Apache已经安装,并且可以正常使用
Python已经安装,并且可以正常使用(在我的环境下,Python安装目录为c:\servers\py
thon)
好,如果一切正常,下面就开始了。
配置
修改DocumentRoot
打开Apache安装目录下的conf子目录的httpd.conf文件。可以修改DocumentRoot为"C:/
Inetpub/wwwroot"。当然你可以按需要改成其它值。
允许任意目录执行CGI
这个设置是允许被设目录及其子目录下的CGI程序可以CGI方式运行。在Apache中,
尽管你可能已经设置了CGI文件后缀,但是如果未设置允许CGI程序运行选项,则无法运
行CGI程序。
设置C:/Inetpub/wwwroot目录属性:
<Directory "C:/Inetpub/wwwroot">
Options Indexes FollowSymLinks MultiViews ExecCGI
AllowOverride None
Order allow,deny
Allow from all
</Directory>
其实我并未重新设置新的目录属性,而是将DocumentRoot的目录属性(原来指向Apa
che安装目录下的htdocs目录,我改成为C:/Inetpub/wwwroot了)增加了ExecCGI一项。
只允许特别目录执行CGI
也可以只允许特别目录下可以执行CGI程序。与上一步可以同时执行,也可两种任选
其一。只要设置:
ScriptAlias /cgi-bin/ "C:/Inetpub/wwwroot"
即可。
增加CGI文件名后缀
修改 AddHandler cgi-script 一句为 AddHandler cgi-script .cgi .py。即让Ap
ache知道.py的文件为CGI程序
好了,到此Apache就配置好了,先启动Apache,然后进行测试。
测试
Python本身不象PHP,不是一种嵌入式脚本(这种脚本比较适合做Web后端程序),所
以所有输出要自已做。
1 #!c:/servers/python/python.exe
2 print "Content-type: text/html"
3 print
4 print "<h1>hello,world!</h1>"
第1行是让脚本以CGI方式运行必需的(这里是我的环境,记得吗?我前面说了Pytho
相关文档:
前一篇文章写的在APACHE安装MOD_PYTHON的经过,其实挺简单,就是版本不兼容的问题.这次我大概说下部署DJANGO的过程.
先修改APACHE配置文件,使其加载mod_python模块
LoadModule python_module libexec/mod_python.so
运行命令查看
bin/httpd -M可以看到
python_module (shared)
Syntax OK
说明apache已经成功加 ......
当执行import
module时,解释器会根据下面的搜索路径,搜索module1.py文件。
1) 当前工作目录
2) PYTHONPATH中的目录
3) Python安装目录
(/usr/local/lib/python)
事实上,模块搜索是在保存在sys.path这个全局变量中的目录列表中进行搜索。
sys.path会在解释器开始执行时被初始化成包含:
1)当前工作目录
2) PYT ......
ubuntu10.05出来了这两天一直在折腾,显示wubi无反应,然后从硬盘安装期间又遇到grub错误等问题。安装成功后搞个中文输入法就老半天,最后使用Pinyin这个还算好用,有点想搜狗就是没什么词库。最恶心的还是vim的问题,用apt-get install vim装的vim不支持系统剪切板,只好从源代码编译,可是我尝试了很多次总是没有python支 ......
python对多国语言的处理是支持的很好的,它可以处理现在任意编码的字符,这里深入的研究一下python对多种不同语言的处理。
有一点需要清楚的是,当python要做编码转换的时候,会借助于内部的编码,转换过程是这样的:
原有编码 -> 内部编码 ->
目 ......
>>> import time
>>> import datetime
>>>
now = time.localtime()
>>> now
(2006, 4, 30, 18, 7, 35,
6, 120, 0)
>>> type(now)
<type 'time.struct_time'>
>>>
str_now = time.strftime("%m/%d/%Y %X", now )
>>>
str_n ......