我的ecosystem.config.js看起来像这样:
module.exports = {
apps: [{
name: 'production',
script: '/home/username/sites/Website/source/server.js',
env: { NODE_ENV: 'PRODUCTION' },
args: '--run-server'
}, {
name: 'staging',
script: '/home/username/sites/WebsiteStaging/source/server.js',
env: { NODE_ENV: 'STAGING' },
args: '--run-server'
}],
deploy: {
production: {
user: 'username',
host: ['XXX.XXX.XX.XXX'],
ref: 'origin/production',
repo: 'git@github.com:ghuser/Website.git',
path: '/home/username/sites/Website',
'post-deploy': 'npm install && pm2 reload ecosystem.config.js --only production',
env: { NODE_ENV: 'PRODUCTION' }
},
staging: {
user: 'username',
host: ['XXX.XXX.XX.XXX'],
ref: 'origin/staging',
repo: 'git@github.com:ghuser/Website.git',
path: '/home/username/sites/WebsiteStaging',
'post-deploy': 'npm install && pm2 reload ecosystem.config.js --only staging',
env: { NODE_ENV: 'STAGING' }
}
}
};
部署应用程序时,我希望看到两个过程-一个称为“生产”和一个称为“登台”。它们从相同的存储库运行代码,但是从不同的分支运行代码。
我确实看到了两个过程,但是,当我运行pm2 desc production
时,我可以看到脚本路径为/home/username/sites/WebsiteStaging/source/server.js
。根据配置文件,此路径应为/home/username/sites/Website/source/server.js
。
我尝试将脚本设置为./server.js
并使用cwd
参数,但是结果是相同的。
我正在使用的部署命令是pm2 deploy production
和pm2 deploy staging
,并且我已经验证了服务器上同时存在Website
和WebsiteStaging
文件夹。
我这里缺少什么吗?为什么会默认使用这样的暂存文件夹?
答案 0 :(得分:0)
对我有用的是删除pm2应用程序并启动它。
pm2 delete production
pm2 start production
我运行pm2 desc production
时,发现脚本路径不正确,除了上面的内容外,我似乎没有做任何纠正该路径的事情。
答案 1 :(得分:0)
我遇到了同样的问题。
似乎是因为旧的 dump.pm2
在对 ecosystem.config.js
进行更改后没有更新。
更新启动脚本解决了问题
pm2 save
pm2 unstartup
pm2 startup