https://github.com/vanng822/pstarter
Start and manage (http) worker process for nodejs
https://github.com/vanng822/pstarter
Last synced: about 2 months ago
JSON representation
Start and manage (http) worker process for nodejs
- Host: GitHub
- URL: https://github.com/vanng822/pstarter
- Owner: vanng822
- License: mit
- Created: 2012-07-08T20:46:01.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2017-07-19T09:19:28.000Z (almost 8 years ago)
- Last Synced: 2025-02-18T21:18:48.176Z (2 months ago)
- Language: JavaScript
- Homepage:
- Size: 36.1 KB
- Stars: 2
- Watchers: 4
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
## Usage example at http://sibox.isgoodness.com
var pstarter = require('pstarter');
pstarter.startMaster(__dirname + '/config/configs.js', {}, function() {
var config = require('./config/configs.js');
pstarter.statServer(config.http.statPort, config.http.statHost);
if (process.env['NODE_ENV'] && process.env['NODE_ENV'] == 'development') {
pstarter.startWatch(__dirname, [__dirname +'/node_modules'], ['.js', '.json', '.html', '.css']);
}
}).startWorker(function() {
var config = require('./config/configs.js');
var express = require('express');
var bootstrap = require('./app/bootstrap.js');
var app = express.createServer();
bootstrap.setupApp(app, __dirname);
bootstrap.bootstrap(app);
bootstrap.postrun();
app.listen(config.http.port, config.http.ip);
});## Or run separate worker file
### master.js
var pstarter = require('pstarter');pstarter.startMaster({}, {exec: './worker.js'});
### worker.js
var pstarter = require('pstarter');
pstarter.startWorker(function() {
console.log('Hello world!');
});## Methods
### startMaster(confFile, masterSettings, callback)
* `confFile` - configuration file or object. Only PID_FILE and http.numWorkers are used at the moment
* `masterSettings` - See http://nodejs.org/api/cluster.html#cluster_cluster_setupmaster_settings
* `callback` - function which will be called when master has forked workers### startWorker(callback, cleanupCallback)
* `callback` - will call when worker has attached listener on exit signal
* `cleanupCallback` - will call when worker receives exit signal. It pass a function for terminating process (or you can choose to exit).### startWatch(root, skipFolders, exts)
* `root` top folder to watch, all subfolder will also be watched
* `skipFolders` Array of folders you want to skip, absolute path
* `exts` Array of extension to listen on changes, including "."### statServer(port, host)
* `port` port to run stat server
* `host` host to run stat server## Start with init script on Ubuntu
You need to create a symbolic link /etc/init.d/pstarter to pstarter/etc/init.d/pstarter and make pstarter executable.
You need also specify NODE_BIN, SERVER, PID_FILE, AS_USER, NODEJS and NODE_ENV if your application uses it:
* `NODE_BIN` folder which contains SERVER
* `SERVER` application/server file to execute
* `PID_FILE` should be /var/run/pstarter.pid in production linux
* `AS_USER` the username or uid that you want to run your app (worker) with
* `NODEJS` executable nodejs
* `NODE_ENV` for your own application; normally development/production### Start workers
sudo /etc/init.d/pstarter start
### Old workers will exit directly and new workers created
sudo /etc/init.d/pstarter restart
### Old workers will exit graceful one at the time and replaced with a new one
sudo /etc/init.d/pstarter graceful
### Run stop (bellow) and start command will be executed
sudo /etc/init.d/pstarter force-restart
### Old workers exit directly; parent exits
sudo /etc/init.d/pstarter stop
## Register init script for startup at reboot in Ubuntucd /etc/init.d/
sudo update-rc.d pstarter defaults