首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在openshift中部署node.js应用程序

如何在openshift中部署node.js应用程序
EN

Stack Overflow用户
提问于 2016-04-09 20:13:14
回答 3查看 5.1K关注 0票数 0

我用express、angularjs和mongodb创建了node.js项目。如何将其部署到Openshift项目结构如下所示

我的openshift的用户名是管理员密码是X5900XJSLW4数据库名称是: topic

现在这些都是假的,但它们看起来像这样。谢谢

这在本地工作得很好,但我得到的服务暂时不可用@ http://topic-aggregator16.rhcloud.com/

错误日志找到了她的https://github.com/chihabSD/TopicAggregator/blob/master/images/errorlog.png

我真的需要尽快解决这个问题

代码语言:javascript
复制
    config.db.mongo = {};
config.web.port = process.env.OPENSHIFT_NODEJS_PORT || process.env.PORT || process.env.WEB_PORT || 8080;
config.web.ip = process.env.OPENSHIFT_NODEJS_IP || process.env.IP;
config.db.mongo.url = process.env.OPENSHIFT_MONGODB_DB_URL || 'mongodb://localhost/topic';
EN

回答 3

Stack Overflow用户

发布于 2016-04-09 22:42:45

要将现有项目部署到openshift中,您需要修改package.jsonserver.json文件:

package.json

  • 将server.js文件添加到密钥
  • 脚本密钥中添加启动脚本

"main":"server.js",“脚本”:{ "start":"node server.js",}

示例

代码语言:javascript
复制
{
      "name": "to-do",
      "version": "1.0.0",
      "description": "Simple todo app",
      "main": "server.js",
      "scripts": {
           "start": "node server.js",
           "test": "echo \"Error: no test specified\" && exit 1"
       },
      "keywords": [
          "node",
          "angular"
      ],
      "dependencies" : {
          "express"    : "~4.7.2",
          "mongoose"   : "~3.6.2",
          "morgan"     : "~1.2.2",
          "body-parser": "~1.5.2",
          "method-override": "~2.1.2"
      },
      "author": "atefth@gmail.com",
      "license": "MIT"
}

server.js

  • 从openshift环境添加动态端口
  • 从openshift环境添加动态IP

var server_port = process.env.OPENSHIFT_NODEJS_PORT || 8080;var server_ip_address = process.env.OPENSHIFT_NODEJS_IP || '127.0.0.1';app.listen( server_port,server_ip_address,function () { console.log( "Listening on“+ server_ip_address + ",server_port”+server_port );});

现在,您可以使用rhc -- from -code标志从现有代码部署项目

代码语言:javascript
复制
rhc app create appName nodejs-0.10 -s --from-code=https://github.com/username/app.git

更新

如果你使用mongodb,你需要更新你的mongodb文件

代码语言:javascript
复制
if(process.env.OPENSHIFT_MONGODB_DB_PASSWORD){
  connection_string = process.env.OPENSHIFT_MONGODB_DB_USERNAME + ":" +
  process.env.OPENSHIFT_MONGODB_DB_PASSWORD + "@" +
  process.env.OPENSHIFT_MONGODB_DB_HOST + ':' +
  process.env.OPENSHIFT_MONGODB_DB_PORT + '/' +
  process.env.OPENSHIFT_APP_NAME;
  config.db.mongo.url = connection_string;
}

希望这能有所帮助。

票数 5
EN

Stack Overflow用户

发布于 2016-04-14 01:28:27

在openshift上部署nodejs时,我看到了这个YouTube视频系列:https://www.youtube.com/playlist?list=PLcdTDBNC_bSj1GG0_-K6R5_UgV9E3jBPZ

看一看。它可能会让你一步一步来。

票数 1
EN

Stack Overflow用户

发布于 2016-04-11 06:56:37

通常,OpenShift Online (V2)将使用环境变量(https://developers.openshift.com/languages/nodejs/environment-variables.html#listen)将连接信息发布到应用程序。

您的nodejs will服务将需要使用此信息连接到OpenShift的负载均衡器。

对于此示例代码,您需要更改

代码语言:javascript
复制
config.web.port = process.env.PORT || process.env.WEB_PORT || 3000;
config.web.ip = process.env.IP;

至:

代码语言:javascript
复制
config.web.port = process.env.OPENSHIFT_NODEJS_PORT || process.env.PORT || process.env.WEB_PORT || 3000;
config.web.ip = process.env.OPENSHIFT_NODEJS_IP || process.env.IP;

有关更多信息,请参阅https://developers.openshift.com/languages/nodejs/environment-variables.html#listen

如果您更喜欢使用更简单、与供应商无关的应用程序配置字符串(规范化为PORTIP),Npm模块cloud-envconfig-multipaas也会很有帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36516600

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档