WIN10 server IIS8部署flask web项目

参考资料:

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的时候自动生成。

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值