【问题标题】:Nestjs with pm2, port still be used after killing the process with pm2 stop?Nestjs with pm2, port 在用 pm2 stop 杀死进程后仍然可以使用?
【发布时间】:2021-07-25 19:14:25
【问题描述】:

我使用pm2 作为进程管理器在我的 VPS(Ubuntu 20.04 DO)上部署了我的 Nest.js 应用程序。这是我更新应用程序时的一步一步。

$ pm2 stop 1
$ kill -9 $(sudo lsof -t -i:4040)
$ npm run build
$ pm2 start 1

请注意,在继续构建之前,我必须终止应用程序使用的端口,如何简化它并变成这样:

$ npm run build
$ pm2 reload 1

所以我可以优雅地部署我的 Nest.js 应用程序并实现至少 1% 的停机时间

【问题讨论】:

  • 我用过pm2。你收到码头工人的消息了吗?更容易并解决了很多问题。
  • 我也考虑过用docker,让我来探索一下
  • 试试killall node && npm run build && pm2 reload 1

标签: nestjs pm2


【解决方案1】:

停止命令将应用保留在应用列表中,而删除命令则不保留。

我想你想要类似的东西

start.sh

#!/bin/bash
source .env
ENVIRONMENT="$NODE_ENV"
npm run build || exit
pm2 delete "$ENVIRONMENT"
pm2 start "npm run start:prod" --name "$ENVIRONMENT" --log-date-format 'DD-MM HH:mm:ss.SSS'

如果您不使用不同的环境,则等效的脚本将是

#!/bin/bash
npm run build || exit
pm2 delete my_application
pm2 start "npm run start:prod" --name my_application --log-date-format 'DD-MM HH:mm:ss.SSS'

发出--log-date-format 非常好。但是,我将其包含在内是因为我怀疑它可能会在发现生产中的错误时有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-12-25
    • 2022-01-06
    • 2015-05-07
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 2019-09-17
    • 1970-01-01
    相关资源
    最近更新 更多