请教一个问题, flask 项目是怎么部署的呢?尤其是在部署在多太服务器的情况下。

2020-02-05 09:53:21 +08:00
 la2la

目前这个项目部署在单台服务器上,使用 nginx+nohup+gunicon+flask 部署,部署的流程就是写个脚本,把代码从 git 上拉下来,然后用 nohup 把代码跑起来。

现在碰到的问题是需要把相同的代码部署在多个服务器上,每个服务器部署的代码是一样的,如果还是使用这个方式的话,每次发布版本或者测试的时候,需要到每个服务器上跑一下,太麻烦了

有没有其他的方式部署,或者我目前的这种部署方式有什么问题?

3630 次点击
所在节点    程序员
30 条回复
la2la
2020-02-05 13:56:06 +08:00
@ipwx o(╯□╰)o
whusnoopy
2020-02-05 14:20:22 +08:00
同 #20,楼主目前的状态,改动最小的应该是用 fabric,做一个批量操作而已,fabric 可以控制并发数和顺序流程,也是 Python 生态下的

其他的建议也都很好,但是不一定能立马用上

我司的顺序大概是
1. 人肉 nginx + gunicorn
2. 脚本 fabric + supervisor
3. Jenkins 合并上述操作,鼠标点上线
4. docker + k8s,上线还是 Jenkins 鼠标点
tt67wq
2020-02-05 14:31:35 +08:00
都 2020 了还没上容器化吗?
opengps
2020-02-05 14:34:30 +08:00
集群部署显然不能用人肉更新,或者模板克隆更新机器,或者系统自带更新逻辑
lance86
2020-02-05 18:04:08 +08:00
建议一步步来,像楼上一样慢慢衍化,一步到位容易 hold 不住
gwy15
2020-02-06 12:50:10 +08:00
fabric 是最无痛的:
import fabric
with fabric.Connection(alias) as c:
c.put()
c.run()

就可以了,写个循环。

我个人会额外加上 pex 打包+supervisord/systemd 监控自动拉起。
yanyueio
2020-02-06 16:25:52 +08:00
@whusnoopy 咨询一下大佬,如果公司比较小(10 人以内),并且用户数量也是只有万人级别,应该选哪种方式呢?(这边没有单独的 scm,也抽不出单独的人手专门搞这个,是否可以上 jenkins? 劳烦大佬辛苦指导一下。
whusnoopy
2020-02-06 20:01:12 +08:00
@yanyueio 你们如果每个人都有线上机器操作权限,每个人都需要上线,那么直接裸上 fabric 应该是最简单的。如果期望线上机器相对隔离一点,可以用 Jenkins 加 fabric,这样把可操作范围限制在 Jenkins 配置好的范围里
qile1
2020-02-07 11:52:17 +08:00
我是用的 Windows 系统服务器,用 docker 虚拟服务器好像不好安装,我是直接 run 文件覆盖到线上文件夹,bat 以 dbug 方式启动,在寻找好的解决办法
@tt67wq
gladuo
2020-02-07 14:41:49 +08:00
docker-compose 一票

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/642218

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX