文档章节

Windows IIS 部署 Flask应用

FenG_Vnc
 FenG_Vnc
发布于 2018/02/01 13:33
字数 724
阅读 2058
收藏 1

【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>>

之前一直都是在Liunx下部署,但无奈客户机器是window机器。因此折腾了半天,终于部署成功,并记录写下了这篇关于windows部署flask应用的 文档


环境准备


安装IIS

下载好了web platform 5.0,搜索2个插件

  • cgi

搜索CGI

  • url重写

URL重写

安装好这两个工具以后,IIS基本就配置好了。然后就是python配置了


配置python环境

  • 安装工具 wfastcgi
pip install wfastcgi

cmd运行命令wfastcgi-enable 前提python的环境已加入path中,我是在虚拟环境中配置

输入图片说明

输入以后得到了一个python运行地址跟一个cgi的运行程序后缀是pyc,

ps:这个pyc因为是python执行后的文件所以不需要去掉一个c就可以了。 所以我们最终得到的路径应该是下面这个

"e:\test\venv\scripts\python.exe|e:\test\venv\lib\site-packages\wfastcgi.py"

如果提示这个权限问题,请使用带管理员权限的cmd运行就可以了

我这个是在虚拟环境中

  • 配置web.config
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
  <system.webServer>
    <handlers>
            <add name="car" path="car" verb="*" modules="FastCgiModule" scriptProcessor="这里复制之前的运行命令的连接" resourceType="File" />
      <!-- scriptProcessor 的值来自命令行工具 wfastcgi-enable -->
      <add name="FlaskFastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="这里复制之前的运行命令的连接" resourceType="Unspecified" requireAccess="Script" />
      
    </handlers>
    <security> 
        <!-- URL 重写中的特殊字符,比如加号+等等 -->
        <requestFiltering allowDoubleEscaping="true"></requestFiltering> 
    </security> 
  </system.webServer>
 
  <appSettings>
    <!-- Required settings -->
    <!-- 在这里指定Falsk app在模块中的具体位置,我的主程序项目文件名叫manager.py,app是实例化的Flask应用 -->
     <!--因此值为manager.app -->
    <add key="WSGI_HANDLER" value="manage.app" />   
    <add key="PYTHONPATH" value="~/" />
 
    <!-- Optional settings -->
    <!-- 需要先创建日志目录,否则报错 -->
    <add key="WSGI_LOG" value="e:\\test\\web.log" />
    <add key="WSGI_RESTART_FILE_REGEX" value="" />
  </appSettings>
</configuration>

这样一来 python环境就部署好了,最后部署IIS


部署IIS

  • 新建一个站点

IIS部署

  • 配置处理程序映射关系

输入图片说明

  • 右键选择 添加模块映射,然后输入配置

输入图片说明

这里的可执行文件就是之前命令wfastcgi-enable 生成的路径 直接复制过来就可以了 重启IIS应用就配置成功了

如果是在windows10上部署的话,双击 处理程序映射 报错不能在此路径中使用此配置节。

如果在父级别上锁定了该节, 那么就在管理员权限下 就是administration用户下 cmd:

 %windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers 
 %windir%\system32\inetsrv\appcmd unlock config -section:system.webServer/modules

最后

网上也有一些说使用Apache2.2 + mod_wsgi 部署,我也部署过发现,核心的mod_wsgi这个模块极其的难装

并且apache ,python ,mod_wsgi ,操作系统 都非常具有要求。所以就放弃了这种安装方式。直接使用IIS方便

如果这篇文章帮助到你了,请记得点个赞 。 并且欢迎转发跟收藏 !

© 著作权归作者所有

FenG_Vnc
粉丝 11
博文 24
码字总数 11100
作品 0
深圳
其他
私信 提问
加载中

评论(4)

FenG_Vnc
FenG_Vnc 博主

引用来自“wei2011”的评论

看了一下,wfastcgi这个模块是微软提供的。不过一般linux部署的多
如果是Liunx的话就不用这种方式部署了。
无锡首席大都督程序员
win10的docker
宇润-不忘251
宇润-不忘251
windows好用
wei2011
wei2011
看了一下,wfastcgi这个模块是微软提供的。不过一般linux部署的多
Html+JS+PowerShell打造Web版AD管理系统

QQ群里的Evan童鞋分享了一个利用Flask 调用 Powershell API 实现的运维管理系统。可惜现在该分享被删除了。很喜欢,所以也依样画葫芦做了一个。 后来发现豆子同学实现了一个django的,http:...

tliursc
2018/01/11
0
0
Flask 使用小结【Updating】

1、最简单的hello world #!/usr/bin/env python encoding: utf-8 from flask import Flaskapp = Flask(name) @app.route('/')def index(): return 'hello world' if name == 'main': app.ru......

大数据之路
2013/10/24
2.2K
0
菜菜从零学习WCF四(承载服务)

有图有真相,如果你也是菜鸟那就也来看看我这个菜鸟一步一步的实现吧。 我们都知道WCF在运行的时候必须自己提供宿主来承载服务。WCF 本身没有附带宿主,就需要我们自己来依附于宿主而承载WCF...

aehyok
2013/03/25
0
0
如何将机器学习的模型部署到NET环境中?

  【IT168 资讯】对于以数据为中心的工程师来说,Python和R是数据中心最流行的编程语言之一。但是,它们并不总是构建应用程序的其余部分的语言。这就是为什么你有时需要找到一种方法,将用...

it168网站
2018/01/05
0
0
System Center 2016 - Configuration Manager 部署安装(二)

今天给大家介绍一下如何为 SCCM2016 准备Windows “功能和角色”的先决条件 注:在安装windows 功能和角色 之后,通常需要重新启动服务器以完成配置。 首先从功能上,以下的功能是站点服务器...

horse87
2018/01/12
0
0

没有更多内容

加载失败,请刷新页面

加载更多

dynamic-connectivity 动态连通性问题之 quick-union 算法

quick-union 的思想是:若对象 p 的 root_id 和对象 q 的 root_id 相等,则认为 p 和 q 连通。 若要将对象 p 和对象 q 连通(已知两对象未连通),则将 p 的 root_id 的值设为 q 的 root_id ...

Phpythoner_Alei
今天
33
0
OSChina 周六乱弹 —— 实在选不出来就唱国歌

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @花间小酌 :#今日歌曲推荐# 分享阿冗的单曲《你的答案》。--祝大家在2020年都找到自己答案。 《你的答案》- 阿冗 手机党少年们想听歌,请使劲...

小小编辑
今天
12
1
Maven打包可执行Jar包的方法

在使用Java开发中,会使用到将工程打包成可执行的jar包的情况,那么在maven中怎么将项目中的依赖包都添加到jar中呢。在pom.xml中添加一下插件: <build><plugins><plugin><ar...

CapJes
今天
10
0
使用vue 开发地图类系统(openlayers.js)的注意。

使用vue 开发地图类系统的注意。 1、使用地图应该创建的对象 少使用 vue 的data 和计算属性(comments)存数据或是vuex。 为什么要要注意这个问题呢? 答:这个就要了解到vue的实现原理 。原理...

DY-Tao
昨天
7
0
web移动端学习:高德地图demo(一)

在高德地图开发中申请开发者资格,然后在控制台中新建应用,获得KEY; 新建模板HTML文件; <!DOCTYPE html><html lang="en"><head><meta charset="UTF-8"><title>地图demo</title><scri......

dxiya
昨天
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部