Как сделать так, чтобы express.js с помощью pm2 запускал только один экземпляр на порту (8080), а во втором - на другом порту (8081) - PullRequest
0 голосов
/ 03 января 2019

Я искал все, но не мог найти ответ как настроить pm2 с помощью Express.js вот что я имею, основываясь на ответах других и документации pm2.

это находится в главном файле сервера (index.js):

const port = process.env.NODE_PORT;

Я получаю неопределенное значение, если не использую || 8080

const port = process.env.NODE_PORT || 8080;

Пока мне нужно, чтобы он работал только в dev env ..

но, похоже, он не получает то, что я настроил в файле ecosystem.config.js и на моем ecosystem.config.js:

module.exports = {
  apps: [{
      name: 'API',
      script: 'index.js',

  // Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
  args: 'one two',
  instances: 1,
  exec_mode: "fork_mode",
  autorestart: true,
  watch: false,
  max_memory_restart: '1G',
  env: {
    NODE_PORT = 8080 `pm2 start app.js -f`,
    NODE_PORT = 8081 `pm2 start app.js -f`,
    NODE_ENV: 'development'
  },
  env_production: {
    NODE_ENV: 'production'
  }
},
{
  name: 'API',
  script: 'index.js',

  // Options reference: https://pm2.io/doc/en/runtime/reference/ecosystem-file/
  args: 'one two',
  instances: 1,
  exec_mode: "fork_mode",
  autorestart: true,
  watch: false,
  max_memory_restart: '1G',
  env: {
    PORT: 8081,
    NODE_ENV: 'development'
  },
  env_production: {
    NODE_ENV: 'production'
  }
}
  ],

  deploy: {
production: {
  user: 'node',
  host: '212.83.163.1',
  ref: 'origin/master',
  repo: 'git@github.com:repo.git',
  path: '/var/www/production',
  'post-deploy': 'npm install && pm2 reload ecosystem.config.js --env 
production'
    }
  }
  };

1 Ответ

0 голосов
/ 03 января 2019

Я использую переменную окружения process.env.NODE_APP_INSTANCE, чтобы сделать это. (https://pm2.io/doc/en/runtime/guide/load-balancing/#cluster-environment-variable)

Я устанавливаю свой PORT перед запуском моего сервера, а затем я устанавливаю порт сервера на основе переменной окружения PORT и NODE_APP_INSTANCE, что-то вроде этого:

const nodeInstance = parseInt(process.env.NODE_APP_INSTANCE || 0, 10);
const port = process.env.PORT + nodeInstance;
...