Mod_python_3.2.8中文手册(103页).doc
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Mod_python_3.2.8中文手册(103页).doc》由会员分享,可在线阅读,更多相关《Mod_python_3.2.8中文手册(103页).doc(78页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、-Mod_python_3.2.8中文手册-第 78 页第一章简介1.1性能使用mod_python的主要优势在于比传统CGI更高的性能。一个测试,使用在Pentium 1.2GHz的机器上运行Red Hat Linux 7.3。使用4种类型的脚本,基于标准的CGI导入模块(以典型的Python CGI脚本开始),然后输出Hello!,测试10000次请求作为基准。标准CGI: 23 次请求/秒mod_python CGI处理器: 385 次请求/秒mod_python 发布处理器: 476 次请求/秒mod_python 处理器: 1203 次请求/秒1.2可移植性apache是按照阶段处理
2、请求的(比如:读取请求、处理请求头、检查存取等)。这些阶段可以分别用处理器调用的函数来实现。传统上,使用C语言编写处理器模块。mod_python提供了使用Python拜你些apache处理器扩展apache功能的方法。更多的apache请求处理过程,参考Apache API Notes,或者参考Mod_python-Integrating Python with Apache文件。为了方便的从CGI移植,标准的mod_python处理器提供了CGI模拟环境,允许用户不修改遗留下来的脚本,而在大多数时候无需进行任何修改。参考:http:/dev.apache.orgapache开发者资源htt
3、p:/www.modpython.org/python10/mod_python-整合Python和Apache,出现在Python 10(?)1.3历史mod_python起源于Httpdapy项目(1997)。很久以后Httpdapy才被叫做mod_python,因为Httpdapy并不是特定用于apache服务器的。Httpdapy设计成跨平台的,而实际上主要从Netscape服务器开始(追溯到1997年的Nsapy)。摘录自Httpdapy项目的README文件的描述将Python嵌入到apache服务器的挑战与解决方法。 #小字体在我多年前开发第一个WEB应用程序时就发现CGI访问数
4、据库非常慢,因为每次点击请求都会装入解释器并执行数MB的数据。数据库往往都很大,并将大量时间浪费在数据库的连接/认证等意义重大的事情上,像DNS查询、编码与解码、内存分配等等。在应用提速的压力下,我尝试过使用Python和多种工具的综合使用。我并不迷信微软的ASP,又被Netscape的性能和满是臭虫而郁闷。Cold Fusion(冷聚变)看起来有希望,但我稍后学会了HTML类标签的书写方式,可读性跟汇编有一拼。比如PHP。但是我真的很想用Python来写东西。就在同时有关Python互联网编程的书籍出版了,其中将Python嵌入到Netscape服务器的方式立即引起了我的注意。我在我的项目中
5、使用了这个例子,并在稍后开发了我自己的改进版,叫做Nsapy,并在WindowsNT和Solaris上编译。尽管Nsapy仅能工作在Netscape服务器上,但是出于灵活通用的面向对象设计,在Python精灵中,很容易移植到其他的WEB服务器。后来,曾经流行的Netscape服务器挂了,我就将Nsapy移植到最流行的服务器apache上。所以从Nsapy衍生出了Httpdapy。继续这个传奇,你会想到将Httpdapy移植到其他服务器上,实际上他们比预想要复杂而且枯燥。反之,提供一个类似于Perl语言的apache扩展mod_perl一样或更好性能的部件会更有意思。俱往矣,mod_python
6、的第一个版本发布于2000年5月。完成.第二章安装注意:获得关于安装的帮助和其他问题的最好地方是mod_python的邮件列表。可以发送标题为subscribe的邮件到mod_python-requestmodpython.org。2.1先决条件 Python 2.2.1或更新的版本,早起版本将无法使用。 apache 2.0.40或更新的版本,如果要使用apache 1.3.x,请使用mod_python的版本2.7.x。编译mod_python需要有apache和Python的包含文件,并且确保安装了Python标准库。如果你从源代码安装了Python和apache,那么你已经拥有了这些了
7、。如果你使用了预打包软件,如RPM或其他方式则只有二进制版本,而没有源码。通常apache和Python的包含文件和库文件在各自的development包中。如果你不确定拥有这些重要文件,请从源码安装Python和apache,或者阅读你系统的文档以了解如何获得开发包。2.2编译有两种链接apache模块的方式:静态的和DSO方式。DSO方式现在非常流行,并推荐用于mod_python的安装。模块被编译成共享库,并在运行时动态装入。DSO方式的优势在于安装模块时无需重新编译apache。关于DSO机制的详细信息参见http:/httpd.apache.org/docs-2.0/dso.html
8、。当前版本的mod_python仅支持DSO方式。静态链接是一种较老的方式,比动态连接的方式支持更多的平台,但是较少使用。主要的缺陷是必须要重新编译apache,在很多情况下并不是一个好的选择。2.2.1运行./configure./configure脚本将会分析你的运行环境,并创建自定义的Make文件用于你的系统。使用autoconf生成的./configure包含如下内容: 查看apxs程序是否存在。这个程序作为apache标准发行版的一部分提供DSO支持。如果找不到则无法实现DSO功能。使用-with-apxs指定选项:$ ./configure -with-apxs=/usr/loca
9、l/apache/bin/apxs强烈建议使用这个选项。 检查Python版本,并尝试找到libpython参数变量的二进制发行版。缺省时可以在Path变量中找到python。如果找到的首个python二进制版本不适合mod_python,则可以手动指定python的路径使用-with-python,如:$ ./configure -with-python=/usr/local/bin/python2.3 设置mod_python保留的互斥锁数量。在某些系统中,互斥锁是一种有限的资源。增加最大互斥锁数量将会增加使用session锁定的性能。缺省值是8,一个性能不错的数值是32。使用-with-
10、max-locks选项:$ ./configure -with-max-locks=32这个选项是在3.2.0版本开始提供的。 尝试查找flex并确定版本。如果PATH中找不到flex则configure会出错。如果版本不对则会给出警告。一般可以忽略这个警告,除非需要重新创建src/psp_parser.c。剖析器(parser)会被PSP调用,使用flex的C语言书写。要求的版本是2.5.31,在大多数平台上2.5.4并不合适。所以已经源码里已经包含了一个psp_parser.c的副本。如果需要编译src/psp_parser.c则需要获取正确版本的flex。如果PATH中的flex版本有误
11、,则可用-with-flex选项:$ ./configure -with-flex=/usr/local/bin/flex这是3.2.0版本中的新特性 构建mod_python文档时需要用到python的源代码。可以如果不需要文档,可以忽略这个选项。如果需要则用-with-python-src选项:$ ./configure -with-python-src=/usr/src/python2.3这个是3.2.0版本中的新特性2.2.2运行make开始构建过程,简单的运行如下即可:$ make2.3安装2.3.1运行make install这个安装过程必须在root用户下完成:$ su# mak
12、e install这将会简单的将二进制版本复制到apache的libexec目录。并且会安装python-libraries到site-packages并编译他们。如果你想只安装python库或者只安装DSO,可以用如下make目标:# make install_py_lib# make install_dso2.3.2配置apache按照DSO模式安装的apache,需要在httpd.conf中加入启动mod_python的句子:LoadModule python_module libexec/mod_python.so实际的mod_python.so路径可能有所变化,但是make inst
13、all将会显示这个文件的确切路径。2.4测试注意次部分内容仅适用于3.x版本,如果使用2.7.x版本,你需要找到更适合的文档。 创建一个在WEB站点可见的目录,如htdocs/test。 在httpd.conf或者.htaccess文件中添加如下内容。如果是在.htaccess文件中,则无需标签。并且确保httpd.conf文件中的AllowOverride目标至少包含FileInfo,缺省是None,将会无法工作。AddHandler mod_python .pyPythonHandler mptestPythonDebug On 重定向所有以.py结尾的URL到mod_python处理器。
14、mod_python收到请求之后查找合适的处理器来处理请求。这里有个简单的自定义处理器叫mptest。我们看看如何定义这个处理器。 此时如果修改了主配置文件httpd.conf则需要重启apache来使之生效。 编辑mptest.py文件在htdocs/test目录。from mod_python import apachedef handler(req):req.content_type=text/plainreq.write(Hello, world!)return apache.OK 指向URL路径到mptest.py。将会看到Hello, world!。如果看不到则参考故障处理。 依照
15、配置文件的规则,指定任何.py文件都会最终指向mptest.py做处理。因为已经明确的指定了mptest做处理器。如果需要用不同的处理器处理不同的文件则需要更高层的处理器,比如publisher发布器、mpservlets或vampire。这些都是动态装入的处理器。 如果都运行无误则转入第三章,入门。参考:.au/projects/vampire2.5故障处理如果出现问题,可以按照如下的处理: 检查错误输出 检查服务器错误日志 单处理执行apache$ ./httpd -X这样将会显示更多有用信息 从mod_python3.2.0开始,可以使用mod_python.testhandler来诊断
16、你的配置。添加到httpd.conf文件:SetHandler mod_pythonPythonHandler mod_python.testhandler这时指向你的/mpinfo的URL则会显示一些信息帮助处理mod_python的问题。 在mod_python邮件列表提问,并确保提供如下信息:mod_python版本操作系统类型、名字、版本号Python版本、非常规的编辑选项apache服务器版本相关的apache配置,.htaccess相关的Python代码完成.第三章指南3.1使用发布器(Publisher)的快速例子这一节提供无需太多细节的发布器指南。更多如何使用mod_pytho
17、n处理器的细节将在以后解释。发布器(publisher)提供了发布mod_python标准模块的方式。需要在配置文件中加入如下配置:AddHandler mod_python .pyPythonHandler mod_python.publisherPythonDebug On下例会返回简单的表单数据。询问姓名、电子邮件、注释之后将会给管理员发邮件。这个简单的应用程序由两个文件组成:form.html用于提交数据,form.py用于处理表单动作。如下是表单:Please provide feedback below:Name: Email: Comment: 注意表单的action属性指向fo
18、rm.py/email调用,如下创建form.py,如下:import smtplibWEBMASTER=webmaster #管理员电邮SMTP_SERVER=localhost #本机SMTP服务器def email(req,name,email,comment):#一定要确保用户提供了所有的参数if not(name and email and comment):return 缺少必要的参数#创建消息文本msg= From: %sSubject: feedbackTo: %sI have the following comment:%sThank You,%s % (email,WEBM
19、ASTER,comment,name)#发送信息conn=smtplib.SMTP(SMTP_SERVER)conn.sendmail(email,WEBMASTER,msg)conn.quit()#提供返回页面s=Dear %s,Thank you for your kind comments, wewill get back to you shortly. % namereturn name当用户点击提交按钮时,发布器将会装入email函数到form模块,传递表单字段作为关键字参数。也会传递请求对象到req。注意逆必须要有req参数。发布器已经可以很聪明的传递必要的参数。函数的返回值将被发
20、送到客户端浏览器。即使使用发布器可以非常简单的处理,但是程序仍然可以利用mod_python的强大功能,比如调用请求对象。当然也可以调用本地的mod_python处理器来完成大量的工作。比如设置HTML头路由req.headers_out;返回错误抛出apache.SERVER_ERROR异常;从客户端的重定向读写文件req.write()和req.read(),等等。阅读6.1节了解更多关于发布器的详细信息。3.2apache处理器概览节标题翻译有误,应为快速学习apache如何处理请求。如果你想要深入钻研mod_python的功能,需要理解什么是处理器。apache分阶段(phase)处理
21、请求。比如第一个阶段是用户认证,之后是检验用户是否有权访问特定的文件,然后是读取文件并发送到客户端。一个典型的静态文件请求包含三个阶段:1.翻译URI到文件位置2.读取文件并发送到客户端3.记录请求日志。更复杂的处理依赖于配置文件。一个处理器就是初始处理某个阶段的函数。同一个阶段可以有多于一个处理器进行处理,被叫做apache序列。对应每个阶段有个缺省的apache处理器(大多数只做缺省动作或者什么都不作)。然后由其他的apache模块提供处理器,比如mod_python。mod_python提供了apache每一个重要的处理器。mod_python处理器缺省时不会做任何事情,除非用特定的配置
22、文件标志。这些标志以Python开始并以Handler结尾(如:PythonAuthenHandler),指定Python函数来处理指定的阶段。所以mod_python的主函数只是作为发报机的角色连接apache处理器和Python函数。最常用的处理器是PythonHandler。它处理含有上下文的请求。因为它没有名字,所以有时也成为通用处理器。这个处理器的apache缺省行为是读取文件并发送到客户端。大多数应用应该重写这个处理器。3.3mod_python做了什么我们假设有如下配置:AddHandler mod_python .pyPythonHandler myscriptPythonDe
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Mod_python_3 2.8 中文 手册 103
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内