如何在网站上运行Flask应用程序

时间:2015-01-28 19:44:27

标签: python web flask localhost web-hosting

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

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

现在,我想把它放在互联网上进行远程访问。我知道只是复制+粘贴它到一些支持Python的托管上的目录是行不通的。我将非常感谢如何使这项工作。

我想,它应该保存在主机目录的某个地方然后我应该启动应用程序 - app.run(我不知道在这里键入什么作为主机和端口)。或者还有另一种方式吗?

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

3 个答案:

答案 0 :(得分:2)

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

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

但要注意,文档很好但是为您提供了很多选项,对于刚开始的人来说这可能是压倒性的。您必须做出选择,例如您是否使用Apache或使用nginx作为HTTP服务器。

答案 1 :(得分:2)

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

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

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

答案 2 :(得分:1)

从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 Web服务器进程以获取新配置。 (这类似于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。