现在的位置: 首页 > 综合 > 正文

win+Apache+mod_wsgi部署python程序-apache2.2+python2.7

2013年10月14日 ⁄ 综合 ⁄ 共 2172字 ⁄ 字号 评论关闭

准备条件

1、Apache 2.2

2、python 2.7 及 匹配的mod_wsgi-win32-ap22py27-3.3.so (提示:python 2.7及对应的mod_wsgi_win32下载

将mod_wsgi-win32-ap22py27-3.3.so更名为:mod_wsgi.so,存放到:apache2/modules目录下

二、编辑httpd.conf文件

1、添加以下代码

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

如果要在某个虚拟主机上启用python+wsgi支持,只需要在vhosts的配置文件中加入

WSGIScriptAlias / D:/php/WWW/main.py/

其中D:/php/WWW/main.py就是提供wsgi的主程序。当然,一般程序都有静态文件支持,所以,您可能需要对某个目录下的文件跳过处理,如下

Alias /static  d:/php/www/static/ 

如此即可。最后加上目录设置即可,对于上面的例子,完整的虚拟主机配置如下:

ServerAdmin admin@xxx.com
DocumentRoot D:/php/WWW
ServerName xxx.com
ServerAlias www.xxx.com
WSGIScriptAlias / D:/php/WWW/main.py/
Alias /static   D:/php/WWW/static/
AddType text/html .py
ErrorLog D:/php/WWW/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为例,考虑实际部署一个测试程序,对于webpy,官方给出了wsgi的配置例子,具体参考:http://webpy.org/cookbook/mod_wsgi-apache/zh-cn,在本文中,我们参考之后,实际的main.py内容如下:

import os
import sys
path = os.path.dirname(os.path.realpath(__file__))
sys.path.append(path)
sys.path.append('D:/php/WWW')
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()

由于web程序中会经常用到session,因此我们将session也加入到了程序中,具体存储路径在sessions目录下。通过WEB访问,如果为下图所示,则说明配置成功。

相关参考

httpd.conf文件的修改

在httpd.conf末尾添加

项目静态文件的访问配置

WSGIScriptAlias / "E:/Py_workspace/Py_test1/src/0709/Django_test/mysite/mysite/wsgi.py"(wsgi.py在项目中的路径)
WSGIPythonPath "E:/Py_workspace/Py_test1/src/0709/Django_test/mysite"(项目路径)
<Directory "E:/Py_workspace/Py_test1/src/0709/Django_test/mysite/mysite">
<Files wsgi.py>
Order allow,deny
Allow from all
</Files>
</Directory>

一般程序都有静态文件支持,所以,您可能需要对某个目录下的文件跳过处理。httpd.conf中添加如下设置

Alias /static/ "E:/Py_workspace/Py_test1/src/0709/Django_test/mysite/static/"
<Directory "E:/Py_workspace/Py_test1/src/0709/Django_test/mysite/static">
Order deny,allow
Allow from all
</Directory>

 来源:http://webpy.org/cookbook/mod_wsgi-apache.zh-cn

抱歉!评论已关闭.