在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设计模式之单例模式实例
Apr 26 Python
python判断给定的字符串是否是有效日期的方法
May 13 Python
django静态文件加载的方法
May 20 Python
Python Pandas分组聚合的实现方法
Jul 02 Python
python监控进程状态,记录重启时间及进程号的实例
Jul 15 Python
python Qt5实现窗体跟踪鼠标移动
Dec 13 Python
python打印异常信息的两种实现方式
Dec 24 Python
Pytorch中实现只导入部分模型参数的方式
Jan 02 Python
Python-openCV读RGB通道图实例
Jan 17 Python
TensorFlow绘制loss/accuracy曲线的实例
Jan 21 Python
使用pycharm运行flask应用程序的详细教程
Jun 07 Python
Python中OpenCV实现查找轮廓的实例
Jun 08 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
php5数字型字符串加解密代码
2008/04/24 PHP
php判断GIF图片是否为动画的方法
2020/09/04 PHP
php实现在线通讯录功能(附源码)
2016/05/13 PHP
mysql desc(DESCRIBE)命令实例讲解
2016/09/24 PHP
PHP+swoole+linux实现系统监控和性能优化操作示例
2019/04/15 PHP
用PHP做了一个领取优惠券活动的示例代码
2019/07/05 PHP
关于javascript function对象那些迷惑分析
2011/10/24 Javascript
用jquery方法操作radio使其默认选项是否
2013/09/10 Javascript
javascript获取url上某个参数的方法
2013/11/08 Javascript
js中的preventDefault与stopPropagation详解
2014/01/29 Javascript
javascript中利用柯里化函数实现bind方法
2016/04/29 Javascript
jQuery validate验证插件使用详解
2016/05/11 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
2016/05/24 Javascript
JQuery对ASP.NET MVC数据进行更新删除
2016/07/13 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
canvas实现爱心和彩虹雨效果
2017/03/09 Javascript
JavaScript关联数组用法分析【概念、定义、遍历】
2017/03/15 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
微信小程序数字滚动插件使用详解
2018/02/02 Javascript
Vue发布订阅模式实现过程图解
2020/04/30 Javascript
Python抓取框架 Scrapy的架构
2016/08/12 Python
Python socket实现简单聊天室
2018/04/01 Python
Django进阶之CSRF的解决
2018/08/01 Python
windows下numpy下载与安装图文教程
2019/04/02 Python
Python彻底删除文件夹及其子文件方式
2019/12/23 Python
pytorch 实现查看网络中的参数
2020/01/06 Python
Python实现投影法分割图像示例(二)
2020/01/17 Python
pytorch梯度剪裁方式
2020/02/04 Python
浅谈python元素如何去重,去重后如何保持原来元素的顺序不变
2020/02/28 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
CSS3教程:background-clip和background-origin
2008/10/17 HTML / CSS
html5教程调用绘图api画简单的圆形代码分享
2013/12/04 HTML / CSS
Ancheer官方户外和运动商店:销售电动自行车
2019/08/07 全球购物
Currentbody西班牙:美容仪专家
2019/09/28 全球购物
Deux par Deux官方网站:设计师童装
2020/01/03 全球购物
Python爬虫基础初探selenium
2021/05/31 Python