在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 24 Python
深入理解Python中字典的键的使用
Aug 19 Python
深入解析Python的Tornado框架中内置的模板引擎
Jul 11 Python
python中文乱码不着急,先看懂字节和字符
Dec 20 Python
Python Django切换MySQL数据库实例详解
Jul 16 Python
Python时间序列缺失值的处理方法(日期缺失填充)
Aug 11 Python
使用Pyhton集合set()实现成果查漏的例子
Nov 24 Python
Python基于gevent实现高并发代码实例
May 15 Python
python批量修改交换机密码的示例
Sep 22 Python
python向企业微信发送文字和图片消息的示例
Sep 28 Python
python实现数据结构中双向循环链表操作的示例
Oct 09 Python
golang中的空接口使用详解
Mar 30 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
ThinkPHP CURD方法之field方法详解
2014/06/18 PHP
ThinkPHP的常用配置选项汇总
2016/03/24 PHP
PHP命名空间namespace的定义方法详解
2017/03/29 PHP
php+redis实现商城秒杀功能
2020/11/19 PHP
PHP PDOStatement::getColumnMeta讲解
2019/02/01 PHP
Javascript 类型转换方法
2010/10/24 Javascript
NodeJS url验证(url-valid)的使用方法
2013/11/18 NodeJs
使用纯javascript实现经典扫雷游戏
2015/04/23 Javascript
JavaScript中的操作符类型转换示例总结
2016/05/30 Javascript
AngularJS实现分页显示数据库信息
2016/07/01 Javascript
jQuery简单实现中间浮窗效果
2016/09/04 Javascript
原生js实现鼠标跟随效果
2017/02/28 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
JS对象的深度克隆方法示例
2017/03/16 Javascript
vue中用H5实现文件上传的方法实例代码
2017/05/27 Javascript
react native实现往服务器上传网络图片的实例
2017/08/07 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
在vue中使用Echarts利用watch做动态数据渲染操作
2020/07/20 Javascript
[01:11]steam端dota2实名认证操作流程视频
2021/03/11 DOTA
python设置检查点简单实现代码
2014/07/01 Python
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
python入门前的第一课 python怎样入门
2018/03/06 Python
利用python3 的pygame模块实现塔防游戏
2019/12/30 Python
python next()和iter()函数原理解析
2020/02/07 Python
15个应该掌握的Jupyter Notebook使用技巧(小结)
2020/09/23 Python
Django怎么在admin后台注册数据库表
2020/11/14 Python
python实现三种随机请求头方式
2021/01/05 Python
党校自我鉴定范文
2013/10/02 职场文书
澳大利亚商务邀请函
2014/01/17 职场文书
内刊编辑求职自荐书范文
2014/02/19 职场文书
五年后的职业生涯规划
2014/03/04 职场文书
2014购房个人委托书范本
2014/10/12 职场文书
收银员岗位职责
2015/02/03 职场文书
郭明义电影观后感
2015/06/08 职场文书
公司员工违法违章行为检讨书
2019/06/24 职场文书
详解Java分布式事务的 6 种解决方案
2021/06/26 Java/Android