如何在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
相关文档:
python
语言概览
python
脚本可以处理外部传进来的参数 即sys.argv[]
,argv[]
的使用与linux
下相同
python
本身是解释语言,可以对输入的式子求值。python
支持的对象如整数都是立即数,此外他支持复数,及对四则运算解释。
ptyhon
支持字符串,放在单/
双引号内,字符串是数组,可以通过[i: ......
自己遇到的一个问题, WestGeco的3D地震数据, 提取导航数据:
#!/bin/env python
import sys
import struct
try:
f=open(sys.argv[1],'rb')
except (IOError,Exception):
print '''usage:
scriptname segyfilename
'''
&nbs ......
英文版Dive in python可以在下面找到中文翻译http://linuxtoy.org/docs/dip/toc/index.html
模块的__name__,当模块被import时,其为模块的名字,当模块作为main执行的时候,其为__main__
词典的key是大小写敏感的。
List也支持重载+操作,用于将两个list连接起来,并返回一个List,因此它没有extended执行高效。list也+ ......
>>> from socket import socket, SOCK_DGRAM, AF_INET
>>> s = socket(AF_INET, SOCK_DGRAM)
>>> s.connect(('google.com', 0))
>>> s.getsockname()
('192.168.1.113', 43711)
Linux:
import socket
import fcntl
import struct
def get_ip_address(ifname):
s = ......