参考文档
https://segmentfault.com/a/1190000008909201
http://blog.51cto.com/anngle/1922041
https://www.cnblogs.com/xiaolecn/p/5111076.html --配置过程中,一直出错,最后看了这个文章
1. https://download.lfd.uci.edu/pythonlibs/n1rrk3iq/wfastcgi-3.0.0-py2.py3-none-any.whl 下载安装
pip install wfastcgi-3.0.0-py2.py3-none-any.whl
2. IIS 中启用 CGI --我发现我已经装了
安装 URL 重写组件
IIS 需要安装 URL 重写组件,这个可以通过Microsoft Web Platform Installer来安装。
安装完毕后,运行这个Microsoft Web Platform Installer,搜索url,安装url重写工具
3.一旦wfastcgi
和IIS安装完毕,用管理员的身份运行wfastcgi-enable
来在IIS上启用wfastcgi
配置。这个能配置一个路由处理器的CGI应用。
wfastcgi-enable
d:\anaconda3\python.exe|d:\anaconda3\lib\site-packages\wfastcgi.py
.
看到截图中的结果,这个下面要用。
上面执行的命令实际上和手动添加一样,如下图:
如果要卸载,记得在卸载之前禁用wfastcgi
,运行wfastcgi-disable
:
wfastcgi-disable
pip uninstall wfastcgi
4.项目根目录下创建一个web.config文件
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <!-- scriptProcessor 的值来自命令行工具 wfastcgi-enable --> <add name="FlaskFastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="d:\anaconda3\python.exe|d:\anaconda3\lib\site-packages\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" /> </handlers> <security> <!-- URL 重写中的特殊字符,比如加号+等等 --> <requestFiltering allowDoubleEscaping="true"></requestFiltering> </security> </system.webServer> <appSettings> <!-- Required settings --> <!-- 在这里指定Falsk app在模块中的具体位置 --> <add key="WSGI_HANDLER" value="MyFlask.app" /> <add key="PYTHONPATH" value="~/" /> <!-- Optional settings --> <!-- 需要先创建日志目录,否则报错 --> <add key="WSGI_LOG" value="D:\PythonLogs\oboeqa_web.log" /> <add key="WSGI_RESTART_FILE_REGEX" value="" /> </appSettings> </configuration>
5.建立网站目录
把python项目拷贝到D:\website\MyFlask
6. shift鼠标右键,进入控制台,运行如下两条命令 (注,这一步不知是否正确,后来我在website目录下又执行了一遍下面的命令)
icacls . /grant "NT AUTHORITY\IUSR:(OI)(CI)(RX)"
icacls . /grant "Builtin\IIS_IUSRS:(OI)(CI)(RX)"
7. IIS中添加网站
8. 此时按照别的教程,应该已经完成了,但是此时我点击在实施过程中,用了上面的web.config后点击处理程序映射报错。
我猜想,这里的配置应该就是上面的web.config的配置。我把项目中的web.config删除后,点击‘处理程序映射’,没有报错。手动添加模块映射
注意,wfastcgi.py 请从之前记录下来的目录下拷贝到项目下面。路径一定要* , 不能写*.py
确定后
此时,发现项目中,自动添加了web.config文件:
<?xml version="1.0" encoding="UTF-8"?> <configuration> <system.webServer> <handlers> <add name="py" path="*" verb="*" modules="FastCgiModule" scriptProcessor="D:\Anaconda3\python.exe|D:\website\MyFlask\wfastcgi.py" resourceType="Unspecified" requireAccess="Script" /> </handlers> </system.webServer> </configuration>
FastCGI设置:
WSGI_HANDLER WSGI_HANDLER
PYTHONPATH ~/ ==》这里注意了,我一开始这里写了绝对路径,导致了我开发环境调试时,app也指向了正式的app。
应用程序池是这样的
这里要启动