Knowledgebase: Getting Started
Getting Started with NodeJS on A Small Orange
Posted by on 31 October 2013 10:58 AM

While not strictly required, it is considered good practice for your application to live outside of your web root. For this tutorial, we'll be calling our account 'user' and our application 'myapp'.

First, prepare our application for use with the server. Our myapp contains the following files:

  • myapp.js

  • index.html

  • server.js

  • style.css

The server requires that the application follow a specific layout in order to be loaded. Specifically, the entry file must be named and a tmp directory should exist inside the application folder. The entry file should be the file that starts the http listen, such as:

var http = require('http');
var server = http.createServer(function(req, res) {
...
});
server.listen(3000);

 

For many applications you can either rename server.js or simply symlink it to the correct location. Install myapp to the following folder(s):

/home/user/myapp
/home/user/myapp/myapp.js
/home/user/myapp/index.html
/home/user/myapp/server.js
/home/user/myapp/style.css

Then symlink server.js to app.js:

cd /home/user/myappMbr />
​ln -s server.js app.js

 

Create a tmp directory in the myapp directory:

mkdir tmp

 

Now that the application is prepared, we can tell the web server to actually use it. In your web root, which for our example will be /home/user/public_html, we need to create an .htaccess file that tells the web server to use our application when accessing that directory. Create a file using your preferred text editor named.htaccess (noting that the filename starts with a period). Inside it, add:    

PassengerEnabled on
PassengerAppRoot /home/user/myapp
SetEnv NODE_ENV production
SetEnv NODE_PATH /usr/lib/node_modules

 

Save the above file, and place it in your web root. You should now be able to test your application by visiting your website. If your application requires further application-specific setup, please do so as your application instructs if applicable.

Explaining the .htaccess Directives

Earlier we created an .htaccess file with four lines, or in this case directives. The server supports node.js through Phusion Passenger and that file is required to tell the web server to use Passenger, along with how it should be configured. Here are the directives, and how they are used:

  • PassengerEnabled on - tells the web server to enable Passenger

  • PassengerAppRoot /home/user/myapp - tells Passenger that our application is in /home/user/myapp

  • SetEnv NODE_ENV production - sets the environment variable NODE_ENV to production, which if your application uses it will relay to the application that it needs to use it's production configuration

  • SetEnv NODE_PATH /usr/lib/node_modules - tells Passenger to also look for node.js modules in the global directory, where modules that the server provides exist.

 

(48 vote(s))
This article was helpful
This article was not helpful

Comments (0)
Post a new comment
 
 
Full Name:
Email:
Comments:
Help Desk Software by Kayako fusion
ERROR: This domain name (kb.asmallorange.com), does not match the domain name in the license key file help.asmallorange.com.

For assistance with your license, please contact the Kayako support team: https://support.kayako.com