【发布时间】:2020-12-03 06:36:25
【问题描述】:
所以我在这里有很多问题,但首先让我提供一些背景信息。
我正在使用 Node.js 开发一个 Discord 机器人,并使用 PM2 进行流程管理。这是我正在运行的 VPS 的主目录的树形结构:
root@discord-bot-vps:~# tree . -L 2
.
├── bigbotupdate.sh
├── botupdate.sh
├── ecosystem.config.js
└── fcfs-bot
├── db
├── index.js
├── node_modules
├── package.json
├── package-lock.json
├── README.md
└── src
我最初使用 fcfs-bot 目录中的一个生态系统文件启动机器人,该目录包含一个 git 存储库。 ecosystem.config.js 文件如下所示:
module.exports = {
apps : [{
name: 'FCFS-BOT',
script: 'index.js',
instances: 1,
autorestart: true,
watch: false,
shutdown_with_message: true,
kill_timeout : 3000,
time: true,
env: {
NODE_ENV: 'production',
FCFS_BOT_TOKEN: 'REDACTED'
},
}]
};
我已经将ecosystem.config.js 文件移动到主目录中,但是当使用主目录中的pm2 start ecosystem.config.js 启动进程时,它仍然有效。这对我来说是违反直觉的,因为我认为脚本对index.js 的引用将不再起作用,因为它现在位于相对于ecosystem.config.js 的子目录中。但是,一切正常。
我尝试测试其他一些东西,包括重命名ecosystem.config.js,然后以pm2 start FCFS-BOT 开始该过程。这也有效,这让我感到困惑,因为我认为需要一个生态系统文件来为流程提供环境变量,如下所述:https://pm2.keymetrics.io/docs/usage/environment/。
- PM2 如何存储这些数据,在哪里可以找到?
- 我是否应该继续使用
pm2 start ecosystem.config.js启动我的应用程序——也就是说,是否存在环境变量被“遗忘”的风险? - 如果没有,有没有比创建
ecosystem.config.js,运行一次,然后删除ecosystem.config.js更好的方法来配置PM2应用程序的环境变量?
【问题讨论】: