Newer
Older
const libs = `${process.cwd()}/libs`;
const config = require(`${libs}/config`);
const log = require(`${libs}/log`)(module);
const app = require(`${libs}/app`);
João Victor Tozatti Risso
committed
const compatVersion = require(`${libs}/middlewares/checkVersion`);
João Victor Tozatti Risso
committed
// Check if Node version is compatible
if (!compatVersion()) {
process.exit(1);
}
if(cluster.isMaster) {
log.info(`Master ${process.pid} is running`);
const numCPUs = (process.env.NODE_ENV != 'development') ? require('os').cpus().length : 1;
log.info(`Master will create ${numCPUs} workers`);
for(let i=0; i < numCPUs; ++i) {
cluster.fork();
}
// Caso uma instâcia morra
cluster.on('exit', (worker, code, signal) => {
log.info(`Worker ${worker.process.pid} died`);
// Revive a instância
cluster.fork();
});
} else {
// Set default port: first environment variable PORT, then configuration and last 3000
app.set('port', process.env.PORT || config.port || 3000);
process.env.NODE_ENV = process.env.NODE_ENV || 'development';
// Set default ip: first environment variable IOP, then configuration and last '127.0.0.1'
app.set('ip', process.env.IP || config.ip || '127.0.0.1');
const server = app.listen(app.get('port'), () => {
log.info(`Express server listening on port ${server.address().port}`);
});
log.info(`Worker ${cluster.worker.id} is running (${process.pid})`);
// For testing
module.exports = server;
}