在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实现socket客户端和服务端简单示例
Feb 24 Python
Python 稀疏矩阵-sparse 存储和转换
May 27 Python
Python常见字典内建函数用法示例
May 14 Python
Python使用import导入本地脚本及导入模块的技巧总结
Aug 07 Python
python os.fork() 循环输出方法
Aug 08 Python
解决Mac下使用python的坑
Aug 13 Python
pytorch打印网络结构的实例
Aug 19 Python
Python统计时间内的并发数代码实例
Dec 28 Python
Pytorch 的损失函数Loss function使用详解
Jan 02 Python
python绘制玫瑰的实现代码
Mar 02 Python
python定义类的简单用法
Jul 24 Python
python 基于opencv去除图片阴影
Jan 26 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新手入门学习方法
2011/05/08 PHP
探讨:如何通过stats命令分析Memcached的内部状态
2013/06/14 PHP
PHP @ at 记号的作用示例介绍
2014/10/10 PHP
jquery的颜色选择插件实例代码
2008/10/02 Javascript
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
javascript 使用 NodeList需要注意的问题
2013/03/04 Javascript
基于jquery实现一张图片点击鼠标放大再点缩小
2013/09/29 Javascript
js验证输入是否为手机号码或电话号码示例
2013/12/30 Javascript
Javascript获取当前日期的农历日期代码
2014/10/08 Javascript
jQuery使用之设置元素样式用法实例
2015/01/19 Javascript
js实现滑动触屏事件监听的方法
2015/05/05 Javascript
JS模拟实现Select效果代码
2015/09/24 Javascript
jQuery异步提交表单的两种方式
2016/09/13 Javascript
jQuery实现Table表格隔行变色及高亮显示当前选择行效果示例
2017/02/14 Javascript
通过js修改input、select默认字体颜色
2017/04/19 Javascript
详解从新建vue项目到引入组件Element的方法
2017/08/29 Javascript
bootstrap实现二级下拉菜单效果
2017/11/23 Javascript
js实现上传并压缩图片效果
2018/01/10 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
2018/09/30 Javascript
微信小程序使用GoEasy实现websocket实时通讯
2020/05/19 Javascript
nuxt.js写项目时增加错误提示页面操作
2020/11/05 Javascript
python django集成cas验证系统
2014/07/14 Python
Python实现telnet服务器的方法
2015/07/10 Python
在Django的模板中使用认证数据的方法
2015/07/23 Python
Python用Bottle轻量级框架进行Web开发
2016/06/08 Python
Python探索之爬取电商售卖信息代码示例
2017/10/27 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
代码详解django中数据库设置
2019/01/28 Python
Html5大文件断点续传实现方法
2015/12/05 HTML / CSS
比较基础的php面试题及答案-编程题
2012/10/14 面试题
《我爱祖国》演讲稿1000字
2014/09/26 职场文书
2015年度团总支工作总结
2015/04/23 职场文书
毕业典礼致辞
2015/07/29 职场文书
解决Python中的modf()函数取小数部分不准确问题
2021/05/28 Python
SQL实现LeetCode(178.分数排行)
2021/08/04 MySQL
python 实现图片特效处理
2022/04/03 Python