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

来源:互联网 发布:r语言与matlab 大数据 编辑:程序博客网 时间:2024/06/05 00:53
 

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

分类: web 3713人阅读 评论(1) 收藏 举报
pythonapachesessionhookimportapplication

准备条件

1、Apache 2.2

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


http://download.csdn.net/download/zm2714/4579593


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

二、编辑httpd.conf文件

1、添加以下代码

[plain] view plaincopy
  1. LoadModule wsgi_module modules/mod_wsgi.so  
  2. AddType text/html .py   

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

[plain] view plaincopy
  1. WSGIScriptAlias / D:/php/WWW/main.py/  

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

[plain] view plaincopy
  1. Alias /static  d:/php/www/static/   

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

[plain] view plaincopy
  1. ServerAdmin admin@xxx.com  
  2. DocumentRoot D:/php/WWW  
  3. ServerName xxx.com  
  4. ServerAlias www.xxx.com  
  5. WSGIScriptAlias / D:/php/WWW/main.py/  
  6. Alias /static   D:/php/WWW/static/  
  7. AddType text/html .py  
  8. ErrorLog D:/php/WWW/log/httpd/xxx_error.log  
  9. #CustomLog "|/usr/bin/cronolog /var/log/httpd/xxx_access_%Y%m%d.log" custom1  
  10. Options Indexes FollowSymLinks  
  11. AllowOverride All  
  12. Order allow,deny  
  13. Allow from all  

这样就配置好了此站点的mod_wsgi支持.那么对于python程序,应该如何使用这样的配置工作呢?下面我们以webpy为例,考虑实际部署一个测试程序,对于webpy,官方给出了wsgi的配置例子,具体参考:http://webpy.org/cookbook/mod_wsgi-apache/zh-cn,在本文中,我们参考之后,实际的main.py内容如下:

[python] view plaincopy
  1. import os  
  2. import sys  
  3. path = os.path.dirname(os.path.realpath(__file__))  
  4. sys.path.append(path)  
  5. sys.path.append('D:/php/WWW')  
  6. import web  
  7. urls = (  
  8.   '/''index'  
  9. )  
  10.   
  11. class index:  
  12.   def GET(self):  
  13.     return "Hello, I am Leven."  
  14.   
  15. app = web.application(urls, globals())  
  16. curdir = os.path.dirname(__file__)  
  17. session = web.session.Session(app, web.session.DiskStore(curdir + '/' + 'sessions'),)  
  18.   
  19. def session_hook():  
  20.   web.ctx.session = session  
  21.   
  22. app.add_processor(web.loadhook(session_hook))  
  23. application = app.wsgifunc()  

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



相关参考

httpd.conf文件的修改

在httpd.conf末尾添加

项目静态文件的访问配置

[plain] view plaincopy
  1. WSGIScriptAlias / "E:/Py_workspace/Py_test1/src/0709/Django_test/mysite/mysite/wsgi.py"(wsgi.py在项目中的路径)  
  2. WSGIPythonPath "E:/Py_workspace/Py_test1/src/0709/Django_test/mysite"(项目路径)  
  3. <Directory "E:/Py_workspace/Py_test1/src/0709/Django_test/mysite/mysite">  
  4. <Files wsgi.py>  
  5. Order allow,deny  
  6. Allow from all  
  7. </Files>  
  8. </Directory>  

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

[plain] view plaincopy
  1. Alias /static/ "E:/Py_workspace/Py_test1/src/0709/Django_test/mysite/static/"  
  2. <Directory "E:/Py_workspace/Py_test1/src/0709/Django_test/mysite/static">  
  3. Order deny,allow  
  4. Allow from all  
  5. </Directory>  

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

================================================

WSGIScriptAlias /app "E:/Py_workspace/Py_test1/src/0709/Django_test/mysite/mysite/wsgi.py"


 http://localhost/app/

如果不能访问 500错误。

请查看apache 错误日志 apache_error.log 如果提示  ImportError: No module named web




[Tue Oct 20 23:31:04 2015] [error] [client 127.0.0.1] mod_wsgi (pid=8916): Target WSGI script 'D:/wamp/apps/taobaologin/main.py' cannot be loaded as Python module.
[Tue Oct 20 23:31:04 2015] [error] [client 127.0.0.1] mod_wsgi (pid=8916): Exception occurred processing WSGI script 'D:/wamp/apps/taobaologin/main.py'.
[Tue Oct 20 23:31:04 2015] [error] [client 127.0.0.1] Traceback (most recent call last):
[Tue Oct 20 23:31:04 2015] [error] [client 127.0.0.1]   File "D:/wamp/apps/taobaologin/main.py", line 6, in <module>
[Tue Oct 20 23:31:04 2015] [error] [client 127.0.0.1]     import web
[Tue Oct 20 23:31:04 2015] [error] [client 127.0.0.1] ImportError: No module named web






Python-Web运行环境搭建中遇到的问题-(ImportError: No module named setuptools)

分类: Python 1361人阅读 评论(1) 收藏 举报
pythonwebdjango

系统是Win7  ,已安装Python,在安装Django的时候遇到以下错误信息:ImportError: No module named setuptools

因为Windows环境下Python默认是没有安装setuptools这个模块的,这也是一个第三方模块

那么 Install  Setuptools 

 打开这个链接: ez_setup.py 用浏览器另存,然后点击运行就好了,so easy!

版权声明:本文为博主原创文章,未经博主允许不得转载。






0 0
原创粉丝点击