我正在尝试配置PM2配置文件以在启动时启动两项服务。我想在8080上的端口80广告Node api服务器上启动React。当它运行时,API在80上运行,而8080没有任何运行。我的文件中缺少什么。我使用默认的create react设置来创建我的React结构,但不确定脚本应指向哪个文件。这是我创建的文件:
module.exports = {
apps : [
{
name: 'REACTJS',
script: 'client/src/index.js',
args: "port=80 sitename='React.js Website'",
instances: 0,
autorestart: true,
watch: true,
max_memory_restart: '1G',
env: {
NODE_ENV: 'development'
},
env_production: {
NODE_ENV: 'production'
}
},
{
name: 'NODEJS',
script: 'server/node.js',
args: "port=8080 sitename='Node.js API Server'",
// Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
instances: 0,
autorestart: true,
watch: true,
exec_mode: 'cluster'
}
]
};
答案 0 :(得分:0)
在您的配置中,您也可以通过PORT
,也可以通过args
或通过ENV
来传递[推荐],
为此,
在您的节点应用程序中,您正在执行以下操作:
app.listen(<PORT>)
。
确保您是从PORT
提取ENV
的,像这样:process.env.PORT
在这种情况下,您的配置应如下所示:
//process.js
module.exports={
apps : [
{
name: 'REACTJS',
script: 'client/src/index.js',
instances: 1,
autorestart: true,
watch: true,
max_memory_restart: '1G',
env: {
NODE_ENV: 'development',
port:80,
sitename:'React.js Website'
},
env_production: {
NODE_ENV: 'production',
port:80,
sitename:'React.js Website'
}
},
{
name: 'NODEJS',
script: 'server/node.js',
instances: 1,
autorestart: true,
watch: true,
exec_mode: 'cluster',
env: {
NODE_ENV: 'development',
PORT:8080,
//... all you ENV vars goes here for development mode
},
env_production: {
NODE_ENV: 'production',
PORT:8080,
//... all you ENV vars goes here for production mode
}
}
]
};
要运行,
DEV: pm2 start process.js
//默认情况下,它会考虑开发模式
产品: pm2 start process.js --env production
注意:请确保您在节点应用中从环境中获取PORT
,例如process.env.PORT
再次在您的React应用中,即client/src/index.js
,请检查您是否正在使用process.env.port
或processs.env.PORT
这样的端口号,并相应地更改pm2配置。