您当前的位置:首页 > 计算机 > 服务器 > IIS

Windows Server 部署 Flask 框架网页到 IIS 服务器

时间:01-24来源:作者:点击数:

准备工作

把Flask框架网站放在某一路径, 我以C盘下Hello文件夹下的Python Flask框架 Hello.py为例。HTML文件在template里,static里是样式,log里是日志文件

在这里插入图片描述

Windows Server 安装 IIS 服务器,勾选 CGI.

下载并安装Microsoft Web Platform Installer,在IIS Manager 界面 Management 点击Microsoft Web Platform Installer,安装URL Rewrite 2.1

在这里插入图片描述

安装 wfastcgi

pip install wfastcgi

cd c:\python_dir\scripts #找到python路径

wfastcgi-enable

记录两个文件 python.exe 和 wfastcgi.py 路径:

c:\program files (x86)\python38-32\python.exe|c:\program files (x86)\python38-32\lib\site-packages\wfastcgi.py

wfastcgi-disable 关闭wfastcgi

添加web.config 文件

在python文件目录下创建web.config文件,有人说最好生成这个文件,我是自己创的没什么问题。

添加 Module Mapping 步骤后可以自动生成web.config

<?xml version="1.0" encoding="UTF-8"?>
<configuration>
    <system.webServer>
        <security> 
        	<requestFiltering allowDoubleEscaping="true"></requestFiltering> 
    	</security>
        <directoryBrowse enabled="false" showFlags="Extension" />
        <handlers>
            <add name="flask" path="*" verb="*" modules="FastCgiModule" scriptProcessor="c:\program files (x86)\python38-32\python.exe|&quot;c:\program files (x86)\python38-32\lib\site-packages\wfastcgi.py&quot;" resourceType="Unspecified" />
        </handlers> 
    </system.webServer>
    <appSettings>
        <!-- 2个必须要有的参数: 
        @WSGI_HANDLER:fastCGI获得请求后调用的flask应用入口。
        @PYTHONPATH: 执行整个应用的项目目录
        -->
        <add key="WSGI_HANDLER" value="Hello.app" />
        <add key="PYTHONPATH" value="C:/Hello" />
    </appSettings>
</configuration>

把刚才cmd中的两个路径添加到scriptProcessor后

这里的add key中的 Hello.app 即包含app.run的 python程序的名字+app

PYTHONPATH 即是你自己写的flask python文件的路径,这里就是C:/Hello, Hello 文件夹下的Hello.py.

这里可能会添加不成功,不过没关系,一会儿可以手动添加

添加站点

在IIS Manager 页面左边 Server 下的 Sites 右键添加新站点,物理路径为Hello文件夹。

在这里插入图片描述

添加 Module Mapping

在你新创的站点控制台里双击进入Handler Mappings,右边Add Module Mapping。

(不要在IIS控制台直接进入,不然创建的FastCGI会对所有网站生效!)

Module 选 FastCgiModule

Executable 这一栏继续复制刚才的两个路径。由于它本身只支持dll 和 exe 文件,可能添加 wfastcgi.py 的路径的时候可能会出问题。我的解决方法是:python.exe 的路径不加双引号,wfastcgi.py 的路径加双引号。

在这里插入图片描述

Request Restrictions 选项点进去 Invoke handler only if request is mapped to 选项的勾去掉,除非你就想让网页显示文件夹目录,如果是这样的话,网站的Directory Browsing 选项需要启用。在这里不多叙述。

在这里插入图片描述

手动添加

回到IIS Manager主页面,找到FastCGISettings选项点击进去,可以看到刚添加的映射。双击点进去。

在这里插入图片描述

点击General 里的第一个Environment Variables,如果左边没有就手动添加PYTHONPATH和WSGI_HANDLER

在这里插入图片描述
在这里插入图片描述

配置 IIS 目录及权限

现在你需要让IIS用户拥有访问和执行你的网站脚本的权限,进入网站目录,执行下面两条命令:

cd C:\hello

icacls . /grant “NT AUTHORITY\IUSR:(OI)(CI)(RX)”

icacls . /grant “Builtin\IIS_IUSRS:(OI)(CI)(RX)”

做到这里网站应该可以从iis里打开了。

如果还是因为没有权限报错可以把 Hello 文件夹分享给所有人。

如果发生HTTP 错误 500.19 - Internal Server Error,可以cmd试试以下命令

%windir%/system32/inetsrv/appcmd.exe set config -section:system.webServer/httpCompression /-[name=‘xpress’]

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门