在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实现定制交互式命令行的方法
Jul 03 Python
Python虚拟环境virtualenv的安装与使用详解
May 28 Python
python3 unicode列表转换为中文的实例
Oct 26 Python
python Pexpect 实现输密码 scp 拷贝的方法
Jan 03 Python
详解Python3之数据指纹MD5校验与对比
Jun 11 Python
Ubuntu18.04下python版本完美切换的解决方法
Jun 14 Python
python如果快速判断数字奇数偶数
Nov 13 Python
Python scrapy增量爬取实例及实现过程解析
Dec 24 Python
python中resample函数实现重采样和降采样代码
Feb 25 Python
探秘TensorFlow 和 NumPy 的 Broadcasting 机制
Mar 13 Python
Python调用接口合并Excel表代码实例
Mar 31 Python
Django Admin设置应用程序及模型顺序方法详解
Apr 01 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调用三种数据库的方法(3)
2006/10/09 PHP
一个php导出oracle库的php代码
2009/04/20 PHP
PHP zlib扩展实现页面GZIP压缩输出
2010/06/17 PHP
Windows 下的 PHP-PEAR 安装方法
2010/11/20 PHP
PHP解析html类库simple_html_dom的转码bug
2014/05/22 PHP
PHP关联数组实现根据元素值删除元素的方法
2015/06/26 PHP
PHP 读取文本文件内容并分页显示
2016/01/02 PHP
对PHP依赖注入的理解实例分析
2016/10/09 PHP
redirect_uri参数错误的解决方法(必看)
2017/02/16 PHP
JavaScript基本编码模式小结
2012/05/23 Javascript
javascript获取xml节点的最大值(实现代码)
2013/12/11 Javascript
jquery form表单序列化为对象的示例代码
2014/03/05 Javascript
JavaScript获取元素尺寸和大小操作总结
2015/02/27 Javascript
jQuery常用且重要方法汇总
2015/07/13 Javascript
解决拦截器对ajax请求的拦截实例详解
2016/12/21 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
JS选取DOM元素常见操作方法实例分析
2018/12/10 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
JavaScript如何获取一个元素的样式信息
2019/07/29 Javascript
javascript实现商品图片放大镜
2019/11/28 Javascript
vue+ESLint 配置保存 自动格式化代码
2020/03/17 Javascript
Nodejs 数组的队列以及forEach的应用详解
2021/02/25 NodeJs
Python调用微信公众平台接口操作示例
2017/07/08 Python
python3 cvs将数据读取为字典的方法
2018/12/22 Python
python实现贪吃蛇游戏
2020/03/21 Python
opencv导入头文件时报错#include的解决方法
2019/07/31 Python
python的命名规则知识点总结
2019/10/04 Python
python numpy 反转 reverse示例
2019/12/04 Python
Python绘图实现显示中文
2019/12/04 Python
使用pyecharts1.7进行简单的可视化大全
2020/05/17 Python
Mio Skincare中文官网:肌肤和身体护理
2016/10/26 全球购物
美国农场鲜花速递:The Bouqs
2018/07/13 全球购物
struct与class的区别
2014/02/03 面试题
计算机专业毕业生的自我评价
2013/11/18 职场文书
《彭德怀和他的大黑骡子》教学反思
2014/04/12 职场文书
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python