本文次要介绍在Windows Server 2012R2上通过IIS部署Flask我的项目的过程,以及对TTFB提早大问题的思考。对于如何申请云服务器,注册(子)域名,备案,凋谢云服务器端口,获取SSL证书等不做介绍,感兴趣能够参考通过二级域名解决1台云服务器搭建多个公众号后端服务的问题。

一.部署环境筹备

1.操作系统和IIS版本

操作系统的版本是Windows Server 2012R2,IIS版本为8.5.9600.16384:

2.CGI和ISAPI装置

通过服务器管理器增加角色和性能,次要是装置CGI、ISAPI扩大、ISAPI筛选器:

二.IIS部署Flask我的项目

这里的Flask我的项目特指通过Flask框架封装的REST API后端接口的单个文件。

1.装置和启用wfastcgi模块

装置、启用和禁用wfastcgi命令如下所示:

pip install wfastcgi #装置wfastcgi-enable      #启用wfastcgi-disable     #禁用

通过命令wfastcgi-enable启用后输入后果如下:

2.增加和绑定网站

增加和编辑网站如下所示:

增加和编辑网站绑定如下所示:

3.增加模块映射

首先选中要配置的Flask我的项目,而后点击处理程序映射,增加模块映射:

(1)申请门路:*
(2)模块:FastCgiModule
(3)可执行文件:执行命令wfastcgi-enable的输入
(4)名称:自定义填写
阐明:填写结束后,在弹出的对话框中抉择是。

4.申请限度

勾销"仅当申请映射至以下内容时才调用处理程序'后面的对号:

5.FastCGI设置

首先选中服务器,而后点击FastCGI设置:

对环境变量PYTHONPATH和WSGI_HANDLER的设置:

其中,PYTHONPATH示意Flask我的项目的根目录,WSGI_HANDLER示意文件名.app。

6.我的项目配置

次要是Flask我的项目根目录上面的web.config文件:

<?xml version="1.0" encoding="UTF-8"?><configuration>  <system.webServer>    <handlers>      <add name="XXX" path="*" verb="*" modules="FastCgiModule" scriptProcessor="d:\python37\python.exe|d:\python37\lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" />    </handlers>  </system.webServer>   <appSettings>    <add key="WSGI_HANDLER" value="server_fastapi.app" />    <add key="PYTHONPATH" value="YYY" />     <add key="WSGI_RESTART_FILE_REGEX" value=".*((\.py)|(\.config))$" />  </appSettings></configuration>

wfastcgi官网残缺的web.config配置文件[4]如下所示:

<configuration>  <system.webServer>    <handlers>      <add name="Python FastCGI"           path="*"           verb="*"           modules="FastCgiModule"           scriptProcessor="C:\Python36\python.exe|C:\Python36\Lib\site-packages\wfastcgi.py"           resourceType="Unspecified"           requireAccess="Script" />    </handlers>  </system.webServer>  <appSettings>    <!-- Required settings -->    <add key="WSGI_HANDLER" value="my_app.wsgi_app()" />    <add key="PYTHONPATH" value="C:\MyApp" />    <!-- Optional settings -->    <add key="WSGI_LOG" value="C:\Logs\my_app.log" />    <add key="WSGI_RESTART_FILE_REGEX" value=".*((\.py)|(\.config))$" />    <add key="APPINSIGHTS_INSTRUMENTATIONKEY" value="__instrumentation_key__" />    <add key="DJANGO_SETTINGS_MODULE" value="my_app.settings" />    <add key="WSGI_PTVSD_SECRET" value="__secret_code__" />    <add key="WSGI_PTVSD_ADDRESS" value="ipaddress:port" />  </appSettings></configuration>

阐明:重新启动服务器后就能够应用https+域名拜访Flask我的项目接口了。

三.对于TTFB提早大的问题

1.首次申请TTFB提早大

通过IIS部署Flask接口后,发现在首次申请API的时候,TTFB提早大:

当再次申请API的时候,响应速度就十分的快了:

2.没有失去解决

  次要参考了[5]和其它的相干文章,无论是网站高级设置->预加载已启用,还是配置编辑器,还是应用程序池高级设置(队列长度|启动模式|固定工夫距离|闲置超时)等都做了尝试,然而首次申请API的时候,TTFB提早大的问题依然存在。当初的权宜之计是在app启动的时候主动发一次测试申请,这样用户在首次应用的时候不会感觉申请工夫过长,毕竟TTFB几十秒的提早切实是太高了。

参考文献:
[1]Windows Server 2012R2服务器IIS装置步骤:https://jingyan.baidu.com/art...
[2]IIS服务器SSL证书装置部署:https://cloud.tencent.com/doc...
[3]将基于Flask框架的Web利用部署到IIS上:https://www.jianshu.com/p/8b6...
[4]wfastcgi 3.0.0:https://pypi.org/project/wfas...
[5]IIS解决首次加载慢的问题:https://www.cnblogs.com/chasi...

本文由mdnice多平台公布