SIGN IN SIGN UP
Unitech / pm2 UNCLAIMED

Node.js Production Process Manager with a built-in Load Balancer.

43015 0 12 JavaScript
2016-06-05 12:39:04 +02:00
/**
2026-02-08 15:04:58 +01:00
* Copyright 2013-present the PM2 project authors. All rights reserved.
2016-06-05 12:39:04 +02:00
* Use of this source code is governed by a license that
* can be found in the LICENSE file.
*/
2016-06-08 19:21:37 +02:00
var debug = require('debug')('pm2:paths');
var p = require('path');
var fs = require('fs')
2016-06-05 12:39:04 +02:00
function getDefaultPM2Home() {
var PM2_ROOT_PATH;
2017-12-21 15:05:12 +01:00
if (process.env.PM2_HOME)
2016-06-05 12:39:04 +02:00
PM2_ROOT_PATH = process.env.PM2_HOME;
else if (process.env.HOME && !process.env.HOMEPATH)
PM2_ROOT_PATH = p.resolve(process.env.HOME, '.pm2');
else if (process.env.HOME || process.env.HOMEPATH)
PM2_ROOT_PATH = p.resolve(process.env.HOMEDRIVE, process.env.HOME || process.env.HOMEPATH, '.pm2');
else {
console.error('[PM2][Initialization] Environment variable HOME (Linux) or HOMEPATH (Windows) are not set!');
console.error('[PM2][Initialization] Defaulting to /etc/.pm2');
PM2_ROOT_PATH = p.resolve('/etc', '.pm2');
}
2016-06-08 19:21:37 +02:00
debug('pm2 home resolved to %s', PM2_ROOT_PATH, process.env.HOME);
2016-06-05 12:39:04 +02:00
return PM2_ROOT_PATH;
}
module.exports = function(PM2_HOME) {
2019-04-27 13:16:03 +02:00
var has_node_embedded = false
if (fs.existsSync(p.resolve(__dirname, './node')) === true) {
has_node_embedded = true
}
if (!PM2_HOME) {
2016-06-05 12:39:04 +02:00
PM2_HOME = getDefaultPM2Home()
2019-04-27 13:16:03 +02:00
}
2016-06-05 12:39:04 +02:00
var pm2_file_stucture = {
PM2_HOME : PM2_HOME,
PM2_ROOT_PATH : PM2_HOME,
2017-02-10 17:05:46 +01:00
PM2_CONF_FILE : p.resolve(PM2_HOME, 'conf.js'),
PM2_MODULE_CONF_FILE : p.resolve(PM2_HOME, 'module_conf.json'),
2016-06-05 12:39:04 +02:00
2017-02-10 17:05:46 +01:00
PM2_LOG_FILE_PATH : p.resolve(PM2_HOME, 'pm2.log'),
PM2_PID_FILE_PATH : p.resolve(PM2_HOME, 'pm2.pid'),
2016-06-05 12:39:04 +02:00
2017-06-27 23:53:52 +02:00
PM2_RELOAD_LOCKFILE : p.resolve(PM2_HOME, 'reload.lock'),
2017-02-10 17:05:46 +01:00
DEFAULT_PID_PATH : p.resolve(PM2_HOME, 'pids'),
DEFAULT_LOG_PATH : p.resolve(PM2_HOME, 'logs'),
DEFAULT_MODULE_PATH : p.resolve(PM2_HOME, 'modules'),
PM2_IO_ACCESS_TOKEN : p.resolve(PM2_HOME, 'pm2-io-token'),
2017-02-10 17:05:46 +01:00
DUMP_FILE_PATH : p.resolve(PM2_HOME, 'dump.pm2'),
2017-07-05 23:31:30 +03:00
DUMP_BACKUP_FILE_PATH : p.resolve(PM2_HOME, 'dump.pm2.bak'),
2016-06-05 12:39:04 +02:00
2017-02-10 17:05:46 +01:00
DAEMON_RPC_PORT : p.resolve(PM2_HOME, 'rpc.sock'),
DAEMON_PUB_PORT : p.resolve(PM2_HOME, 'pub.sock'),
INTERACTOR_RPC_PORT : p.resolve(PM2_HOME, 'interactor.sock'),
2016-06-05 12:39:04 +02:00
2017-02-10 17:05:46 +01:00
INTERACTOR_LOG_FILE_PATH : p.resolve(PM2_HOME, 'agent.log'),
INTERACTOR_PID_PATH : p.resolve(PM2_HOME, 'agent.pid'),
INTERACTION_CONF : p.resolve(PM2_HOME, 'agent.json5'),
2016-06-05 12:39:04 +02:00
2019-04-27 13:16:03 +02:00
HAS_NODE_EMBEDDED : has_node_embedded,
2019-05-21 05:22:59 +02:00
BUILTIN_NODE_PATH : has_node_embedded === true ? p.resolve(__dirname, './node/bin/node') : null,
BUILTIN_NPM_PATH : has_node_embedded === true ? p.resolve(__dirname, './node/bin/npm') : null,
2019-04-27 13:16:03 +02:00
};
// allow overide of file paths via environnement
var paths = Object.keys(pm2_file_stucture);
paths.forEach(function (key) {
var envKey = key.indexOf('PM2_') > -1 ? key : 'PM2_' + key;
if (process.env[envKey] && key !== 'PM2_HOME' && key !== 'PM2_ROOT_PATH') {
pm2_file_stucture[key] = process.env[envKey];
}
});
2016-06-05 12:39:04 +02:00
if (process.platform === 'win32' ||
process.platform === 'win64') {
//@todo instead of static unique rpc/pub file custom with PM2_HOME or UID
pm2_file_stucture.DAEMON_RPC_PORT = '\\\\.\\pipe\\rpc.sock';
pm2_file_stucture.DAEMON_PUB_PORT = '\\\\.\\pipe\\pub.sock';
pm2_file_stucture.INTERACTOR_RPC_PORT = '\\\\.\\pipe\\interactor.sock';
}
2016-06-05 12:39:04 +02:00
return pm2_file_stucture;
};