如何在openshift

时间:2016-04-09 12:13:14

标签: node.js express openshift

我使用express和angularjs以及mongodb创建了node.js项目。 我如何将其部署到Openshift 项目结构看起来像这样

我的openshift用户名是admin 密码是X5900XJSLW4 db name是:topic

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

这项工作当地非常精细,但我获得服务暂时不可用@ http://topic-aggregator16.rhcloud.com/

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

我真的需要这个工作

    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';

3 个答案:

答案 0 :(得分:5)

  

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

的package.json

  • 将server.js文件添加到
  • 脚本

    中添加启动脚本

    " main":" server.js", "脚本":{     "开始":"节点server.js",  }

示例

{
      "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 env
  • 添加动态端口
  • 从openshift env

    添加动态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标志从现有代码部署项目

rhc app create appName nodejs-0.10 -s --from-code=https://github.com/username/app.git

<强>更新

  

如果您正在使用mongodb,则需要更新server.js文件

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;
}

希望这有帮助。

答案 1 :(得分:0)

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

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

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

config.web.port = process.env.PORT || process.env.WEB_PORT || 3000;
config.web.ip = process.env.IP;

为:

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模块cloud-envconfig-multipaas也可能会有所帮助/ p>

答案 2 :(得分:0)

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

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