在Windows服务器下用Apache和mod_wsgi配置Python应用的教程


Posted in Python onMay 06, 2015

最近开发了一个 Google Analytics 相关的应用,但需要在 Windows 下部署,结合网上的相关经验,最终选择了 apache+mod_wsgi 这样的配置。
修改python应用

   

Note that mod_wsgi requires that the WSGI application entry point be called 'application'. If you want to call it something else then you would need to configure mod_wsgi explicitly to use the other name.

    (via: wiki)

因为 mod_wsgi 默认要求入口名称为 application 所以我们需要对自己的 python web 应用做一些修改。

假设我们使用flask 搭建的应用,而默认的入口名称为 app, 建立一个 wsgi_handler.wsgi

import sys, os
sys.path.insert(0, os.path.dirname(__file__)) 
from application import app as application

下载安装 httpd

应用的入口修改好之后,就需要安装 apache 和 mod_wsgi 了,我使用的是32位的系统,64位系统下载的安装包可能 与32位的不同。

打开页面 http://apache.dataguru.cn//httpd/binaries/win32/,下载 httpd-2.2.22-win32-x86-no_ssl.msi, 下载后运行程序,按提示安装,具体过程这里不详述。
安装并配置 mod_wsgi

目前 Windows 下对 python 支持的最好的应该就是 [mod_wsgi][mw] 了。

下载 https://code.google.com/p/modwsgi/downloads/detail?name=mod_wsgi-win32-ap22py27-3.3.so

将下载的文件重命名为 mod_wsgi.so 后移动到 apache 的 modules 目录:

在 conf/httpd.conf 中加入如下配置

LoadModule wsgi_module  modules/mod_wsgi.so

配置应用 vhost

在 conf/httpd.conf 中启用 vhosts 配置文件

# Virtual hosts

Include conf/extra/httpd-vhosts.conf

编辑 conf\extra\httpd-vhosts.conf 删除无效的示例代码,并加入应用的配置

NameVirtualHost *:5000

<VirtualHost *:5000>

    ServerName localhost 

    WSGIScriptAlias / E:\Projects\ga-data\wsgi_handler.wsgi

    <Directory E:\Projects\ga-data>

            Order deny,allow

            Allow from all

    </Directory>

</VirtualHost>

其中 E:\Projects\ga-data 替换成应用真实的路径,尽量避免将应用放在中文或者有包含空格的路径中

接下来启动 Apache 并访问 http://localhost:5000 即可。

Python 相关文章推荐
Python中用pycurl监控http响应时间脚本分享
Feb 02 Python
python实现端口转发器的方法
Mar 13 Python
python实现获取客户机上指定文件并传输到服务器的方法
Mar 16 Python
Python入门教程之运算符与控制流
Aug 17 Python
python使用fork实现守护进程的方法
Nov 16 Python
利用python的socket发送http(s)请求方法示例
May 07 Python
Python lxml解析HTML并用xpath获取元素的方法
Jan 02 Python
python linecache 处理固定格式文本数据的方法
Jan 08 Python
python实现树的深度优先遍历与广度优先遍历详解
Oct 26 Python
使用TensorFlow直接获取处理MNIST数据方式
Feb 10 Python
解决pip安装tensorflow中出现的no module named tensorflow.python 问题方法
Feb 20 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
Apr 14 Python
利用Python脚本在Nginx和uwsgi上部署MoinMoin的教程
May 05 #Python
Python实现的HTTP并发测试完整示例
Apr 23 #Python
安装dbus-python的简要教程
May 05 #Python
使用SAE部署Python运行环境的教程
May 05 #Python
在Python中使用PIL模块对图片进行高斯模糊处理的教程
May 05 #Python
在Python中使用mechanize模块模拟浏览器功能
May 05 #Python
python实现自动更换ip的方法
May 05 #Python
You might like
分享下PHP register_globals 值为on与off的理解
2013/09/26 PHP
php使用百度天气接口示例
2014/04/22 PHP
浅析THINKPHP的addAll支持的最大数据量
2015/02/03 PHP
php版微信公众平台之微信网页登陆授权示例
2016/09/23 PHP
laravel 实现用户登录注销并限制功能
2019/10/24 PHP
laravel admin实现分类树/模型树的示例代码
2020/06/10 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
jquery 弹出层注册页面等(asp.net后台)
2010/06/17 Javascript
jquery实现简单的拖拽效果实例兼容所有主流浏览器
2013/06/21 Javascript
仿谷歌主页js动画效果实现代码
2013/07/14 Javascript
tangram框架响应式加载图片方法
2013/11/21 Javascript
使用Javascript简单实现图片无缝滚动
2014/12/05 Javascript
Ionic + Angular.js实现验证码倒计时功能的方法
2017/06/12 Javascript
基于js粘贴事件paste简单解析以及遇到的坑
2017/09/07 Javascript
Angular2仿照微信UI实现9张图片上传和预览的示例代码
2017/10/19 Javascript
浅谈React深度编程之受控组件与非受控组件
2017/12/26 Javascript
vue.js 实现评价五角星组件的实例代码
2018/08/13 Javascript
vue.js实现带日期星期的数字时钟功能示例
2018/08/28 Javascript
微信小程序使用swiper组件实现层叠轮播图
2018/11/04 Javascript
Vue.js中该如何自己维护路由跳转记录
2019/05/19 Javascript
javascript实现日历效果
2019/06/17 Javascript
简单了解Vue + ElementUI后台管理模板
2020/04/07 Javascript
Vue2.0 $set()的正确使用详解
2020/07/28 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
2020/08/10 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
小程序实现tab标签页
2020/11/16 Javascript
利用Python进行数据可视化常见的9种方法!超实用!
2018/07/11 Python
Pytorch使用MNIST数据集实现基础GAN和DCGAN详解
2020/01/10 Python
三星俄罗斯授权在线商店:Samsung俄罗斯
2019/09/28 全球购物
澳大利亚在线消费电子产品商店:TobyDeals
2020/01/05 全球购物
学前教育专业毕业生自荐信
2013/10/03 职场文书
城管综合整治方案
2014/05/01 职场文书
领导干部考核评语
2015/01/04 职场文书
工程部部长岗位职责
2015/02/12 职场文书
债务纠纷代理词
2015/05/25 职场文书
2016年教师寒假学习心得体会
2015/10/09 职场文书