Say 'Hello World!' in Openshift with Node.js

北城余情 提交于 2020-01-04 16:57:05

问题


I created an app in Openshift and created a local git repo on my computer. I want to change the default welcome page here: http://nodejs-j4nos.rhcloud.com:3000 and just tell Hello world as this tutorial say.

So I removed from local repo the index.html, and modified server.js, pasted in this code below. And commit, and push. I get a long approval, that they accepted my commit.

If I good understand I do not have to stop node and start it again, but Openshift do it for me. But as you can see no Hello World is able to see, when open link in browser (http://nodejs-j4nos.rhcloud.com:3000) why?

var express = require('express');
var app = express();

app.get('/', function (req, res) {
  res.send('Hello World!');
});

var server = app.listen(3000, function () {

  var host = server.address().address;
  var port = server.address().port;

  console.log('Example app listening at http://%s:%s', host, port);

});

remote: Git Post-Receive Result: success        
remote: Activation status: success        
remote: Deployment completed with status: success        
To ssh://5556b4c4fcf9336abf0000de@nodejs-j4nos.rhcloud.com/~/git/nodejs.git/

and here is the tree structure, express is listed

Based on this SO answer I tried to modify script, but does not helped:

var express = require('express');
var app = express();

app.set('port', process.env.OPENSHIFT_NODEJS_PORT || 8080);
app.set('ip', process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1');

http.createServer(app).listen(app.get('port'), app.get('ip'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

app.get('/', function (req, res) {
  res.send('Hello World!');
});

回答1:


Link is working now: http://nodejs-j4nos.rhcloud.com The right script to show "Hello world!" is

var http = require('http');
var express = require('express');
var app = express();

app.set('port', process.env.OPENSHIFT_NODEJS_PORT || 8080);
app.set('ip', process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1');

http.createServer(app).listen(app.get('port'), app.get('ip'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

app.get('/', function (req, res) {
  res.send('Hello World!');
});

And here is the proof:

Thanks for this: Deployed Node app to OpenShift successfully, OpenShift still shows default page and this question: Node.js Deployment in openshift

And you should now that you can write in /app-root/repo the $ node server.js command, and if something wrong with script, it will indicate right there




回答2:


I´ve readed this, maybe you must use a port over 15000:

https://help.openshift.com/hc/en-us/articles/202185874-I-can-t-bind-to-a-port




回答3:


Found my notes on using OpenShift with Node: The openshift system has some integrated control tools to support its ‘gear’ system, useful to control the openshift application and environment.

gear            control your application (start, stop, restart, etc)
                or deps with --cart      (gear start --cart mysql-5.1)
tail_all        tail all log files. This command displays the last entries
                in your log files as they are written.  You can hit 
                <ctrl>-c to exit this command.
export          list available environment variables
rm              remove files / directories
ls              list files / directories
ps              list running applications
kill            kill running applications
mysql           interactive MySQL shell
mongo           interactive MongoDB shell
psql            interactive PostgreSQL shell
quota           list disk usage

The gear system has additional commands. OpenShift Gear Control, An assortment of gear utilities:

COMMANDS:

build                Run the build steps
deploy               Run the deploy steps
help                 Display global or [command] help documentation.
postreceive          Run the git postreceive steps
prereceive           Run the git prereceive steps
reload               Reload a cart
remotedeploy         Run the remotedeploy steps
restart              Restart a cart
restore              Restore an application
snapshot             Snapshot an application
start                Start the gear/cart
status               Get the status for a cart
stop                 Stop the gear/cart

Will any of this stuff help you stop and restart the gear? I'd start with the simple 'gear' command. I don't remember, is Express loaded up via NPM or now native with node? At one time it was a NPM install. Those don't get pushed to Openshift.

What is the directory tree structure on the openshift nodejs server?

root
   \ app-root
        \ data
        \ repo   <- -  the working files for web content end up here.
        \ runtime
   \ git
   \ nodejs

In openshift dependencies don't get pushed. For that you can login thru ssh and go to: cd app-root/repo or cd $OPENSHIFT_REPO_DIR and then npm install tool_of_choice



来源:https://stackoverflow.com/questions/30273554/say-hello-world-in-openshift-with-node-js

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!