从 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 reload 或systemctl reload httpd)。
最后,从 Namecheap(一个注册商)之类的地方租用一个域名。在您的注册商处,按照您的 VPS 提供商文档的说明设置您的名称服务器。在您的 VPS 提供商处,创建一条 A 记录,将您的新域名映射到您的 VPS 的公共 IP 地址。
这与上传 Python 源代码差不多,就像上传静态网站一样。
与编程相比,这并不难。确保定期运行 Linux 发行版的安全更新。确保禁用 SSH 密码身份验证并使用 SSH 密钥登录。如果您正在运行一个高流量、高可见性的网站,其中包含敏感数据和/或与宕机相关的高成本,事情会变得更加复杂。对于一个爱好项目,我描述的应该足够了。
但是,如果负责整个服务器不是您的菜,您还可以在 Heroku、Amazon Elastic Beanstalk、Google App Engine 等上花更多的钱来提供您的 Flask 应用程序的存储库并让它运行他们管理的服务器。
这确实是 ServerFault 领域,而不是 StackOverflow。