node.js - 找不到 CodeDeploy PM2 命令

标签 node.js linux bash npm aws-code-deploy

我正在尝试使用 AWS CodeDeploy 来部署我的应用程序。一切似乎都工作正常,但我收到以下错误。

[stderr]/opt/codedeploy-agent/deployment-root/f1ea67bd-97bo-08q1-b3g4-7b14becf91bf/d-WJL0QLF9H/deployment-archive/scripts/start_server.sh: line 3: pm2: command not found

下面是我的 start_server.sh 文件。

#!/bin/bash
pm2 start ~/server.js -i 0 --name "admin" &

我已经尝试使用 SSH 以用户 ubuntu 的身份连接到我的服务器并运行该 bash 文件,它完美无误地工作。所以我知道 PM2 已安装并在该用户上正常工作。

下面也是我的 appspec.yml 文件。

version: 0.0
os: linux
files:
  - source: /
    destination: /home/ubuntu
hooks:
  ApplicationStart:
    - location: scripts/start_server.sh
      timeout: 300
      runas: ubuntu
  ApplicationStop:
    - location: scripts/stop_server.sh
      timeout: 300
      runas: ubuntu

也不确定这是否有帮助,但这是我的 stop_server.sh 文件。

#!/bin/bash
npm install pm2 -g
pm2 stop admin || true
pm2 delete admin || true

有什么想法吗?

最佳答案

执行以下步骤:

  1. 哪个 Node
  2. sudo ln -s/home/ubuntu/.nvm/versions/node/v12.13.1/bin/node

(上述步骤的输出)/usr/bin/node

  1. 哪个pm2
  2. sudo ln -s/home/ubuntu/.nvm/versions/node/v12.13.1/bin/pm2

(上述步骤的输出)/usr/bin/pm2

start_server.shstop_server.sh 中使用它如下(以 ubuntu 运行 start.sh):

sudo /usr/bin/pm2 status

希望对您有所帮助!!

关于node.js - 找不到 CodeDeploy PM2 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39520571/

相关文章:

linux - 在 linux 中替换文件中的单引号和双引号

bash - 如何使用 nmcli 按类型删除连接?

node.js - stripe.customers.retrieve 导致问题,因为它现在正在返回 Stripe.Customer | Stripe .DeletedCustomer

linux - 在 Linux 中使用 CLI 更改文件夹中所有文件的扩展名

linux - 是否可以在 shell 脚本中的命令上设置定时器任务?

linux - EOF 内的 bash 脚本无法将参数传递给函数

bash - 在bash循环中同步访问2个变量

javascript - 如何检查谁邀请了谁 Discord.js

javascript - 监控 Node.js 进程中的最大内存消耗

javascript - 使用 Node js 运行 Angular 应用程序