使用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