用Apache+mod_wsgi部署python程序 作者:leven | 日期2010-11-29 00:09:37

用Apache+mod_wsgi部署python程序 - Leven's Blog

用Apache+mod_wsgi部署python程序

作者:leven | 日期2010-11-29 00:09:37

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

webpy是一个python上的非常轻量级的web框架,它和其他许多python web框架一样,都能支持wsgi部署,而目前来看比较优秀的wsgi部署方案自然是Apache+mod_wsgi,它提供非常简单优秀的部署方式,使得python程序的部署不再困难,本文将详细讲述在Apache上部署mod_wsgi的方法,并尝试使用mod_wsgi支持webpy程序.

首先,我们假定我们的服务器已经安装配置好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安装

view sourceprint?
1 apt-get install python python-dev

如果提示未安装,安装即可
下面开始编译mod_wsgi

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

如果没有错误,那么恭喜,mod_wsgi已经被成功编译并安装了.
然后我们编辑/usr/local/apache/conf/httpd.conf文件
加上

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

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

view sourceprint?
1 WSGIScriptAlias / /var/www/main.py/

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

view sourceprint?
1 Alias /static   /var/www/static/

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

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

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

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

稍微解释下,由于我们考虑是虚拟主机部署,因此服务器并未安装webpy,我们将webpy放入web目录下,因此,在使用的时候,必须将当前目录加入path才可以正常载入webpy模块,所有文件开头先将当前目录加入path.
然后,由于web程序中会经常用到session,因此我们将session也加入到了程序中,具体存储路径在sessions目录下.

将webpy目录和main.py上传到web根目录,然后访问,如果访问结果如下图,恭喜,您的配置已经成功.

posted on 2012-02-24 18:29 lexus 阅读(...) 评论(...) 编辑 收藏

转载于:https://www.cnblogs.com/lexus/archive/2012/02/24/2367076.html

用Apache+mod_wsgi部署python程序 作者:leven | 日期2010-11-29 00:09:37相关推荐

  1. ubuntu10.10---用Apache+mod_wsgi部署python程序

    2019独角兽企业重金招聘Python工程师标准>>> 使用Apache+mod_wsgi部署webpy等python程序 webpy是一个python上的非常轻量级的web框架,它 ...

  2. (云服务器学习)部署python程序到云服务器

    (云服务器学习)部署python程序到云服务器 我本来好早就买了阿里云的服务器,以前叫做学生机,现在好像叫云翼计划,我感觉每年花个不到百元能玩玩也挺不错的.还能在上面搭建个人博客,跑跑程序,以后还能学 ...

  3. 编写一个python程序、将日期作为输入并打印该日期_Python学习之路——day01

    一.Python介绍 1.Python的诞生 Python的作者叫Guido Van Rossum(吉多 范 罗苏姆),是在1989年圣诞节的时候老婆孩子不在家,他为了打发时间写的一个程序,作为ABC ...

  4. python程序部署到tomcat服务器_全面解读python web 程序的9种部署方式

    源地址:http://www.linuxde.net/2013/03/13097.html 全面解读python web 程序的9种部署方式 web server ---->applicatio ...

  5. Pepper/Nao中级教程:第二章 如何将Python程序部署到机器人内部运行

    关于Naoqi之家 欢迎访问Naoqi之家,一个提供Pepper/Nao机器人中文开发手册的站点. http://www.naoqi.net 2.1 目标 写好的机器人程序,我们当然要脱离个人电脑,把 ...

  6. Pepper中级教程:第二章 如何将Python程序部署到机器人内部运行

    2.1 目标 写好的机器人程序,我们当然要脱离个人电脑,把这个程序部署到Pepper/Nao机器人内部运行. 2.2 实现思路 机器人的naoqi系统是基于Linux的系统,当然提供了FTP和SSH服 ...

  7. python 金字塔的程序_python-如何使金字塔应用程序在Apache mod_wsgi上运行

    我试图按照有关如何在apache mod_wsgi上运行金字塔应用程序的基本教程进行操作,但遇到了很多麻烦. 这是我正在关注的教程: 我正在已安装apache和mod_wsgi的centos计算机上进 ...

  8. 怎么抓python程序的包_如何在AWS上部署python应用程序

    如何在AWS上部署python应用程序,学姐呕心沥血亲自总结,亲测有效,比网上看网上大把大把的文档要快得多! 作者:蕾学姐 亚马逊云计算服务(Amazon Web Services,缩写为AWS),由 ...

  9. Python 进阶 — 创建本地 PyPI 仓库与 Python 程序的离线部署

    目录 文章目录 目录 创建本地 PyPI 仓库 安装 pypiserver 上传 Python 安装包 使用私有 PyPI 仓库 Python 程序的离线部署 pip download 获取必须的 P ...

最新文章

  1. Xamarin.iOS编译时无法连接苹果系统
  2. OpenCV AprilTags 识别
  3. MapReduce编程实战之“高级特性”
  4. nacos集群的ap cp切换_配置中心Nacos
  5. 查看安装软件/Select-object/Where-Object xxx -like
  6. 详述白盒测试的逻辑覆盖法的条件判定覆盖及其优缺点
  7. echarts地图下钻可缩放
  8. python删除数据集中的空值_关于在python中如何使用pandas库读取excel表格后 删除含有空值的列...
  9. java 颜色渐变算法_颜色渐变的RGB计算
  10. 第06章 Tableau仪表板和故事
  11. java web实现拨打电话_Android实现打电话功能
  12. 环境资源与相关词汇中英文对照
  13. appinventor数学小程序计算机,APP inventor中的颜色
  14. CSS的3D应用:绘制长方体
  15. 使用Spring Data访问MongoDB数据库
  16. 数据结构课程设计--图书管理系统
  17. Linux 主机巡检脚本(包含 k8s)
  18. 当应酬成为日常,你需要这20个技巧聪明地进食
  19. OCM exam guide - OCM认证指南
  20. JNI 之Java和c/c++交互,提升Java变成效率

热门文章

  1. 怪哉 G o o g l e 不提供 Gizmo5 Linux 客戶端下載
  2. 如何解决偶然Maven项目中导入依赖,却一直报错,unresolved dependency
  3. Android学习之ComponentName的使用
  4. [转载]计算机视觉研究群体及专家主页汇总_拔剑-浆糊的传说_新浪博客
  5. 游戏成瘾是病?这些游戏却大受家长欢迎!
  6. AI时代,移动手机识别OCR
  7. Mybatis 手动清除缓存
  8. js 使用setInterval()实现实时刷新
  9. 域名解析文件异常怎么破?
  10. 8/11 TF听力及阅读训练(2)