• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    Mod_python 3.2.8中文手冊

    發布: 2007-7-13 21:16 | 作者: 未知    | 來源: 轉載     | 查看: 342次 | 進入軟件測試論壇討論

    領測軟件測試網

    第一章 簡介

    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的郵件列表?梢园l送標題為"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的源代碼?梢匀绻恍枰臋n,可以忽略這個選項。如果需要則用--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] 下一頁  

    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>