部署到 IIS 时出现 Flask 权限错误
Flask Permission Error when deployed to IIS
我使用 FastCGI 和 WSGI 处理程序将 Flask 应用程序部署到 IIS。我遵循的步骤是
- 为 Python 创建了一个虚拟环境并安装了所有包,包括 wfastCGI。
- 设置处理程序映射并包括 FastCGI 设置。
- 通过添加 IIS_IUSRS 和 IUSR 为文件夹分配必要的权限。
以下是我按照步骤link进行的中等link。
https://medium.com/@dpralay07/deploy-a-python-flask-application-in-iis-server-and-run-on-machine-ip-address-ddb81df8edf3
代码的文件夹结构如下所示(checkin_env)是虚拟环境。
Fast CGI设置如下所示,WSGI Handler为checkFlask.app
生成的web.config文件在这里。
当我在端口 80、5000 上尝试 运行 时,我收到了与 System32 相关的权限错误,我对此感到非常困惑和不确定。任何想法或意见都将受到高度赞赏。谢谢。
您可以按照以下步骤从虚拟环境中 运行 flask 应用程序:
1) 在您的计算机上安装 python:
注意:使用python3.6以上的版本。
安装时请注意以下事项:
select自定义安装,在路径中添加python
预先设置你已经select为所有用户设置并安装在c盘:
2) 为您的应用程序创建和配置 Python 虚拟环境:
-打开命令提示符。
-定位到C:盘根目录:cd C:\
-创建一个新目录来存储您的虚拟环境:
mkdir 虚拟环境
-导航到新建的virtualenvs目录:
cd 虚拟环境
-创建一个新的虚拟环境。 python -m venv 测试
3)激活虚拟环境并升级pip:
-打开命令提示符
-导航到虚拟环境的目录:
cd C:\virtualenvs\test
-激活虚拟环境:
Scripts\activate.bat
-此时会在命令提示符的开头看到(test),表示虚拟环境已激活:
-运行 下面的命令安装 pip 和 wfastcgi:
python -m pip install — upgrade pip
pip install wfastcgi
4) 安装烧瓶:
pip install flask
5)在iis中创建站点:
-在 IIS 中创建一个新站点并设置您的 flask 应用程序的文件夹路径:
6) 配置站点句柄映射:
-Select 您的站点,双击“处理程序映射”
-点击“添加模块映射”
-点击“请求限制”。确保“仅当请求映射到时调用处理程序:”复选框未选中:
在此处单击“是”:
-转到根服务器设置并单击“FastCGI 设置”:
-双击它,然后单击环境变量集合的“…”以启动环境变量集合编辑器。
-设置PYTHONPATH变量:
-还有 WSGI_HANDLER(我的 Flask 应用名为 hello.py,因此值为 app.app - 如果您的名为 site.py,则值为 site.app 或类似的):
-单击“确定”并浏览到您的站点:
web.conifg 文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="flasktest" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\virtualenvs\test\Scripts\python.exe|C:\virtualenvs\test\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" />
</handlers>
</system.webServer>
</configuration>
问题出在 checkFlask.py
文件中的一些库,其中包括 IPython.display
。删除这些库后代码工作正常。暂时将其标记为已解决。这是我找到的解决方案的参考 link。 https://community.esri.com/t5/python-questions/are-wfastcgi-python-api-compatible/m-p/76578#M6215
我使用 FastCGI 和 WSGI 处理程序将 Flask 应用程序部署到 IIS。我遵循的步骤是
- 为 Python 创建了一个虚拟环境并安装了所有包,包括 wfastCGI。
- 设置处理程序映射并包括 FastCGI 设置。
- 通过添加 IIS_IUSRS 和 IUSR 为文件夹分配必要的权限。
以下是我按照步骤link进行的中等link。 https://medium.com/@dpralay07/deploy-a-python-flask-application-in-iis-server-and-run-on-machine-ip-address-ddb81df8edf3
代码的文件夹结构如下所示(checkin_env)是虚拟环境。
Fast CGI设置如下所示,WSGI Handler为checkFlask.app
生成的web.config文件在这里。
当我在端口 80、5000 上尝试 运行 时,我收到了与 System32 相关的权限错误,我对此感到非常困惑和不确定。任何想法或意见都将受到高度赞赏。谢谢。
您可以按照以下步骤从虚拟环境中 运行 flask 应用程序:
1) 在您的计算机上安装 python:
注意:使用python3.6以上的版本。
安装时请注意以下事项:
select自定义安装,在路径中添加python
预先设置你已经select为所有用户设置并安装在c盘:
2) 为您的应用程序创建和配置 Python 虚拟环境:
-打开命令提示符。
-定位到C:盘根目录:cd C:\
-创建一个新目录来存储您的虚拟环境: mkdir 虚拟环境
-导航到新建的virtualenvs目录: cd 虚拟环境
-创建一个新的虚拟环境。 python -m venv 测试
3)激活虚拟环境并升级pip:
-打开命令提示符
-导航到虚拟环境的目录:
cd C:\virtualenvs\test
-激活虚拟环境:
Scripts\activate.bat
-此时会在命令提示符的开头看到(test),表示虚拟环境已激活:
-运行 下面的命令安装 pip 和 wfastcgi:
python -m pip install — upgrade pip
pip install wfastcgi
4) 安装烧瓶:
pip install flask
5)在iis中创建站点:
-在 IIS 中创建一个新站点并设置您的 flask 应用程序的文件夹路径:
6) 配置站点句柄映射:
-Select 您的站点,双击“处理程序映射”
-点击“添加模块映射”
-点击“请求限制”。确保“仅当请求映射到时调用处理程序:”复选框未选中:
在此处单击“是”:
-转到根服务器设置并单击“FastCGI 设置”:
-双击它,然后单击环境变量集合的“…”以启动环境变量集合编辑器。
-设置PYTHONPATH变量:
-还有 WSGI_HANDLER(我的 Flask 应用名为 hello.py,因此值为 app.app - 如果您的名为 site.py,则值为 site.app 或类似的):
-单击“确定”并浏览到您的站点:
web.conifg 文件:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<handlers>
<add name="flasktest" path="*" verb="*" modules="FastCgiModule" scriptProcessor="C:\virtualenvs\test\Scripts\python.exe|C:\virtualenvs\test\Lib\site-packages\wfastcgi.py" resourceType="Unspecified" />
</handlers>
</system.webServer>
</configuration>
问题出在 checkFlask.py
文件中的一些库,其中包括 IPython.display
。删除这些库后代码工作正常。暂时将其标记为已解决。这是我找到的解决方案的参考 link。 https://community.esri.com/t5/python-questions/are-wfastcgi-python-api-compatible/m-p/76578#M6215