使用域名在IIS中托管Flask应用的最佳做法

问题描述

我开发了一个flask应用程序(具有SQL Server数据库),该应用程序在本地公司防火墙后面运行。现在,我们需要本地网络之外的其他用户访问此Web应用程序。由于我正在使用SQL Server(带有链接服务器选项)连接到网络中的其他本地数据库(因为我们没有API),因此我希望将Web应用托管在IIS本身(使用{{3} })。请告知:

  1. 使用IIS进行托管是否安全?万一有渗透,应遵循任何最佳实践来保护我们的本地网络。我可以在虚拟机中运行Web服务器吗?会更安全吗?
  2. 我还想购买一个域名并与我的Web服务器IP地址关联,该域名会经常更改-任何供应商建议,我可以在Web服务器IP更改时动态更新。

我希望学习使用带有域名的IIS在本地托管烧瓶Web应用程序的最佳实践。 感谢您的输入!

解决方法

您可以按照以下步骤在iis上托管flask应用程序:

首先,您需要在服务器上安装python,wfastcgi和flask。

从以下链接下载python:

https://www.python.org/downloads/

注意:如果可能,请使用3.6以上的python版本。

在安装python之后,安装wfastcgi。以管理员身份运行命令提示符并运行以下命令:

pip install wfastcgi

wfastcgi-enable

下面是我的烧瓶示例:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello():
    return "Hello from FastCGI via IIS!"
if __name__ == "__main__":
    app.run()

在创建要运行的应用程序后,使用以下命令:

python app.py

现在启用iis的cgi功能:

enter image description here

  • 打开iis。右键单击服务器名称,然后选择添加站点。

enter image description here

  • 输入站点名称的物理路径和站点绑定。

  • 添加站点后,选择站点名称,然后从中间窗格中选择处理程序映射功能。

enter image description here

  • 从操作窗格中单击“添加模块映射”。

enter image description here

  • 可执行路径值:

C:\ Python37-32 \ python.exe | C:\ Python37-32 \ Lib \ site-packages \ wfastcgi.py

enter image description here

  • 单击“请求限制”。确保未选中“仅在请求映射到以下情况时调用处理程序:”复选框:

enter image description here

  • 在此处单击“是”:

enter image description here

  • 现在返回并选择应用程序设置功能。

enter image description here

  • 从操作窗格中单击添加。

enter image description here

  • 设置PYTHONPATH变量(这是您的站点文件夹路径):

enter image description here

  • 然后是WSGI_HANDLER(我的Flask应用程序名为app.py,因此值为app.app -如果您的名称为site.py,则它将为site.app或类似名称):

enter image description here

单击“确定”并浏览到您的站点。

enter image description here

如果要使用您的站点配置域名,则需要按以下方式设置站点绑定:

enter image description here

并将IP和域名绑定在“ C:\ Windows \ System32 \ drivers \ etc \ hosts”中的敌对状态

IP主机名

注意:这仅在本地有效。如果要为互联网用户设置域名,则需要购买域名和公共IP,并将IP与域名绑定。

要访问SQL Server iis用户没有足够的权限,您需要配置具有足够权限以使用iis应用程序池访问SQL Server的用户。

  • 打开iis mnager->选择应用程序池

  • 从操作窗格中选择高级设置。

  • 以身份检查自定义单选按钮,然后输入用户名和密码。

enter image description here

注意:确保将iis_iusrs和iusr权限分配给站点和python文件夹。

有关更多详细信息,您可以参考以下链接:

https://docs.microsoft.com/en-us/visualstudio/python/configure-web-apps-for-iis-windows?view=vs-2019

https://forums.iis.net/post/2159167.aspx

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...