搭建一个简单的Python的Web环境
之前一直都是采用PHP做Web服务器环境,目前一个项目中需要用到python的一个第三方库(Beautifual Soup
),但是又希望这个服务以Web服务形式提供,苦寻了好久,没找到php中有对应的库,只好另辟蹊径,采用python来搭建一个web服务。
由于项目的需求对web服务要求很简单,不涉及到复杂的网页、session处理,在网上查了一圈,发现采用mod_python方式是最简单的。基本上就是Apache + Python + mod_python的组合,mod_python是Apache和Python之间的桥梁。
安装步骤:
安装注意事项
:mod_python对apache和python的版本都有比较严格的需求,所以安装时需要找对正确的版本。我安装的是
1. 安装python2.5.x
先从python网站上下载,我下载的是2.5.4版本
。安装基本上采取缺省设置。无需做改变。
2. 安装Apache Server
先从apache网站上下载版本,我下载的是Apache2.2.14
版本,安装也基本上是一路缺省设置,中间有一个步骤是填写域名、管理员信息的,随便填一个就行了。还有一个步骤选择所有人还是只有当前用户使用时,可以随便选择一个,二者就是端口的差别了。
安装完毕后,选择开始-->Apache HTTP Server 2.2-->Control Apache Server--> Start Apache in Console.启动Apache Server.然后在浏览器中进行测试。http://localhost:8080(端口根据你的选择有变化).如果一切正常应该会出现It Works字样了。
3. 安装mod_python
下载mod_python
. 安装时会自动检测到python的安装位置。但是需要手动选择apache的安装位置。选择到apache2这一层(我的电脑是D:/Program Files/Apache Software Foundation/Apache2.2).mod_python在python的lib目录下增加了一些库,同时在Apache的modules目录下增加了mod_python.so库。
配置apache
1. 增加mod_pythonmod_python不会自动修改配置文件。要想apache知道如何解析.py文件,就需要在apache的httpd.conf文件中进行一些配置。在httpd.conf文件中有一堆LoadModule命令,我们增加一行
#
#LoadModule logio_module modules/mod_logio.so
LoadModule log_config_module modules/mod_log_config.so
#LoadModule log_forensic_module modules/mod_log_forensic.so
#LoadModule mem_cache_module modules/mod_mem_cache.so
LoadModule mime_module modules/mod_mime.so
#LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule negotiation_module modules/mod_negotiation.so
#LoadModule proxy_module modules/mod_proxy.so
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#LoadModule proxy_connect_module modules/mod_proxy_connect.so
#LoadModule proxy_ftp_module modules/mod_proxy_ftp.so
#LoadModule proxy_http_module modules/mod_proxy_http.so
#LoadModule rewrite_module modules/mod_rewrite.so
LoadModule setenvif_module modules/mod_setenvif.so
#LoadModule speling_module modules/mod_speling.so
#LoadModule ssl_module modules/mod_ssl.so
#LoadModule status_module modules/mod_status.so
#LoadModule substitute_module modules/mod_substitute.so
#LoadModule unique_id_module modules/mod_unique_id.so
#LoadModule userdir_module modules/mod_userdir.so
#LoadModule usertrack_module modules/mod_usertrack.so
#LoadModule version_module modules/mod_version.so
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
LoadModule python_module modules/mod_python.so
这一行,主要功能是加载mod_python.so库。
2. 配置虚拟目录。
类似于Apache服务器的其他语言配置。在Httpd.conf文件中增加一个目录块。
">
AddHandler mod_python .py
PythonHandler fetchpage
PythonDebug On
其中fetchpage是.py文件名
3. 编写一个测试文件。保存在/htdocs/test目录下,文件名和上面配置文件中保持一致。
from mod_python import apache
def handler(req):
req.content_type = 'text/plain'
req.write("Hello World!/n")
return apache.OK
在浏览器中输入:http://localhost:8080/test/fetchpage.py.如果正常,应该就可以显示Hello World的字样了。