使用Apache+mod_wsgi部署webpy等python程序html
webpy是一個python上的很是輕量級的web框架,它和其餘許多python web框架同樣,都能支持wsgi部署,而目前來看比較優秀的wsgi部署方案天然是Apache+mod_wsgi,它提供很是簡單優秀的部署方式,使得python程序的部署再也不困難,本文將詳細講述在Apache上部署mod_wsgi的方法,並嘗試使用mod_wsgi支持webpy程序.python
首先,咱們假定咱們的服務器已經安裝配置好Apache了,安裝路徑爲/usr/local/apache,虛擬主機配置文件在/usr/local/apache/conf/vhost下,那麼咱們能夠開始安裝mod_wsgi.
從mod_wsgi的官方網站http://code.google.com/p/modwsgi/下載最新的源代碼,截止到本文,其最新版爲3.3.下載解壓,咱們須要編譯安裝
在編譯以前,咱們須要確認當前環境是否能支持mod_wsgi,編譯它須要完整的gcc編譯環境,同時必須保證安裝了python和python-dev包,若是您不肯定是否有python支持,在debian上能夠直接apt-get安裝web
apt-get install python python-dev
若是提示未安裝,安裝便可
./configure --with-apxs=/usr/local/apache/bin/apxs --with-python=/usr/bin/python make make install
若是沒有錯誤,那麼恭喜,mod_wsgi已經被成功編譯並安裝了.
LoadModule wsgi_module modules/mod_wsgi.so AddType text/html .py
若是要在某個虛擬主機上啓用python+wsgi支持,只須要在vhost的配置文件中加入
WSGIScriptAlias / /var/www/main.py/
其中/var/www/main.py就是提供wsgi的主程序
Alias /static /var/www/static/
如此便可.最後加上目錄設置便可,對於上面的例子,完整的虛擬主機配置以下
ServerAdmin admin@xxx.com DocumentRoot /var/www ServerName xxx.com ServerAlias www.xxx.com WSGIScriptAlias / /var/www/main.py/ Alias /static /var/www/static/ AddType text/html .py ErrorLog /var/log/httpd/xxx_error.log CustomLog "|/usr/bin/cronolog /var/log/httpd/xxx_access_%Y%m%d.log" custom1 Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all
這樣就配置好了此站點的mod_wsgi支持.那麼對於python程序,應該如何使用這樣的配置工做呢?下面咱們以webpy爲例,考慮實際部署一個測試程序
#!/usr/bin/env python import os import sys path = os.path.dirname(os.path.realpath(__file__)) sys.path.append(path) import web urls = ( '/', 'index' ) class index: def GET(self): return "Hello, I am Leven." app = web.application(urls, globals()) curdir = os.path.dirname(__file__) session = web.session.Session(app, web.session.DiskStore(curdir + '/' + 'sessions'),) def session_hook(): web.ctx.session = session app.add_processor(web.loadhook(session_hook)) application = app.wsgifunc()
稍微解釋下,因爲咱們考慮是虛擬主機部署,所以服務器並未安裝webpy,咱們將webpy放入web目錄下,所以,在使用的時候,必須將當前目錄加入path才能夠正常載入webpy模塊,全部文件開頭先將當前目錄加入path.
而後,因爲web程序中會常常用到session,所以咱們將session也加入到了程序中,具體存儲路徑在sessions目錄下.shell
將webpy目錄和main.py上傳到web根目錄,而後訪問,若是訪問結果以下圖,恭喜,您的配置已經成功.apache