Deploy Flask app to Apache on Windows

故事背景

这次我需要将一个Flask应用部署到本地的Windows服务器上。操作系统是64位的,程序是基于Python 3开发的,大体就是这样。

部署选项

根据Flask的部署指南,可供选择的方式还是蛮多的,IIS、Apache、nginx……
本着享受生活不折腾的原则,我们应该选择标准的方便的用户多的技术。
再按照页面上的提示,“Just remember that your Flask application object is the actual WSGI application“,于是,mod_wsgi(Apache)就成了我的不二选择。

Running mod_wsgi on Windows

在Windows上运行Apache with mod_wsgi需要一些技巧。
有4点是必须严格遵守的:

  1. 不能混用32位和64位的文件
  2. 安装Python时要选择“Install for all users”
  3. 构建Apache使用的编译器版本要与构建Python的一致
  4. 构建mod_wsgi使用的编译器版本要与构建Python的一致

下载
mod_wsgi的下载地址是https://github.com/GrahamDumpleton/mod_wsgi/releases,但不是每一次更新都有预编译好的二进制文件。
我使用的是mod_wsgi 4.4.12,对应的Python是3.3.5或者3.4.2。
Apache的下载地址是https://www.apachelounge.com/download/VC10/,我使用64位的版本。

安装
安装Python时要选择“Install for all users”。另外,自定义项目里的“Add python.exe to Path”也最好选上。
把Apache24文件夹解压缩到c:\Apache24。(因为配置文件里是默认的这个路径,如果要放在别的地方,就自己修改下相应的配置)
ps.为了方便排错,可以在这里先测试一下Apache是否正常。运行httpd.exe,然后访问http://localhost/,如果没有问题应该可以看到测试页。
把mod_wsgi-py34-VC10.so复制到c:\Apache24\modules目录下,文件名改成mod_wsgi.so,然后把

LoadModule wsgi_module modules/mod_wsgi.so

添加到配置文件(httpd.conf)里。

测试
将测试文件保存为c:\mydir\myapp.wsgi

1 def application(environ, start_response):
2     status = ‘200 OK‘
3     output = b‘Hello World!‘
4
5     response_headers = [(‘Content-type‘, ‘text/plain‘),
6                         (‘Content-Length‘, str(len(output)))]
7     start_response(status, response_headers)
8
9     return [output]

在配置文件里添加:

1 <VirtualHost *:80>
2     WSGIScriptAlias /myapp c:\mydir\myapp.wsgi
3     <Directory c:\mydir>
4         Require all granted
5     </Directory>
6 </VirtualHost>

重新运行httpd.exe,然后访问http://localhost/myapp,看到Hello World!就说明安装成功了。

部署Flask应用

使用pip安装Flask:

pip install flask

把Flask例程保存为c:\mydir\hello.py

1 from flask import Flask
2 app = Flask(__name__)
3
4 @app.route("/")
5 def hello():
6     return "Hello World!"
7
8 if __name__ == ‘__main__‘:
9     app.run()

mod_wsgi要求WSGI应用的入口叫“application”,所以我们还需要创建一个.wsgi文件来做转换。把下面的代码保存为c:\mydir\myapp.wsgi

1 import sys
2 sys.path.insert(0, ‘c:\\mydir‘)
3 from hello import app as application

将c:\mydir加入系统环境的Path变量是为了确保我们的hello模块可以被解释程序找到。
重启Apache,查看一下配置好的成果吧。

扩展阅读

Running Apache as a Service

Working with Virtual Environments

Running mod_wsgi on Windows

时间: 2024-10-06 11:03:39

Deploy Flask app to Apache on Windows的相关文章

Flask + mod_wsgi + Apache on Windows 部署成功(随时接受提问)

前言 说是前言,纯粹就是吐槽. 假设你赶时间.全然能够跳过这部分,我保证不会在这里隐藏不论什么实用的内容. 人上年纪后.可能冲劲不足,我花了大概两周的时间才成功的将flask部署到windows上.还好没有放弃,终于找到了答案. 只是这也说明我在开源软件的应用和配置上还非常差劲呀,当我看到要用VC10的C/C++编译器编译源码时,头都大了.你说我们这些平时习惯了Vistual Studio编译的.哪还懂什么make命令呀. 还好网上什么都有,连帮你编译的都有,因此,编译这一难没有经历. 对于fl

apache在windows下的命令安装与报错解决

1.在windows下可以通过运行apache的exe文件就可以,但当我们打包的时候,就需要命令来安装apache.apache在windows下用命令下的安装为: apache.exe -k install 2.如果操作系统是win8或者是win7可能会报如下错误: <OS 5>拒绝访问. :Failed to open the WinNT service manager 主要是需要管理员权限才行.需要在打开cmd的时候用管理员身份打开,然后执行以上命令即可:也可以写一个bat文件以管理员身

Reimagining App Development with the Windows Runtime

The Windows Runtime Enables Language Choice   The Windows Runtime Is Natural and Familiar [DllImport("avicap32.dll", EntryPoint = "capCreateCaptureWindow")] static extern int capCreateCaptureWindow(   string lpszWindowName, int dwStyle

Apache在windows下的安装配置

Apache在windows下的安装配置 转载自:http://blog.sina.com.cn/s/blog_536f16b00100cfat.html     1 Apache的下载 Apache是开源的Web服务器,可在http://httpd.apache.org/download.cgi或http://www.apache.com/en_apache/index.php上下载最新版本. 由于Apache将安装在windows系统下,所以下载“Win32 Binary(MSI Insta

Apache QPID windows vs2010编译

这几天使用apache qpid,网上关于在windows下的编译过程几乎没有,自己编译时候也废了点功夫,现记录以飨他人. 首先,可以确定的是qpid确实支持windows平台的.但是编译过程类似与linux编译过程,需要再次生成一次工程才能形成windows下的sln文件 第一步:准备环境,需要安装的软件如下: 1.ruby 2.python 3.cmake 4.boost 1.2项是用来再次生成工程用的,以后并不使用 3项是必要的,qpid是个cmake工程,符合发展趋势的 4项是编译必要的

flask+mod_wsgi+apache在windows上的布署

已经安装过python3.5 1.安装flask: pip install flask 2.安装apache: Apache是开源软件,针对windows环境,它不直接提供编译版本.可以在http://www.apachelounge.com/download/ 下载适合自己环境的版本. 根据我自己当前的环境,我选择的是Win32 VC10编译出来的Apache2.4版本将压缩包下载到本机,然后将压缩包里面的Apache24文件夹拷贝到C:\.当然,你可以拷贝到你的系统的任何位置,但Apache

IIS服务器 远程发布(Web Deploy)配置 VS2010 开发环境 Windows Server 2008服务器系统

sp.net 网站有三种常用的发布方式:分别是拷贝开发机上发布好的文件到服务器硬盘上.打包成安装程序到服务器上安装.通过Visual Studio 开发平台远程发布到服务器. 在asp.net网站的开发阶段,经常需要将系统发布到开发者所在局域网的服务器上,供客户和项目负责人预览.之前都是在开发机上发布好之后再拷贝到服务器上部署,因为开 发阶段系统的更新很快,每次都拷贝文件很麻烦.于是开始研究VS2010发布到远程IIS服务器的方法,经过在网上查找相关资料和亲身实践成功的在Windows Serv

Apache在windows下的安装

Apache HTTP Server的官网地址http://httpd.apache.org/. 下载windows的Apache二进制安装包地址https://www.apachehaus.com/cgi-bin/download.plx. 可以参考http://blog.csdn.net/pj386960300/article/details/44306725进行安装.

window10下部署flask系统(apache和wsgi)

公司有一个小系统,通过url和其他系统进行数据交互(有点土). 因此,利用flask写了一个小程序. 现在,考虑到并发问题(flask自身是不会并发的),准备部署在apache+wsgi环境. 网上百度了半天,发现各种坑.自己还算幸运,两个小时基本搞定. 关键是找到了一片好文章,里面特别提到(apache,wsgi和python的版本一定要对应,apache和wsgi的编译器一定要一致) 1.安装apache. 我这里选择的版本,是64位的vc10编译的. 具体下载地址:http://www.a