#How you get Sail.js running on Openshift#
This instruction is tested with:
- Sails.js v0.9.16
- Node.js 0.10 on Openshift ( 05 May 2014)
###1) package.json
If you use the package.json build by sails new Projectname than you have to add a few fields for openshift – so the server can start you app automatically. Sails uses Grunt to build minify css/js and so on. Openshift dont have grunt installed so you have to add this also.
See package.json for an example. The most important part for openshift:
"dependencies": {
"grunt-cli": ">=0.1.13",
"grunt": "~0.4.4",
...
"scripts": {
"start": "node app.js",
"debug": "node debug app.js"
},
"private": true,
"main": "app.js"
###2) config/local.js
In your Sailsconfig (config/local.js) you have to set Host, Port and Environment. See local.js. Example:
host: process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1",
port: process.env.OPENSHIFT_NODEJS_PORT || 8080,
environment: process.env.NODE_ENV || 'development'
###3) .openshift/action_hooks/pre_start_nodejs
On your local machine you can start node app.js --prod if you want to start Sail.js in production-mode. On Openshift you have to create a “pre_start_nodejs”-File. This file is executed before your node-app starts. Here you can set the environment-mode. Also the build-in-grunt from sails dont work right so we manualy do a "grunt prod" befor starting node.
It’s simple:
- Create a new file “pre_start_nodejs” (no file extension) in the folder “.openshift/action_hooks”
- Insert the following code:
#!/bin/bash
export NODE_ENV=production
# If there is a grunt file, run $ grunt prod
if [ -f "${OPENSHIFT_REPO_DIR}"/Gruntfile.js ]; then
(cd "${OPENSHIFT_REPO_DIR}"; node_modules/grunt-cli/bin/grunt prod)
fi
####4.) Git push
You you can make “git push” and enjoy your Sails.js!