在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笔记:mysql、redis操作方法
Jun 28 Python
解决seaborn在pycharm中绘图不出图的问题
May 24 Python
Linux系统(CentOS)下python2.7.10安装
Sep 26 Python
Python基础之循环语句用法示例【for、while循环】
Mar 23 Python
利用python计算时间差(返回天数)
Sep 07 Python
Python with标签使用方法解析
Jan 17 Python
设置jupyter中DataFrame的显示限制方式
Apr 12 Python
Python使用Numpy模块读取文件并绘制图片
May 13 Python
python正则表达式的懒惰匹配和贪婪匹配说明
Jul 13 Python
Python远程linux执行命令实现
Nov 11 Python
pycharm debug 断点调试心得分享
Apr 16 Python
Python Matplotlib绘制条形图的全过程
Oct 24 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
一些操作和快捷键的理解和讨论
2020/03/04 星际争霸
世界收音机发展史
2021/03/01 无线电
实时抓取YAHOO股票报价的代码
2006/10/09 PHP
深思 PHP 数组遍历的差异(array_diff 的实现)
2008/03/23 PHP
PHP extract 将数组拆分成多个变量的函数
2010/06/30 PHP
php微信公众号开发之简答题
2018/10/20 PHP
推荐40个简单的 jQuery 导航插件和教程(下篇)
2012/09/14 Javascript
对jQuery的事件绑定的一些思考(补充)
2013/04/20 Javascript
js的alert样式如何更改如背景颜色
2014/01/22 Javascript
js实现无缝滚动特效
2015/12/20 Javascript
JavaScript缓冲运动实现方法(2则示例)
2016/01/08 Javascript
分享有关jQuery中animate、slide、fade等动画的连续触发、滞后反复执行的bug
2016/01/10 Javascript
JQuery控制图片由中心点逐渐放大效果
2016/06/26 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
jquery replace方法去空格
2017/05/08 jQuery
关于Vue在ie10下空白页的debug小结
2018/05/02 Javascript
深入学习JavaScript中的bom
2019/05/27 Javascript
新手入门带你学习JavaScript引擎运行原理
2019/06/24 Javascript
jQuery+ajax实现用户登录验证
2020/09/13 jQuery
简述Python2与Python3的不同点
2018/01/21 Python
python实现微信远程控制电脑
2018/02/22 Python
Python使用dict.fromkeys()快速生成一个字典示例
2019/04/24 Python
Django1.11自带分页器paginator的使用方法
2019/10/31 Python
pycharm中导入模块错误时提示Try to run this command from the system terminal
2020/03/26 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
Django自定义YamlField实现过程解析
2020/11/11 Python
解决TensorFlow训练模型及保存数量限制的问题
2021/03/03 Python
马来西亚网上购物平台:ezbuy
2018/02/13 全球购物
机电专业毕业生推荐信
2013/11/10 职场文书
学前教育求职自荐信范文
2013/12/25 职场文书
医学专业毕业生求职信
2014/06/20 职场文书
小学校长个人总结
2015/03/03 职场文书
安全第一课观后感
2015/06/18 职场文书
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA
零基础学java之循环语句的使用
2022/04/10 Java/Android
MySQL添加索引特点及优化问题
2022/07/23 MySQL