Deploy a Framework Friday #3 with node.js + express.js
Time for the node.js “Deploy a Framework Friday”. First get node.js and express.js installed (i.e. npm install express) and then create your node.js application.
adron$ express nodejs create : nodejs create : nodejs/package.json create : nodejs/app.js create : nodejs/public create : nodejs/public/javascripts create : nodejs/public/images create : nodejs/public/stylesheets create : nodejs/public/stylesheets/style.css create : nodejs/routes create : nodejs/routes/index.js create : nodejs/views create : nodejs/views/layout.jade create : nodejs/views/index.jade dont forget to install dependencies: $ cd nodejs && npm install
Once the app is installed open up the app.js file and edit the code so that it reflects what is shown below.
var express = require('express')
, routes = require('./routes');
var app = module.exports = express.createServer();
// Configuration
app.configure(function(){
app.set('views', __dirname + '/views');
app.set('view engine', 'jade');
app.use(express.bodyParser());
app.use(express.methodOverride());
app.use(app.router);
app.use(express.static(__dirname + '/public'));
});
app.configure('development', function(){
app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
});
app.configure('production', function(){
app.use(express.errorHandler());
});
// Routes
app.get('/', routes.index);
// Cloud Foundry Environment Variables
var port = (process.env.VMC_APP_PORT || 3000);
app.listen(port);
console.log("Cloud Foundry Demo Express server listening on port %d in %s mode.", app.address().port, app.settings.env);
The emphasis is the port variable added for the VMC_APP_PORT. This variable is needed by the Cloud Foundry system to know which port that node will use to host on, which Cloud Foundry will then intelligently map to so you will get the standard default port 80 activity you expect. For more information about all this hosting mess with node.js check out one of my previous write ups on the topic on the New Relic Blog.
Once you’ve setup this file, then just deploy using the with npm support option that states the version of node.
vmc push --version=node06
For more information about deploying node apps with npm module dependencies check out this blog entry on “Cloud Foundry supports node.js modules with NPM“.
All done. Yes, there is more Deploy a Framework Fridays coming up, so stay tuned!