在 Openshift 中用 Node.js 说 'Hello World!'

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

我在 Openshift 中创建了一个应用程序,并在我的计算机上创建了一个本地 git 存储库。我想在这里更改默认的欢迎页面:http://nodejs-j4nos.rhcloud.com:3000 and just tell Hello world as this tutorial say.

所以我从本地存储库中删除了 index.html,并修改了 server.js,粘贴在下面的代码中。并提交,并推动。我得到了长期的认可,他们接受了我的承诺。

如果我很好理解,我不必停止节点并重新启动它,但 Openshift 会为我做这件事。但是正如您所见,在浏览器中打开 link 时,无法看到 Hello World (http://nodejs-j4nos.rhcloud.com:3000) 为什么?

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/

这里是树结构,express列出

基于 this SO 回答我尝试修改脚本,但没有帮助:

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!');
});

找到我关于将 OpenShift 与 Node 结合使用的笔记: openshift 系统有一些集成的控制工具来支持其“齿轮”系统,可用于控制 openshift 应用和环境。

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

齿轮系统有额外的命令。 OpenShift Gear Control,各种齿轮实用程序:

命令:

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

这些东西能帮助你停止和重新启动齿轮吗?我将从简单的 'gear' 命令开始。我不记得了,Express 是通过 NPM 加载的,还是现在使用 node 加载的?曾经是 NPM 安装。那些不会被推送到 Openshift。

openshift nodejs 服务器上的目录树结构是什么?

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

在 openshift 中,依赖项不会被推送。为此,您可以通过 ssh 登录并转到: cd app-root/repocd $OPENSHIFT_REPO_DIR 然后 npm install tool_of_choice

我读过这个,也许你必须使用超过 15000 的端口:

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

Link 正在运行:http://nodejs-j4nos.rhcloud.com 显示 "Hello world!" 的正确脚本是

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!');
});

证明如下:

感谢:Deployed Node app to OpenShift successfully, OpenShift still shows default page 这个问题:Node.js Deployment in openshift

你现在应该可以在 /app-root/repo 中编写 $ node server.js 命令,如果脚本有问题,它会在那里指示