奇趣技术网 收藏本站
设为主页
商务合作
首页 新闻中心 行业动态 软件新闻 安全资讯 病毒预警 漏洞发布 操作系统 Dos Win9x Win2000 WinXP Win2003 WinVista Linux Unix
数据库 DB2 Access MSSQL MySQL Oracle Sybase 编程技术 ASP PHP JSP CGI/Perl XML .Net C/C++/C# VB VC Delphi Java 汇编
安全技术 安全教学 工具介绍 漏洞利用 病毒防范 入侵检测 防火墙 安全防范 汉化破解 攻击实例 加密解密 技术论坛
中华网络安全联盟 >> 操作系统 >> Linux >> Mod_python 3.2.8中文手册
操作系统
Windows XP
Windows 2000
Windows Vista
Windows 2003
Windows 9x
DOS
Linux
Unix
  • Vista的优点与缺点

  • 64位Windows Vista性能

  • 快速恢复Windows XP管

  • 重装Windows系统不可忽

  • 关闭不需要服务 为Win

  • 优化你的宽带 提升Win

  • Mod_python 3.2.8中文手册
    字体:

    中华网络安全联盟    作者:未知    来源:转载    时间:2006-4-12

    第一章 简介

    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是按照阶段处理请求的(比如:读取请求、处理请求头、检查存取等)。这些阶段可以分别用处理器调用的函数来实现。传统上,使用C语言编写处理器模块。mod_python提供了使用Python拜你些apache处理器扩展apache功能的方法。更多的apache请求处理过程,参考"Apache API Notes",或者参考"Mod_python-Integrating Python with Apache"文件。

    为了方便的从CGI移植,标准的mod_python处理器提供了CGI模拟环境,允许用户不修改遗留下来的脚本,而在大多数时候无需进行任何修改。

    参考:

    http://dev.apache.org

    apache开发者资源

    http://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访问数据库非常慢,因为每次点击请求都会装入解释器并执行数MB的数据。数据库往往都很大,并将大量时间浪费在数据库的连接/认证等"意义重大"的事情上,像DNS查询、编码与解码、内存分配等等。在应用提速的压力下,我尝试过使用Python和多种工具的综合使用。我并不迷信微软的ASP,又被Netscape的性能和满是臭虫而郁闷。"Cold Fusion"(冷聚变)看起来有希望,但我稍后学会了HTML类标签的书写方式,可读性跟汇编有一拼。比如PHP。但是我真的很想用Python来写东西。

    就在同时有关Python互联网编程的书籍出版了,其中将Python嵌入到Netscape服务器的方式立即引起了我的注意。我在我的项目中使用了这个例子,并在稍后开发了我自己的改进版,叫做Nsapy,并在WindowsNT和Solaris上编译。

    尽管Nsapy仅能工作在Netscape服务器上,但是出于灵活通用的面向对象设计,在Python精灵中,很容易移植到其他的WEB服务器。

    后来,曾经流行的Netscape服务器挂了,我就将Nsapy移植到最流行的服务器apache上。所以从Nsapy衍生出了Httpdapy。

    """

    继续这个传奇,你会想到将Httpdapy移植到其他服务器上,实际上他们比预想要复杂而且枯燥。

    反之,提供一个类似于Perl语言的apache扩展mod_perl一样或更好性能的部件会更有意思。

    俱往矣,mod_python的第一个版本发布于2000年5月。

     


    完成...

     

     

     

     


    第二章安装

    注意:获得关于安装的帮助和其他问题的最好地方是mod_python的邮件列表。可以发送标题为"subscribe"的邮件到mod_python-request@modpython.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,那么你已经拥有了这些了。如果你使用了预打包软件,如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

    当前版本的mod_python仅支持DSO方式。

    静态链接是一种较老的方式,比动态连接的方式支持更多的平台,但是较少使用。主要的缺陷是必须要重新编译apache,在很多情况下并不是一个好的选择。

    2.2.1运行./configure

    ./configure脚本将会分析你的运行环境,并创建自定义的Make文件用于你的系统。使用autoconf生成的./configure包含如下内容:

    查看apxs程序是否存在。这个程序作为apache标准发行版的一部分提供DSO支持。如果找不到则无法实现DSO功能。使用--with-apxs指定选项:

    $ ./configure --with-apxs=/usr/local/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-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版本有误,则可用-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

    开始构建过程,简单的运行如下即可:

    $ make

     


    2.3安装

    2.3.1运行make install

    这个安装过程必须在root用户下完成:

    $ su

    # make install

    这将会简单的将二进制版本复制到apache的libexec目录。

    并且会安装python-libraries到site-packages并编译他们。

    如果你想只安装python库或者只安装DSO,可以用如下make目标:

    # make install_py_lib

    # make install_dso

    2.3.2配置apache

    按照DSO模式安装的apache,需要在httpd.conf中加入启动mod_python的句子:

    LoadModule python_module libexec/mod_python.so

    实际的mod_python.so路径可能有所变化,但是make install将会显示这个文件的确切路径。

     


    2.4测试

    注意次部分内容仅适用于3.x版本,如果使用2.7.x版本,你需要找到更适合的文档。

    创建一个在WEB站点可见的目录,如htdocs/test。

    在httpd.conf或者.htaccess文件中添加如下内容。如果是在.htaccess文件中,则无需<Directory>标签。并且确保httpd.conf文件中的AllowOverride目标至少包含FileInfo,缺省是None,将会无法工作。

    <Directory /APACHEHOME/htdocs/test>

    AddHandler mod_python .py

    PythonHandler mptest

    PythonDebug On

    </Directory>

    重定向所有以.py结尾的URL到mod_python处理器。mod_python收到请求之后查找合适的处理器来处理请求。这里有个简单的自定义处理器叫mptest。我们看看如何定义这个处理器。

    此时如果修改了主配置文件httpd.conf则需要重启apache来使之生效。

    编辑mptest.py文件在htdocs/test目录。

    from mod_python import apache

    def handler(req):

    req.content_type='text/plain'

    req.write("Hello, world!")

    return apache.OK

    指向URL路径到mptest.py。将会看到"Hello, world!"。如果看不到则参考故障处理。

    依照配置文件的规则,指定任何.py文件都会最终指向mptest.py做处理。因为已经明确的指定了mptest做处理器。如果需要用不同的处理器处理不同的文件则需要更高层的处理器,比如publisher发布器、mpservlets或vampire。这些都是动态装入的处理器。

    如果都运行无误则转入第三章,入门。

    参考:

    http://home.comcast.net/d.popowich/mpservlets

    http://www.dscpl.com.au/projects/vampire

     


    2.5故障处理

    如果出现问题,可以按照如下的处理:

    检查错误输出

    检查服务器错误日志

    单处理执行apache

    $ ./httpd -X

    这样将会显示更多有用信息

    从mod_python3.2.0开始,可以使用mod_python.testhandler来诊断你的配置。添加到httpd.conf文件:

    <Location /mpinfo>

    SetHandler mod_python

    PythonHandler mod_python.testhandler

    </Location>

    这时指向你的/mpinfo的URL则会显示一些信息帮助处理mod_python的问题。

    在mod_python邮件列表提问,并确保提供如下信息:

    mod_python版本

    操作系统类型、名字、版本号

    Python版本、非常规的编辑选项

    apache服务器版本

    相关的apache配置,.htaccess

    相关的Python代码

     


    完成...

     

     

     

     

    [1] [2] [3] [4] [5] [6] [7] [8] 下一页  

    字体:
     
    设为主页 收藏本站 联系我们 友情连接 商务合作 网友留言
    Copyright©2006-2008 中华网络安全联盟 All rights reserved.