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

使用域名在IIS中托管Flask应用程序的最佳做法,flask,iis,self-hosting,Flask,Iis,Self Hosting,我开发了一个flask应用程序(使用sqlserverdb),它运行在本地公司防火墙后面。现在,我们需要本地网络之外的其他用户访问此web应用程序。由于我正在使用SQL Server(带有链接服务器选项)连接到网络中的其他本地数据库(因为我们没有API),因此我希望在IIS本身中托管web应用程序(使用)。请告知: 使用IIS作为主机是否安全?为保护我们的本地网络而采取的任何最佳做法,以防任何渗透。我可以在虚拟机中运行web服务器吗?这会让它更安全吗 我还想买一个域名,并与我的网络服务器IP地址

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

  • 使用
    IIS作为主机是否安全?为保护我们的本地网络而采取的任何最佳做法,以防任何渗透。我可以在虚拟机中运行web服务器吗?这会让它更安全吗
  • 我还想买一个域名,并与我的网络服务器IP地址,这将经常改变-任何供应商的建议,我可以动态更新时,我的网络服务器的IP变化
  • 我期待着学习的最佳做法,主机烧瓶网络应用程序本地使用IIS与域名。
    谢谢你的投入

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

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

    从以下链接下载python:

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

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

    pip install wfastcgi
    
    wfastcgi-enable
    
    python app.py
    
    下面是我的示例:

    from flask import Flask
    app = Flask(__name__)
    @app.route("/")
    def hello():
        return "Hello from FastCGI via IIS!"
    if __name__ == "__main__":
        app.run()
    
    创建要运行的应用程序后,请使用以下命令:

    pip install wfastcgi
    
    wfastcgi-enable
    
    python app.py
    
    现在启用iis的cgi功能:

    • 打开iis。右键单击服务器名称并选择“添加站点”

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

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

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

    • 可执行路径值:
    C:\Python37-32\python.exe | C:\Python37-32\Lib\site packages\wfastcgi.py

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

    • 单击此处的“是”:

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

    • 从操作窗格中单击添加

    • 设置PYTHONPATH变量(即站点文件夹路径):

    • 和WSGI_处理程序(我的烧瓶应用程序名为app.py,因此值为app.app-如果您的名称为site.py,则为site.app或类似名称):

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

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

    并在“C:\Windows\System32\drivers\etc\hosts”中绑定IP和域名

    IP主机名

    注意:这仅适用于本地。如果要为internet用户设置域,则需要购买域名和公共IP,并将IP与域名绑定

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

    • 打开iis管理器->选择应用程序池

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

    • 在identity中,选中custom单选按钮并输入用户名和密码

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

    有关更多详细信息,请参阅以下链接:


    Azure应用程序服务(Windows)上的Python结束后,您真的不想在IIS上托管任何Python web应用,是吗?网上的那些教程已经过时了。谢谢你的建议。非常感谢。。实际上,我正在寻找在IIS中实现的最佳实践,以保护我的web应用程序(最终是我们的办公网络)不受任何不必要的破坏。@jest对于您的第一个任务,您可以在IIS中托管您的站点。如果您只想在本地使用,则可以为只能访问该站点并拒绝其他用户的特定用户或组设置一些限制。将https与证书一起使用。对于第二个问题,当你绑定域名并想公开使用时,你还需要购买公共IP地址并用公共IP绑定域名。如果你还有任何问题,请告诉我。