node js 应用部署,一定要停机,才能 npm install 么?

2023-03-30 13:16:29 +08:00
 aaronhua
我是 Python 开发,不是很懂前端的生态。同事部署 nodejs 应用,他需要停机半个小时更新依赖。说是不停机,会影响全局的 npm 搜索依赖。在我看来这个同事技术很不错的,很多技术问题跟他沟通都很流畅。但是,结果就是服务中断,等依赖更新完。小项目就部门内几十个人用,没有用 docker ,Jenkins ,基本上怎么简单怎么来。求证下是这样的么?还是说忽悠我谢谢。
4238 次点击
所在节点    Node.js
39 条回复
amery2010
2023-03-30 13:27:55 +08:00
pm2 了解一下,能满足你的需求
https://pm2.keymetrics.io/

用 node 项目不清楚 pm2 看来还是没什么服务端的开发经验
aaronhua
2023-03-30 13:31:06 +08:00
@amery2010 服务启动用的就是 pm2
CHTuring
2023-03-30 13:36:58 +08:00
如果是后端 node.js 的话,确实是要安装依赖。

但是常规操作就是更新依赖,打包,运行。

半个小时应该不用吧
hanai
2023-03-30 13:38:11 +08:00
应该用 docker 的,并不会复杂很多。
cosmtrek
2023-03-30 13:40:52 +08:00
用 docker 封装一下省心
aaronhua
2023-03-30 13:42:32 +08:00
每次都是先新建目录,上传打包的代码,然后 pm2 stop 应用,再 npm install ,最后再新建 pm2 进程。就不能先 npm install ,然后再新建 pm2 进程,这样就不会中断服务这么久。用 package.json 锁定了依赖的大版本,小版本,让 npm 自动更新。说是不停机,小版本更新不了,或者会报错。
amery2010
2023-03-30 13:43:09 +08:00
pm2 可以可以配置自动部署的,配置一下 deploy 参数,可以做到不停机更新
aaronhua
2023-03-30 13:46:11 +08:00
@CHTuring 其实我不明白的一点是,一定要停了服务才能更新依赖么?不能先更新依赖,打包,停服务,再运行么?
CHTuring
2023-03-30 13:47:17 +08:00
@aaronhua 如果是用上 pm2 了,那不需要这么复杂。
old9
2023-03-30 13:47:33 +08:00
一般没有动态加载的模块,不需要停服务
aaronhua
2023-03-30 13:49:42 +08:00
我也用 pm2 ,看来我跟他还没有完全搞懂 pm2😂
aaronhua
2023-03-30 13:50:23 +08:00
@amery2010 谢谢,我去了解一下
estk
2023-03-30 13:51:55 +08:00
可以检测 github 新版本,服务器自动部署呀。。
weijancc
2023-03-30 13:55:32 +08:00
这个感觉是运维有点问题吧, node 程序安装依赖是可以停机的
raighne
2023-03-30 14:00:13 +08:00
```shell
npm I
pm2 kill xx && pm2 start xxx
```
不行么
makelove
2023-03-30 14:03:15 +08:00
从来都是直接 npm install 再 restart node 进程,还没碰到过坑

另外半小时也是离谱,这 npm install 更新下不就一分钟的事?
yhxx
2023-03-30 14:03:24 +08:00
可以停的
或者再简单一点,docker 打个新镜像,打完之后服务指到这个新镜像上,再把旧的销毁
wu67
2023-03-30 14:06:54 +08:00
半小时有点离谱. 我的都是 3 到 6 分钟.
kongkxyang
2023-03-30 14:07:03 +08:00
soft link + 版本目录 不能解决问题?
mozhizhu
2023-03-30 14:11:21 +08:00
还是建议 docker ;当前版本崩了,大 BUG 了,还能后退;直接运行的服务,除非是长期不变的项目;

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

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

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

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

© 2021 V2EX