使用Open Shift PaaS部署Node.js应用程序

5

我正在使用Open Shift PaaS开始学习,我选择了一个node.js应用作为我的第一个尝试。

到目前为止,当我尝试访问我的应用程序站点时,我得到了一个503状态码。

我尝试过:

  • 设置我的github仓库,
  • 在github上设置ssh密钥并使Open Shift拥有它,
  • 使用express创建了一个非常简单的应用程序(我通过npm安装了express)
  • 提交并推送了所有更改,
  • 我安装了rhc并运行了rhc app restart -a nodejs

但是我无法让它工作。

rhc tail -a nodejs输出:

DEBUG: Error: Cannot find module '/var/lib/openshift/531be41fe0b8cd3d12000003/app-root/runtime/repo/server.js'
    at Function._resolveFilename (module.js:337:11)
    at Function._load (module.js:279:25)
    at Array.0 (module.js:484:10)
    at EventEmitter._tickCallback (node.js:190:38)

DEBUG: Program node server.js exited with code 1

DEBUG: Starting child process with 'node server.js'
这是我的app.js文件:
var express = require('express')
var server = new express()
server.use(express.static(__dirname+"/public"))


server.get('/', function (request, response) {
    response.send(200)
})

server.listen(process.env.OPENSHIFT_NODEJS_PORT || 80)

编辑

我已经将app.js重命名为server.js,并进行了git add,commit和push操作,使用rhc重启了应用程序。但是它还没有工作。

1个回答

9
你可以将主要脚本命名为任何你想要的名字,只要你的package.json文件内容准确描述了你推荐的服务器初始化过程
我写了一篇博客文章,概述了在OpenShift上运行你的Node.js项目的两个主要步骤
  1. {{link3:更新你的package.json文件,记录你的服务器初始化过程(main,scripts.start)}。
  2. 修改你的代码,依赖于环境变量来获取运行时配置细节:服务器IP,端口,域名,数据库密码和其他自定义令牌。

请确保在项目的README文件中记录您首选的部署流程


我会重新开始。说实话,我最初对我的应用程序进行了非常幼稚的配置。我甚至没有package.json文件。 - diegoaguilar
我有一个问题,如果我已经在 OpenShift web 界面上创建了应用程序,那么重新编写 package.json ,执行 npm 安装、启动和正确的 git 命令以便稍后重启 rhc,这样做就能让它正常工作吗? - diegoaguilar
我建议从一个已知的良好状态开始。纯净的Node.js购物车将自动提供一个基本的“hello world”示例应用程序。这就是当您不提供任何初始源代码时所获得的内容。 - ʀɣαɳĵ
你也可以从快速入门或示例应用程序开始,然后进行编辑。 - ʀɣαɳĵ
1
回答你的问题:是的,在解决了这两个问题之后,添加并提交更改,并将更改集推送到OpenShift后,您应该能够使您当前托管的应用程序正常工作。在验证更改后,您还可以将它们推送回GitHub上的存储库,使该存储库与OpenShift兼容,并可立即从OpenShift的Web界面启动(下次无需进行503或更改)。 - ʀɣαɳĵ

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