我想在 digitalocean 上设置一个 Flask 网站,其中有一些链接可以启动一些由 tornando/twisted 支持的游戏或其他 Flask 网站。网站架构如下图所示:
我看过的大多数教程示例 1、示例 2、示例 3和一些 stackoverflow 答案都以一种或另一种方式处理这个问题。我与他们的问题是:
(a) 示例 1 虽然简单得可笑,但并不透明。正确理解 ngnix、gunicorn 并不能帮助我设置我的应用程序,如上图所示。
(b) 示例 2 是我尝试使用的,但是当我转到我的站点 url 时,它默认为 nginx 网页。我会发布完整问题的链接。 链接
(c) 示例 3,不使用 Docker。
我的问题是这样的:
(a) 我提出的架构与 Docker、Flask、Nginx 和 uwsgi/gunicorn 的组合是否可行?有没有更好的办法?
(b) 我应该使用 Docker 吗?我想使用 Docker 来学习如何使用 docker-compose 并最终使用 Docker Swarm,但如果太麻烦,我愿意完全放弃这个想法。
感谢您的回复。
nginx是您的反向代理:它将调用从 url 定向到正确的服务器。您需要 nginx 才能接收来自多个 URL / 域名对同一 IP 地址的请求:例如,如果 site1.example.com、site2.example.com 和 site3.example.com 都有指向 IP 的 DNS 记录111.222.333.444,nginx 可以理解 site1.example.com 是你的 server1,site2 是 server2 等等......(即使所有这些“服务器”都托管在同一个虚拟机上。
uwsgi/gunicorn是 Flask 运行的服务器引擎。
Flask是帮助您构建站点的框架,并在 uwsgi/gunicorn 上运行。
Docker可帮助您将应用程序容器化(即,无论您在何处部署,都可以轻松部署、可复制)
因此,在您的情况下,您应该为每个应用程序使用一个 Docker 容器,例如,它们都可以在端口 8000 上运行 uwsgi/gunicorn,并为您的应用程序提供服务。使用 docker,在部署时,您可以使用不同的端口公开这些容器(例如 app1->8000、app2->8001、app3->8002)
然后 nginx 应该暴露给外部(即 HTTPS/SSL 的端口为 443,HTTP 为 80)并将每个域/url 的请求重定向到正确的服务器端口。
查找 nginx 多个域以查找用于此目的的示例配置文件(例如https://www.digitalocean.com/community/tutorials/how-to-set-up-nginx-server-blocks-virtual-hosts-on-ubuntu -14-04-lts )
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句