在 OpenShift 上部署 Node.js

6

我正在尝试将一个Node.js应用程序部署到Openshift,参考链接here

我理解这段代码

var http = require('http');

var server = http.createServer(function(req, res) {
    res.writeHead(200);
    res.end('Hello Http');
});
server.listen(3000);

在本地运行时没有任何问题。

$ node server.js // saved as server.js

然而,当我在 Openshift 中提交此应用程序时,它是如何工作的?这是非常简单的代码。我有一些下载的代码,是一个聊天应用程序,客户端和服务器需要配置以便监听某个端口(我在本地主机上使用端口号 3000)。

它在本地主机上的端口号为 3000 上运行,但我该如何使其在 Openshift 上运行?

2个回答

9

您需要侦听端口 process.env.OPENSHIFT_NODEJS_PORT。 因此,类似于以下代码应该能够正常工作:

server.listen(process.env.OPENSHIFT_NODEJS_PORT || 3000);

请看这个例子:Error: listen EACCES on Openshift app。该错误与Openshift应用程序的监听有关。

您的原始问题已解决,现在面临另一个问题。我建议您接受此答案,并针对“socket.io.js未找到”打开一个新问题。这是一个不同的问题,未来可能寻找它的人不会根据此问题的标题进行搜索。这也将给其他人一个回答的机会。在新问题中,您应该明确包括目录结构和相关日志。更好地描述问题:在“it now says…”中,“it”指的是什么——客户端?服务器?还是其他什么东西? - Nitzan Shaked
嗨Nitzan,非常抱歉。今天早上我很匆忙地回复了你的答案,完全忘记了接受你的答案。我现在接受你的答案,非常感谢你。我搜索了很多并尝试在Openshift服务器上实时修复它,但无法解决它。我今天稍后会进行更多的研究。对此感到抱歉,我接受你的答案并非常感谢你。 - jeewan
没有问题。当你创建一个新的问题时,让我知道,并在那里发布你的目录结构和日志。 - Nitzan Shaked
嗨Nitzan,当然我会的,同时我需要你的一些指导,因为我对Node.js非常感兴趣并且想要从基础学起。不知何故,localhost:portNumber对我很有效,但是Openshift似乎不能正常工作,我怀疑Node.js的版本可能与本地的Openshift不同(我需要检查一下)。 - jeewan
这是我在Node.js中部署的聊天应用程序的新版本http://chat-jeewan.rhcloud.com/。在本地主机上,它完美地工作,但在Openshift上部署时会抛出一个错误(请参阅控制台),并且真的不确定为什么当我部署它时无法找到套接字(socket.io)。 - jeewan
显示剩余2条评论

2
嘿,socket.io的问题在于你在本地安装了npm包,但在openshift上没有安装(依赖项不会被推送)。为此,您可以通过ssh登录(在openshift控制面板右侧菜单中查找“想要登录到您的应用程序吗?” ,按照说明并使用提供的ssh连接进行登录),然后使用终端或Putty登录,并转到:
cd app-root/repo 

或者

cd $OPENSHIFT_REPO_DIR

然后。
npm install socket.io

我曾经用过这个来安装mongoose和其他依赖项,没有遇到问题。此外,您还可以使用

node server.js

从命令行运行网站 ;)

1
从 OpenShift 检出代码后,只需运行 npm install 即可在本地获取所需的包(这些包在 package.json 中定义)。 - J.G.Sebring

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接