小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

用Apache+mod_wsgi部署python程序

 londonKu 2012-05-27

使用Apache+mod_wsgi部署webpy等python程序

webpy是一個(gè)python上的非常輕量級(jí)的web框架,它和其他許多python web框架一樣,都能支持wsgi部署,而目前來(lái)看比較優(yōu)秀的wsgi部署方案自然是Apache+mod_wsgi,它提供非常簡(jiǎn)單優(yōu)秀的部署方式,使得python程序的部署不再困難,本文將詳細(xì)講述在Apache上部署mod_wsgi的方法,并嘗試使用mod_wsgi支持webpy程序.

首先,我們假定我們的服務(wù)器已經(jīng)安裝配置好Apache了,安裝路徑為/usr/local/apache,虛擬主機(jī)配置文件在/usr/local/apache/conf/vhost下,那么我們可以開(kāi)始安裝mod_wsgi.
從mod_wsgi的官方網(wǎng)站http://code.google.com/p/modwsgi/下載最新的源代碼,截止到本文,其最新版為3.3.下載解壓,我們需要編譯安裝
在編譯之前,我們需要確認(rèn)當(dāng)前環(huán)境是否能支持mod_wsgi,編譯它需要完整的gcc編譯環(huán)境,同時(shí)必須保證安裝了python和python-dev包,如果您不確定是否有python支持,在debian上可以直接apt-get安裝

1apt-get install python python-dev

如果提示未安裝,安裝即可
下面開(kāi)始編譯mod_wsgi

1./configure --with-apxs=/usr/local/apache/bin/apxs --with-python=/usr/bin/python
2make
3make install

如果沒(méi)有錯(cuò)誤,那么恭喜,mod_wsgi已經(jīng)被成功編譯并安裝了.
然后我們編輯/usr/local/apache/conf/httpd.conf文件
加上

1LoadModule wsgi_module modules/mod_wsgi.so
2AddType text/html .py

如果要在某個(gè)虛擬主機(jī)上啟用python+wsgi支持,只需要在vhost的配置文件中加入

1WSGIScriptAlias / /var/www/main.py/

其中/var/www/main.py就是提供wsgi的主程序
當(dāng)然,一般程序都有靜態(tài)文件支持,所以,您可能需要對(duì)某個(gè)目錄下的文件跳過(guò)處理,如下

1Alias /static   /var/www/static/

如此即可.最后加上目錄設(shè)置即可,對(duì)于上面的例子,完整的虛擬主機(jī)配置如下

01ServerAdmin admin@xxx.com
02DocumentRoot /var/www
03ServerName xxx.com
04ServerAlias www.xxx.com
05WSGIScriptAlias / /var/www/main.py/
06Alias /static   /var/www/static/
07AddType text/html .py
08ErrorLog /var/log/httpd/xxx_error.log
09CustomLog "|/usr/bin/cronolog /var/log/httpd/xxx_access_%Y%m%d.log" custom1
10 
11 
12Options Indexes FollowSymLinks
13AllowOverride All
14Order allow,deny
15Allow from all

這樣就配置好了此站點(diǎn)的mod_wsgi支持.那么對(duì)于python程序,應(yīng)該如何使用這樣的配置工作呢?下面我們以webpy為例,考慮實(shí)際部署一個(gè)測(cè)試程序
對(duì)于webpy,官方給出了wsgi的配置例子,具體參考:http:///cookbook/mod_wsgi-apache/zh-cn
在本文中,我們參考之后,實(shí)際的main.py內(nèi)容如下:

01#!/usr/bin/env python
02import os
03import sys
04path = os.path.dirname(os.path.realpath(__file__))
05sys.path.append(path)
06  
07import web
08  
09urls = (
10        '/', 'index'
11)
12  
13class index:
14        def GET(self):
15                return "Hello, I am Leven."
16  
17app = web.application(urls, globals())
18curdir = os.path.dirname(__file__)
19session = web.session.Session(app, web.session.DiskStore(curdir + '/' + 'sessions'),)
20  
21def session_hook():
22        web.ctx.session = session
23  
24app.add_processor(web.loadhook(session_hook))
25application = app.wsgifunc()

稍微解釋下,由于我們考慮是虛擬主機(jī)部署,因此服務(wù)器并未安裝webpy,我們將webpy放入web目錄下,因此,在使用的時(shí)候,必須將當(dāng)前目錄加入path才可以正常載入webpy模塊,所有文件開(kāi)頭先將當(dāng)前目錄加入path.
然后,由于web程序中會(huì)經(jīng)常用到session,因此我們將session也加入到了程序中,具體存儲(chǔ)路徑在sessions目錄下.

將webpy目錄和main.py上傳到web根目錄,然后訪問(wèn),如果訪問(wèn)結(jié)果如下圖,恭喜,您的配置已經(jīng)成功.

 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多