Windows IIS 部署 Flask应用

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


环境准备python


安装IIS

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

  • cgi

搜索CGI

  • url重写

URL重写

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


配置python环境

  • 安装工具 wfastcgi
pip install wfastcgi

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

输入图片说明

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

ps:这个pyc由于是python执行后的文件因此不须要去掉一个c就能够了。 因此咱们最终获得的路径应该是下面这个api

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

若是提示这个权限问题,请使用带管理员权限的cmd运行就能够了app

我这个是在虚拟环境中

  • 配置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环境就部署好了,最后部署IISpython2.7


部署IIS

  • 新建一个站点

IIS部署

  • 配置处理程序映射关系

输入图片说明

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

输入图片说明

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

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

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

%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方便

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

相关文章
相关标签/搜索