Flask – 部署

  • 外部可见服务器

    开发服务器上的 Flask 应用程序只能在设置了开发环境的计算机上访问。这是默认行为,因为在调试模式下,用户可以在计算机上执行任意代码。
    如果debug被禁用,本地计算机上的开发服务器可以通过将主机名设置为网络上的用户可用‘0.0.0.0’.
    
    app.run(host = ’0.0.0.0’)
    
    因此,您的操作系统会监听所有公共 IP。
  • 部署

    要从开发环境切换到成熟的生产环境,应用程序需要部署在真实的 Web 服务器上。根据您所拥有的,有不同的选项可用于部署 Flask Web 应用程序。
    对于小型应用程序,您可以考虑将其部署在以下任何托管平台上,所有这些平台都为小型应用程序提供免费计划。
    • Heroku
    • dotcloud
    • webfaction
    Flask 应用程序可以部署在这些云平台上。此外,可以在谷歌云平台上部署 Flask 应用。Localtunnel 服务允许您在 localhost 上共享您的应用程序,而不会弄乱 DNS 和防火墙设置。
    如果您倾向于使用专用 Web 服务器来代替上述共享平台,则可以探索以下选项。
  • mod_wsgi

    mod_wsgi是一个 Apache 模块,它提供了一个兼容 WSGI 的接口,用于在 Apache 服务器上托管基于 Python 的 Web 应用程序。
  • 安装 mod_wsgi

    要直接从 PyPi 安装官方版本,您可以运行 -
    
    pip install mod_wsgi
    
    要验证安装是否成功,请使用 start-server 命令运行 mod_wsgi-express 脚本 -
    
    mod_wsgi-express start-server
    
    这将在端口 8000 上启动 Apache/mod_wsgi。然后您可以通过将浏览器指向以下位置来验证安装是否有效 -
    
    http://localhost:8000/
    
  • 创建 .wsgi 文件

    应该有一个yourapplication.wsgi文件。该文件包含代码mod_wsgi,它在启动时执行以获取应用程序对象。对于大多数应用程序,以下文件就足够了 -
    
    from yourapplication import app as application
    
    确保yourapplication并且所有正在使用的库都在 python 加载路径上。
  • 配置 Apache

    你需要告诉mod_wsgi,您的应用程序的位置。
    
    <VirtualHost *>
       ServerName example.com
       WSGIScriptMooas / C:\yourdir\yourapp.wsgi
       <Directory C:\yourdir>
          Order deny,allow
          Allow from all
       </Directory>
    </VirtualHost>
    
  • 独立的 WSGI 容器

    有许多用 Python 编写的流行服务器,它们包含 WSGI 应用程序并服务于 HTTP。
    • Gunicorn
    • Tornado
    • Gevent
    • Twisted Web