Hi,

I've recently released the os-service module to npm:

https://www.npmjs.com/package/os-service

This module provides a consistent interface for installing node.js programs 
as operating system services.

On Windows this module uses the WIN32 API to add and remove the service, 
and to connect to the Windows Service Control Manager to run as a 
background service when started using the Windows Service Controller 
program, or "net start".

On Linux this module will add and remove start/stop scripts to/from the 
"/etc/init.d" directory, and use "chkconfig" or "update-rc.d" to add and 
remove the program.  Then the "service ... start/stop/etc." command can be 
used to control the service.

>From the node.js programs perspective the same code is used on both 
platforms, e.g.:

if (process.argv[2] == "--add") {
    service.add ("my-service", {programArgs: ["--run"]}, function(error){ 
       if (error)
          console.trace(error);
    });
} else if (process.argv[2] == "--remove") {
    service.remove ("my-service", function(error){ 
       if (error)
          console.trace(error);
    }););
} else if (process.argv[2] == "--run") {
    var logStream = fs.createWriteStream (process.argv[1] + ".log");

    service.run (logStream, function () {
        service.stop (0);
    });

    // Run your background program code here...
} else {
    // Show usage...
}

This can be useful when deploying an application across Windows and Linux, 
in that no platform specific code needs to be written.  If you have a 
product built and packaged on a build server, during the install of the 
product you could install one or more services from an installation script 
once the installation directory had been selected and files copied in place 
- assuming code similar to the above was in the my-service.js script quoted 
below:

rem Windows
set DIR=c:\projects\my-service-project
%DIR%\node.exe %DIR%\my-service.js --add
net start my-service


# Linux
DIR=/projects/my-service-project
$DIR/node $DIR/my-service.js --add
service my-service start

This module is similar to the windows-service module I previously released:

https://www.npmjs.com/package/windows-service

The API's are almost identical, only the service add and remove API's are 
slightly different in that they now take a callback.  While they are not 
100% compatible I have been sure to keep them aligned, since I think the 
API was already in a good state, and I wanted to make it easy to migrate to 
this module.

Although this module essentially replaces that module, I will continue to 
support the windows-service module until there is no demand for it.

This is a new module, and the API for Linux is new.  So there may be things 
that make sense to Linux that are missing, e.g. which runlevels to 
start/stop the service.  So if there are any suggestions like this, or 
feedback, it will be well received.

Steve

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/ae20bb07-47e3-4d9f-a7c4-0e52be1c004e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to