用IIS中部署Flask生产环境

服务器:Windows Server 2012

1.预备工作

在IIS中搭建网站

 为避免万一,将文件路径权限打开

 

2.在IIS中安装CGI模块

打开控制面板,在“程序和功能”中点击“启用或关闭Windows功能”

 3.安装并启用 wfastcgi

在要使用的环境中运行

pip install wfastcgi

找到wfastcgi安装位置

直接在上图中的Scripts文件夹下,用管理员身份打开命令窗口,执行 wfastcgi-enable.exe 程序;

记住红框引号中 的"xxx\python.exe|xxx\lib\site-packages\wfastcgi.py",这个非常重要,会用于后面的IIS配置中。xxx这里代表的是Python环境的本地路径“C:\Users\Administrator\AppData\Local\Programs\Python\Python39”

C:\Users\Administrator\AppData\Local\Programs\Python\Python39\python.exe|C:\Users\Administrator\AppData\Local\Programs\Python\Python39\Lib\site-packages\wfastcgi.py

或直接右键,以管理员身份运行 wfastcgi-enable.exe ,但这样就无法获取 "xxx\python.exe|xxx\lib\site-packages\wfastcgi.py",再用命令窗口运行会出现:

 4.编辑网站:在处理程序映射中,添加模块映射

 双击 “处理程序映射”

 点击“添加模块映射...”

 点击“请求限制”,取消选中

添加完模块映射,确定

 

 即可在程序应射中看见刚刚添加的模块映射

按理说,在这一步设置完毕后,会在Flask应用的根文件夹里自动生成一个web.config文件,因为以上操作就是为了生产web.config文件。

但我的没有。经查验,是因为IIS中缺少ASP。为保证万无一失,干脆将其全部安装:

 删去已经生成的模块映射,重新生成,即可。

5.  web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <remove name="AFlaskFastCgi" />
            <add name="AFlaskFastCgi" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Users\Administrator\AppData\Local\Programs\Python\Python39\python.exe|C:\Users\Administrator\AppData\Local\Programs\Python\Python39\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" />
        </handlers>
    </system.webServer>
</configuration>

修改web.config文件,在appSettings节点里添加两个必需的参数“WSGI_HANDLER”和“PYTHONPATH”。

“WSGI_HANDLER”的参数为入口文件,如,入口文件名为“XXXX.py”,则值为“XXXX.app”

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <handlers>
            <remove name="AFlaskFastCgi" />
            <add name="AFlaskFastCgi" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Users\Administrator\AppData\Local\Programs\Python\Python39\python.exe|C:\Users\Administrator\AppData\Local\Programs\Python\Python39\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" />
        </handlers>
    </system.webServer>
    <appSettings>
        <add key="WSGI_HANDLER" value="main.app" />
        <add key="PYTHONPATH" value="C:\Users\Administrator\Desktop\roadpp\updownload" />
    </appSettings>
</configuration>

6.发生未知 FastCGI 错误

浏览网站,发生“ 错误代码  0x8007010b ”的500错误

 

 

修改该网站所对应的应用程序池

应用程序池->XXXXX->高级设置->进程模型->标识,修改为:LocalSystem

修改后重启,网站可访问。

 7.无法显示图片

运行起来的网站无法显示图片

 其实是因为图片路径里面包含“非法字符”汉字、加号,使得其将png视为text/html,无法解析。

加号“+”问题:

在web.config里加入如下代码,可解决加号“+”的问题

 <system.webServer>
        <-- -->
        </handlers>
        <security>
            <requestFiltering allowDoubleEscaping="true" />
        </security>
    </system.webServer>

汉字问题无法解决,大量图片无法加载,遂放弃,用waitress+nginx,成功

参考:

在IIS中部署Flask应用_当下有大吉8的博客-CSDN博客_flask iis部署

iis7.0 发生未知 FastCGI错误,错误代码 0x8007010b 的解决办法_xl502689459的博客-CSDN博客

手把手为你示范IIS路径或文件名不能包含中文的二个解决方法--win7系统吧

Waitress — Flask Documentation (2.2.x)

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值