Skip to main content

Node.js Guide

Overview​

What is Node.js?​

Node.js is a performant JavaScript backend built off Chrome's JavaScript engine "V8". Node.js and its accompanying package management, npm, are available without any additional compilation from source.

Running Node.js with Passenger​

KT supports running Node.js through Passenger. Passenger automatically manages launching Node.js and scaling the number of Node.js instances to meet demand. To adapt a Node.js script to Passenger, create a compatible filesystem layout:

nodejsapp
+-- app.js <-- main file
+-- public <-- document root
¦ +-- .htaccess <-- htaccess control file
+-- tmp <-- passenger control/scratch directory

Create a .htaccess file in public/, which serves as the Document Root, with the following line:

PassengerNodejs /usr/bin/node

Note: if the system version is insufficient, use nvm to specify or install a different Node interpreter. When specifying the path to PassengerNodejs, be sure to expand the tilde (~) to your home directory.

Next, rename the main file to app.js and locate this under public/ as in the directory layout. Connect the public/ folder to a subdomain or domain within Control Panel and you're all set. You can specify another entry-point via the PassengerStartupFile directive.

You can restart Node.js using the same restart mechanism as with Ruby or Python scripts.

Specifying another startup​

In the .htaccess file, specify: PassengerStartupFile newfile.js where newfile.js is the location to another file not named app.js.

Standalone Node.js​

Quickstart​

The following lines of code should be added to a file called server.js. Replace 40201 with an alloced port (See Account > Info) from your account.

// Load the "http" module to create an HTTP server.
var http = require('http');

// Configure our HTTP server to respond with "Hello World" to all requests.
var server = http.createServer(function (request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.end("Hello World\n");
});

// Listen on port 40201, pre-allocated. IP defaults to 127.0.0.1.
server.listen(40201);

// Put a friendly message on the terminal
console.log("Server running at http://127.0.0.1:40201/");

A quick and easy way to do this is with Nano Text Editor, which is available through the terminal:

  1. nano ~/myserver.js
  2. Paste copied code using CTRL + V or CMD + V keys
  3. Use CTRL + X or CMD + X to save file
  4. Press Y to accept saving
  5. Done!

Now to start Node.js using the above server script, type: node ~/server.js:

[myuser ~]$ node server.js\ Server running at http://127.0.0.1:40201/

Congratulations! Your Node.js server is running. You can send a simple request using "curl" with curl http://127.0.0.1:40201/ to confirm everything is working:

[myuser ~]$ curl http://127.0.0.1:40201\ Hello World!\

Installing Packages​

Use NPM to install packages. Syntax is of the form npm install -g [Package Name] where [Package Name] is a package listed through npm.

Persisting a server​

Use forever (npm install -g forever) or nohup command to run keep a server running even after logging out: nohup node server.js

Starting on Start-up​

  1. Visit Dev > Task Scheduler within Control Panel to schedule a new task.
  2. Under Command, enter node ~/server.js
  3. Under Scheduling, select Server Start
  4. Click Add