参考资料:
https://blog.csdn.net/hanchaoqi/article/details/9146407
http://www.cnblogs.com/liluping860122/p/9203908.html
https://segmentfault.com/a/1190000008909201
https://blog.csdn.net/david_lee13/article/details/81985847
https://www.jianshu.com/p/a87a9ecbde71
涉及工具和平台
-
Windows Server 12 x64
-
IIS8
-
Python 3.4.2
-
flask
-
flask_cors
-
wfastcgi
-
pymysql
-
pandas
所需文件
python-3.4.2.amd64.msi
WebPlatformInstaller_amd64_en-US.msi
rewrite_amd64_zh-CN.msi
pip-18.1.tar.gz
pandas-0.20.3-cp34-cp34m-win_amd64.whl
PyMySQL-0.9.2-py2.py3-none-any.whl
文件结构
下载python3.4.2
下载地址:https://www.python.org/downloads/release/python-342/
安装python
双击打开python-3.4.2.amd64文件,一路安装下去,很简单。
将python路径添加至环境变量
“这台电脑”--右键“属性”
在第4步Path尾部添加2个路径“;C:\Python34;C:\Python34\Scripts”
验证Python是否安装成功并添加至环境变量
安装pip
下载pip
地址:https://pypi.org/project/pip/#files
解压下载的压缩包至工作目录下(如D:\),打开Windows cmd,运行如下命令进入解压后的pip目录:
cd /d D:\pip-18.1
使用如下命令进行安装:
python setup.py install
pip常用命令:
#安装包
pip install xxx
#升级包,可以使用-U 或者 --upgrade
pip install -U xxx
#卸载包
pip uninstall xxx
#列出已安装的包
pip list
更新pip
python3.4默认安装了pip,先cd到安装目录的Script目录下(之后的pip操作也需要在此目录下,如果该目录已添加至PATH则不用cd到该目录下),并先更新一下才能正常使用。
python -m pip install --upgrade pip
pip install --upgrade setuptools
安装virtualenv虚拟环境(暂不用)
pip install virtualenv
安装项目需要的模块
# pip freeze > requirements.txt #生成requirements.txt
pip install -r requirements.txt #安装requirements.txt依赖
若无法批量安装,则如下依次安装
pip install flask
pip install flask_cors
pip install wfastcgi
pandas下载安装
pandas下载地址(谷歌浏览器打开):https://www.lfd.uci.edu/~gohlke/pythonlibs/#pandas
cmd到文件所在目录:
cd C:\python
然后进行安装:
pip install pandas-0.20.3-cp34-cp34m-win_amd64.whl
pymysql下载安装
下载地址:https://pypi.org/project/PyMySQL/#files
cd C:\python
pip install PyMySQL-0.9.2-py2.py3-none-any.whl
验证是否安装成功
复制wfastcgi.py至项目文件夹
在python3.4.2的安装目录: Lib/site-packages文件夹下,找到: wfastcgi.py 这个文件。
把这个文件拷贝到你的项目根目录:
启用wfastcgi
cd到wfastcgi.py所在目录(不是项目目录,而是安装目录C:\Python34\python.exe\Lib\site-packages)后执行(或者将目录路径添加到PATH)。
wfastcgi-enable
结果中的两个路径后面会用到:C:\Python34\python.exe|C:\Python34\python.exe\Lib\site-packages\wfastcgi.py
安装 IIS,启用 CGI
在控制面板搜索“启用或关闭 Windows 功能”
安装Web平台安装程序
下载地址:https://www.microsoft.com/web/downloads/platform.aspx
下载之后进行安装。
安装 URL 重写组件
打开IIS
搜索IIS,打开IIS管理器:
双击,打开Web平台安装程序
安装CGI(搜索CGI,一般都已安装)和URL 重写组件(搜索URL,Web平台安装程序上的URL重写工具2.0可能会因为版本不对应而失败),如果安装失败,则从下列下载地址下载后进行安装。
URL重写工具下载地址:
创建web.config 文件并置于项目目录
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<!-- scriptProcessor 的值来自命令行工具 wfastcgi-enable -->
<add name="FlaskFastCGI" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\Python34\python.exe|C:\Python34\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="app.app" />
<add key="PYTHONPATH" value="C:\python\ZXX_8084" />
<!-- Optional settings -->
<!-- 需要先创建日志目录,否则报错 -->
<add key="WSGI_LOG" value="C:\python\ZXX_8084\log\web.log" />
<add key="WSGI_RESTART_FILE_REGEX" value="" />
</appSettings>
</configuration>
配置 IIS 目录及权限
现在你需要让IIS用户拥有访问和执行你的网站脚本的权限,进入 C:\python\ZXX_8084目录
cd C:\python\ZXX_8084
执行下面两条命令:
icacls . /grant "NT AUTHORITY\IUSR:(OI)(CI)(RX)"
icacls . /grant "Builtin\IIS_IUSRS:(OI)(CI)(RX)"
IIS添加应用
解锁配置节
因为 IIS 7/8 采用了更安全的 web.config 管理机制,默认情况下会锁住配置项不允许更改。
运行命令行 :
C:\windows\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers
启用父路径(此步骤暂不需要)
将应用程序池标识改为LocalSystem
在你的网站下面找到【处理程序映射】(此步骤暂不需要)
直接跳到后面的“回收应用程序池,重启IIS”
如图:双击打开:
确认添加模块
这个时候你应该可以看见你的FlaskFastCGI程序了
回到IIS控制台,进入【FastCGI设置】如图:
双击打开你应该可以看见刚才添加的FastCGI:
双击,编辑 —【环境变量】
这里添加2个变量:
PYTHONPATH 值为: 项目路径:(如:D:\saintLocal\ZZ_8085)
WSGI_HANDLER 值为: 项目启动文件中的app,如图,因为我是通过app.py启动。
回收应用程序池,重启IIS
可能出现的问题
配置错误 不能在此路径中使用此配置节。如果在父级别上锁定了该节,便会出现这种情况。锁定是默认设置的(overrideModeDefault="Deny"),或者是通过包含 overrideMode="Deny" 或旧有的 allowOverride="false" 的位置标记明确设置的配置文件 \\?\C:\asptest\one\web.config
解决方案
因为 IIS 7/8 采用了更安全的 web.config 管理机制,默认情况下会锁住配置项不允许更改。
运行命令行 C:\windows\system32\inetsrv\appcmd unlock config -section:system.webServer/handlers,其中的 handlers 是错误信息中红字显示的节点名称。
如果modules也被锁定,可以运行:C:\windows\system32\inetsrv\appcmd unlock config -section:system.webServer/modules
注意:cmd.exe要以管理员身份启动,在c:\windows\system32下找到cmd.exe,右键管理员启动,输入上面的命令即可。
日志无法写入的解决方案
在应用程序池对网站进行高级设置,标识改为LocalSystem
IIS上的最终结果
FastCGI设置的完整路径和参数,在执行wfastcgi-enable的时候自动生成。