在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对象数据的读写权限
Sep 12 Python
python smtplib模块自动收发邮件功能(二)
May 22 Python
使用python搭建服务器并实现Android端与之通信的方法
Jun 28 Python
Django model select的多种用法详解
Jul 16 Python
python装饰器代替set get方法实例
Dec 19 Python
使用PyOpenGL绘制三维坐标系实例
Dec 24 Python
python实现输入三角形边长自动作图求面积案例
Apr 12 Python
使用Python文件读写,自定义分隔符(custom delimiter)
Jul 05 Python
Python字典fromkeys()方法使用代码实例
Jul 20 Python
python实现简单遗传算法
Sep 18 Python
python 使用paramiko模块进行封装,远程操作linux主机的示例代码
Dec 03 Python
yolov5返回坐标的方法实例
Mar 17 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
推荐几部必看的DC动画电影
2020/03/03 欧美动漫
PHP实现PDO的mysql数据库操作类
2014/12/12 PHP
php编写的抽奖程序中奖概率算法
2015/05/14 PHP
php自定义函数实现汉字转换utf8编码的方法
2016/09/29 PHP
一端时间轮换的广告
2006/06/26 Javascript
niceTitle 基于jquery的超链接提示插件
2010/05/31 Javascript
js原生态函数中使用jQuery中的 $(this)无效的解决方法
2011/05/25 Javascript
读jQuery之六 缓存数据功能介绍
2011/06/21 Javascript
jQuery1.6 使用方法二
2011/11/23 Javascript
javascript学习笔记(六) Date 日期类型
2012/06/19 Javascript
非常好用的JsonToString 方法 简单实例
2013/07/18 Javascript
jquery用get实现ajax在ie里面刷新不进入后台解决方法
2013/08/12 Javascript
jquery 漂亮的删除确认和提交无刷新删除示例
2013/11/13 Javascript
js模拟C#中List的简单实例
2014/03/06 Javascript
jquery实现显示已选用户
2014/07/21 Javascript
JavaScript判断文件上传类型的方法
2014/09/02 Javascript
介绍一个简单的JavaScript类框架
2015/06/24 Javascript
JS时间特效最常用的三款
2015/08/19 Javascript
JavaScript表单验证实例之验证表单项是否为空
2016/01/10 Javascript
深入解析jQuery中Deferred的deferred.promise()方法
2016/05/03 Javascript
Bootstrap学习笔记之环境配置(1)
2016/12/07 Javascript
JS 判断某变量是否为某数组中的一个值的3种方法(总结)
2017/07/10 Javascript
[02:16]DOTA2超级联赛专访Burning 逆袭需要抓住机会
2013/06/24 DOTA
[02:52]2014DOTA2西雅图国际邀请赛 CIS战队巡礼
2014/07/07 DOTA
跟老齐学Python之不要红头文件(2)
2014/09/28 Python
Python计算回文数的方法
2015/03/11 Python
python range()函数取反序遍历sequence的方法
2018/06/25 Python
django的csrf实现过程详解
2019/07/26 Python
详细介绍Python进度条tqdm的使用
2019/07/31 Python
详解pyqt5的UI中嵌入matplotlib图形并实时刷新(挖坑和填坑)
2020/08/07 Python
HTML5: Web 标准最巨大的飞跃
2008/10/17 HTML / CSS
乐高官方旗舰店:LEGO积木玩具
2019/04/06 全球购物
基层干部2014全国两会学习心得体会
2014/03/10 职场文书
代办出身证明书
2014/10/21 职场文书
初中生思想道德自我评价
2015/03/09 职场文书
win10以太网连接不上怎么办?Win10连接以太网详细教程
2022/04/08 数码科技