Linux SRV-16 6.18.44-paas #1 SMP PREEMPT_DYNAMIC Thu Aug 13 10:08:12 UTC 2026 x86_64
/
proc
/
212
/
root
/
srv
/
admin
/
scripts
/
nodejs
/
//proc/212/root/srv/admin/scripts/nodejs/node-bootstrap.js
var fs = require('fs'); var path = require('path'); // Returns true if this script // is required via nodejs // using require('./node-bootstrap.js') // Returns false if this script // is run from exec $(node node-bootstrap.js) var isTestEnv = !(require.main === module); var root = path.join(process.env.CUSTOMER_DIR || '/srv/data', '/web/vhosts/default'); var filename = 'server.js'; var command = ['node', filename].join(' '); var NODEJS_UPGRADE_DATE = 'December 1st, 2015'; var instanceMaxMemory = process.env.MAX_MEM || 256; var envVariables = { 'PORT': 8080, 'NODE_ENV': 'production' }; var packagejson = null; /* * Suggested number of max child processes * the user should run if using a process-manager like PM2 * * Indexed on the instance type: * * 0 => S * 1 => M * 2 => L * 3 => XL * 4 => XXL */ var indexedMaxConcurrency = [2, 4, 8, 16, 32]; /* * Indexed on the instance type: * * 0 => S * 1 => M * 2 => L * 3 => XL * 4 => XXL */ var indexedMemClass = [1, 2, 4, 16, 64]; // Currently, we suggest a child process // memory should not exceed MAX_MEMORY / NB_PROCESSES function computeMaxMemory(maxMemory, maxConcurrency) { return maxMemory / maxConcurrency; } function getMaxConcurrency(instanceTypeIndex) { return indexedMaxConcurrency[instanceTypeIndex]; } function getInstanceTypeIndex(maxMemory) { var instanceTypeIndex = indexedMemClass.indexOf(maxMemory / 256); return instanceTypeIndex >= 0 ? instanceTypeIndex : 0; } function objectToString(object) { var arr = []; for(var property in object) { arr.push(property + '=' + object[property]); } return arr.join(' '); } // command to be exec'd function stdout(command) { if (isTestEnv) { return command; } else { process.stdout.write(command+''); } } // warnings / errors function stderr(message) { isTestEnv || process.stderr.write(message + '\n'); } function getPackage(root) { try { packagejson = fs.readFileSync(path.join(root, 'package.json')); } catch (e) { packagejson = null; stderr('No package.json !'); } return packagejson; } function parsePackage(packagejson) { try { packagejson = JSON.parse(packagejson); } catch (e) { packagejson = null; stderr('Couldn\'t read the content of your package.json !'); } return packagejson; } function serverJsExists(root) { if (isTestEnv) return true; stderr('Checking for a `server.js` file.'); var file = false; try { file = fs.readFileSync(path.join(root, 'server.js')); } catch (e) {} return !!file; } function init() { stderr('Checking for a `package.json` file.'); packagejson = getPackage(root); if (packagejson) { stderr('Found your `package.json` file.'); packagejson = parsePackage(packagejson); } return packagejson; } function run(packagejson) { if (packagejson) { stderr('Checking your package.json for a `start` script.'); if (packagejson.scripts && packagejson.scripts.start) { stderr('Found a start script in your `package.json` file.'); command = packagejson.scripts.start; return stdout([objectToString(envVariables), command].join(' ')); } stderr('No `start` script found in your `package.json`.'); stderr('Checking your `package.json` for a `main` entry.'); if (packagejson.main) { stderr('Found a `main` entry your `package.json` file.'); filename = packagejson.main; command = ['node', filename].join(' '); return stdout([objectToString(envVariables), command].join(' ')); } } if (!serverJsExists(root)) { stderr([ 'We cannot start your application.', [ 'You must provide one of the following entry points: ', '- package.json npm start script: https://docs.npmjs.com/files/package.json#default-values', '- package.json main entry: https://docs.npmjs.com/files/package.json#main', '- server.js file' ].join('\n'), 'For more information, please check out our documentation: https://docs.gandi.net/en/simple_hosting/instance_languages/nodejs.html' ].join('\n')); return; } else { stderr("Warning: Since "+NODEJS_UPGRADE_DATE+", we're using `npm start script` in priority to start your application."); } stderr('Note: You should either have a `start` script or a `main` entry in your `package.json`.'); stderr([ '---------------------------', 'https://docs.npmjs.com/files/package.json', 'https://docs.gandi.net/en/simple_hosting/instance_languages/nodejs.html', '---------------------------' ].join('\n')); return stdout([objectToString(envVariables), command].join(' ')); } if (!isTestEnv) { var maxConcurrency = envVariables['WEB_CONCURRENCY'] = getMaxConcurrency( getInstanceTypeIndex(instanceMaxMemory) ); var maxMemory = envVariables['WEB_MEMORY'] = computeMaxMemory( instanceMaxMemory, maxConcurrency ); run(init()); } module.exports = { isTestEnv: isTestEnv, root: root, NODEJS_UPGRADE_DATE: NODEJS_UPGRADE_DATE, instanceMaxMemory: instanceMaxMemory, indexedMaxConcurrency: indexedMaxConcurrency, indexedMemClass: indexedMemClass, filename: filename, command: command, envVariables: envVariables, packagejson: packagejson, stderr: stderr, stdout: stdout, getMaxConcurrency: getMaxConcurrency, computeMaxMemory: computeMaxMemory, getInstanceTypeIndex: getInstanceTypeIndex, objectToString: objectToString, getPackage: getPackage, parsePackage: parsePackage, serverJsExists: serverJsExists, run: run };