2

I deployed my Sails project on Openshift. It works but I receive errors with websockets and I don't able to load pages built on ejs.

I found these links enough explanatory about grunt/openshift, but I am not able to solve the problem.

Deploying Sails.js On Openshift

Deploy Sails.js on Openshift ... app restarting over and over

My nodejs.log is:

DEBUG: Running node-supervisor with
DEBUG:   program 'app.js'
DEBUG:   --watch '/var/lib/openshift/537b5ae8500446c95900057f/app-root/data/.nodewatch'
DEBUG:   --ignore 'undefined'
DEBUG:   --extensions 'node|js|coffee'
DEBUG:   --exec 'node'
DEBUG: Starting child process with 'node app.js'
DEBUG: Watching directory '/var/lib/openshift/537b5ae8500446c95900057f/app-root/data/.nodewatch' for changes.
Warning: connection.session() MemoryStore is not
designed for a production environment, as it will leak
memory, and will not scale past a single process.
^[[32minfo^[[39m:
^[[32minfo^[[39m:
^[[32minfo^[[39m:    Sails.js           <|
^[[32minfo^[[39m:    v0.9.16             |\
^[[32minfo^[[39m:                       /|.\
^[[32minfo^[[39m:                      / || \
^[[32minfo^[[39m:                    ,'  |'  \
^[[32minfo^[[39m:                 .-'.-==|/_--'
^[[32minfo^[[39m:                 `--'-------'
^[[32minfo^[[39m:    __---___--___---___--___---___--___
^[[32minfo^[[39m:  ____---___--___---___--___---___--___-__
^[[32minfo^[[39m:
^[[32minfo^[[39m: Server lifted in `/var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo`
^[[32minfo^[[39m: To see your app, visit http://127.2.95.129:8080
^[[32minfo^[[39m: To shut down Sails, press <CTRL> + C at any time.
^[[34mdebug^[[39m: --------------------------------------------------------
^[[34mdebug^[[39m: :: Wed May 21 2014 14:26:01 GMT-0400 (EDT)
^[[34mdebug^[[39m:
^[[34mdebug^[[39m: Environment  : production
^[[34mdebug^[[39m: Host         : 127.2.95.129
^[[34mdebug^[[39m: Port         : 8080
^[[34mdebug^[[39m: --------------------------------------------------------
^[[31merror^[[39m: Server doesn't seem to be starting.
^[[31merror^[[39m: Perhaps something else is already running on port 8080 with hostname 127.2.95.129?
^[[32minfo^[[39m: handshake authorized qR_aOT3qx40k6X34CF-2
^[[32minfo^[[39m: handshake authorized tnAUouwi-d32h82rCF-3
^[[33mwarn^[[39m: websocket connection invalid
^[[32minfo^[[39m: transport end (undefined)
^[[31merror^[[39m: Error rendering view at :: /var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/views/viewshows/index
^[[31merror^[[39m: Using layout located at :: /var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/views/layout
^[[31merror^[[39m: Error: Failed to lookup view "viewshows/index"
    at Function.app.render (/var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/node_modules/sails/node_modules/express/lib/application.js:495:17)
    at ServerResponse.res.render (/var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/node_modules/sails/node_modules/express/lib/response.js:798:7)
    at ServerResponse._addResViewMethod.res.view (/var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/node_modules/sails/lib/hooks/views/index.js:297:15)
    at module.exports.index (/var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/api/controllers/ViewShowsController.js:32:13)
    at _bind.enhancedFn (/var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/node_modules/sails/lib/router/bind.js:375:4)
    at callbacks (/var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/node_modules/sails/node_modules/express/lib/router/index.js:164:37)

Here my app.js:

require('sails').lift(require('optimist').argv);

Here my local.js:

module.exports = {
  host: process.env.OPENSHIFT_NODEJS_IP || "127.0.0.1",
  port: process.env.OPENSHIFT_NODEJS_PORT || 8080,
  environment: process.env.NODE_ENV || 'development'
}

Calling 'env | grep OPENSHIFT_NODEJS_PORT' on openshift console I receive:

OPENSHIFT_NODEJS_PORT=8080

In my opinion the problem isn't the port. The server start and answer correctly. But when I call a page built on ejs it answer me with a piece of json...

{"view":{"name":"viewshows/index","root":"/var/lib/openshift/537b5ae8500446c95900057f/app-root/runtime/repo/views","defaultEngine":"ejs","ext":".ejs"}}

...and print the error above in the server log.

Any suggestion?

Thanks

Community
  • 1
  • 1
AlexB
  • 81
  • 1
  • 6
  • You might want to include the relevant changes you made to your app.js or locals that relate to the HOSTNAME and PORT – Jason Kulatunga May 21 '14 at 21:16
  • Hi, I see that Openshift set the port to 8080. Sometimes I receive the same error "Perhaps something else is already running on port" in my local pc too. – AlexB May 22 '14 at 08:21

1 Answers1

0

I'm fairly certain that openshift requires your application to listen to a specific port, specified by an environmental variable, not 8080

You're going to want to change your app.js to to use the hostname and port env variables in this openshift doc

Jason Kulatunga
  • 5,814
  • 1
  • 26
  • 50