我在Flask中很新。我在字典中处理一个简单的搜索应用程序,在应用程序运行时保存在内存中。为了测试这个应用程序,我使用Flask框架,当我运行* .py文件时,它在localhost上运行服务器。当我启动Flask脚本时,我可以在浏览器中看到我的网页并正确使用该应用程序。
if __name__ == '__main__':
setup()
app.run()
现在,我想把它放在互联网上进行远程访问。我知道只是复制+粘贴它到一些支持Python的托管上的目录是行不通的。我将非常感谢如何使这项工作。
我想,它应该保存在主机目录的某个地方然后我应该启动应用程序 - app.run(我不知道在这里键入什么作为主机和端口)。或者还有另一种方式吗?
我只想输入http://[some url where my app runs]
并查看存储在flask模板文件中的html。
答案 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 reload
或systemctl reload httpd
)。
最后,从Namecheap(注册商)这样的地方租用域名。在您的注册商处,按照VPS提供商的文档说明设置您的名称服务器。在您的VPS提供商处,创建一个A记录,将您的新域名映射到您的VPS的公共IP地址。
这就像上传你的Python源代码一样,就像静态网站一样。
与编程相比,这并不难。确保定期运行Linux发行版的安全更新。确保禁用SSH密码验证并使用SSH密钥登录。如果您运行的是高流量,高可见性的网站,其中包含敏感数据和/或与停机相关的高成本,事情会变得更加复杂。对于业余爱好项目,我所描述的应该足够了。
但是,如果负责整个服务器不是你的一杯茶,你也可以在Heroku,Amazon Elastic Beanstalk,Google App Engine等处投入更多的钱来提供你的Flask应用程序的存储库并让它运行他们管理的服务器。
这实际上是ServerFault领域而不是StackOverflow。