【问题标题】:How to run Flask app on website如何在网站上运行 Flask 应用程序
【发布时间】:2015-03-27 20:52:39
【问题描述】:

我是 Flask 的新手。我在字典中开发一个简单的搜索应用程序,该应用程序在运行时保存在内存中。为了测试这个应用程序,我使用 Flask 框架,它在我运行 *.py 文件时在本地主机上运行服务器。当我启动 Flask 脚本时,我可以在浏览器中看到我的网页并正确使用该应用程序。

if __name__ == '__main__':
    setup()
    app.run()

现在,我想把它放到互联网上进行远程访问。我知道仅将其复制+粘贴到某些支持 Python 的主机上的目录是行不通的。我将不胜感激任何建议如何使这项工作。

我想,它应该保存在主机目录的某个位置,然后我应该启动应用程序 - app.run(我不知道在此处输入什么作为主机和端口)。还是有别的办法?

我只想输入 http://[some url where my app runs] 并查看存储在烧瓶模板文件中的 html。

【问题讨论】:

    标签: python flask web-hosting


    【解决方案1】:

    https://www.pythonanywhere.com/ 站点为 Flask 应用程序提供了非常简单的设置,并且不需要您进行大量配置。他们有一个免费包,可让您运行应用程序以进行自己的测试。

    如果您正在寻找更多生产级别的托管服务,您可能想看看Flask documentation,它会为您提供一些非常好的信息,说明您需要做什么才能让应用程序运行。

    但请注意,文档很好,但为您提供了很多选择,这对于刚开始的人来说可能会不知所措。您必须做出选择,例如是使用 Apache 还是使用 nginx 作为 HTTP 服务器。

    【讨论】:

    【解决方案2】:

    PythonAnywhere 或 Heroku 都是托管 Flask 应用程序的绝佳选择。 PythonAnywhere 允许用户在几秒钟内运行他们的 Flask 应用程序。

    如果您想立即托管您的 Flask 应用程序,我完全建议您查看 PythonAnywhere。此外,基本的 PythonAnywhere 计划是免费的!尽管 PythonAnywhere 快速且直观,但如果您以前从未使用过它,开始使用它可能会有些混乱和令人生畏。因此,我编写了一个快速教程,教您如何使用 PythonAnywhere 部署您的第一个 Flask 应用程序。在这里查看:

    免费 PythonAnywhere 教程链接:https://websanctuary.github.io/how-to-deploy-a-flask-app.html

    【讨论】:

      【解决方案3】:

      从 Linode、DigitalOcean、Amazon Lightsail 等地方租用虚拟专用服务器。

      安装 Apache 2 Web 服务器,并按照步骤通过mod_wsgi 部署您的 Flask 应用程序:

      在您的源代码中添加一个名为yourappnamehere.wsgi 的文件,其中包含以下内容:

      import sys
      sys.path.insert(0, '/path/to/the/application')
      from yourapplication import app as application` 
      

      (显然要改名字)。

      将您的源代码目录复制到您指定的服务器上的路径。

      创建一个 Apache 配置文件。在 Debain/Ubuntu 上,这些进入 /etc/apache2/sites-available/nameofsite.conf。它应该是这样的:

      <VirtualHost *:80>
      ServerName example.com
      
      WSGIDaemonProcess yourapplication user=user1 group=group1 threads=5
      WSGIScriptAlias / /var/www/yourapplication/yourapplication.wsgi
      
      <Directory /var/www/yourapplication>
          WSGIProcessGroup yourapplication
          WSGIApplicationGroup %{GLOBAL}
          Order deny,allow
          Allow from all
      </Directory>
      

      默认情况下,您的代码将以 Apache 用户身份执行。如果要覆盖它,可选择将用户和组设置为非 root 用户。路径应指向服务器上源代码的副本。 ServerName 应该是您希望 Apache 响应的 URL 中出现的主机名。

      运行a2ensite nameofconffile 以激活此配置。重新加载 Apache 网络服务器进程以获取新配置。 (这类似于service httpd reloadsystemctl reload httpd)。

      最后,从 Namecheap(一个注册商)之类的地方租用一个域名。在您的注册商处,按照您的 VPS 提供商文档的说明设置您的名称服务器。在您的 VPS 提供商处,创建一条 A 记录,将您的新域名映射到您的 VPS 的公共 IP 地址。

      这与上传 Python 源代码差不多,就像上传静态网站一样。

      与编程相比,这并不难。确保定期运行 Linux 发行版的安全更新。确保禁用 SSH 密码身份验证并使用 SSH 密钥登录。如果您正在运行一个高流量、高可见性的网站,其中包含敏感数据和/或与宕机相关的高成本,事情会变得更加复杂。对于一个爱好项目,我描述的应该足够了。

      但是,如果负责整个服务器不是您的菜,您还可以在 Heroku、Amazon Elastic Beanstalk、Google App Engine 等上花更多的钱来提供您的 Flask 应用程序的存储库并让它运行他们管理的服务器。

      这确实是 ServerFault 领域,而不是 StackOverflow。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-01-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-23
        相关资源
        最近更新 更多