使用MySQL数据源向Strongnshift

时间:2015-07-12 14:24:47

标签: mysql openshift loopbackjs strongloop

我一直试图使用MySQL数据源应用程序将Strongloop / Loopback部署到Openshift而没有成功。以下是我遵循的步骤。

  1. Windows 7上安装的节点。
  2. npm安装-g strongloop
  3. 按照此link
  4. 的说明创建数据源
  5. 我使用的是MySQL而不是MongoDB。以下是我的设置。
  6. 的package.json

    {
      "name": "loopback-app",
      "version": "0.0.0",
      "main": "server/server.js",
      "scripts": {
        "start": "slc run",
        "pretest": "jshint ."
      },
      "dependencies": {
        "compression": "^1.0.3",
        "errorhandler": "^1.1.1",
        "loopback": "^2.0.0",
        "loopback-boot": "^2.0.0",
        "loopback-connector-mysql": "^2.1.1",
        "loopback-datasource-juggler": "^2.0.0",
        "serve-favicon": "^2.0.1"
      },
      "optionalDependencies": {
        "loopback-explorer": "^1.1.0"
      }
    }
    

    datasources.json

    {
      "db": {
        "name": "db",
        "connector": "memory"
      },
      "mysql": {
        "host": "mysql-openshift-db-host",
        "port": mysql-openshift-db-port,
        "database": "gearname",
        "password": "mysql-password",
        "name": "mysql",
        "connector": "mysql",
        "user": "mysql-username"
      }
    }
    

    模型config.json

    {
      "_meta": {
        "sources": [
          "../common/models",
          "./models"
        ]
      },
      "User": {
        "dataSource": "db"
      },
      "AccessToken": {
        "dataSource": "db",
        "public": false
      },
      "ACL": {
        "dataSource": "db",
        "public": false
      },
      "RoleMapping": {
        "dataSource": "db",
        "public": false
      },
      "Role": {
        "dataSource": "db",
        "public": false
      },
      "Demo": {
        "dataSource": "mysql",
        "public": true
      }
    }
    

    在我的机器上本地运行时,它可以正常工作。但是,在将其部署到Openshift然后转到http:/// explorer并为我的模型尝试其中一种方法时,我收到以下错误。

    ==> strongloop/logs/node.log <==
    2015-07-12T14:08:02.538Z pid:27006 worker:supervisor INFO strong-agent not profiling, configuration not found.
    2015-07-12T14:08:02.543Z pid:27006 worker:supervisor Generate configuration with:
    2015-07-12T14:08:02.545Z pid:27006 worker:supervisor     npm install -g strong-cli
    2015-07-12T14:08:02.545Z pid:27006 worker:supervisor     slc strongops
    2015-07-12T14:08:02.546Z pid:27006 worker:supervisor See http://docs.strongloop.com/strong-agent for more information.
    Browse your REST API at http://localhost:3000/explorer
    Web server listening at: http://localhost:3000/
    
    assert.js:92
      throw new assert.AssertionError({
            ^
    AssertionError: options must be an object
        at MySQL.SQLConnector.execute (/var/lib/openshift/55a23e52e0b8cdb70700003f/app-root/runtime/repo/node_modules/loopback-connector-mysql/node_module
    s/loopback-connector/lib/sql.js:391:3)
        at MySQL.find [as all] (/var/lib/openshift/55a23e52e0b8cdb70700003f/app-root/runtime/repo/node_modules/loopback-connector-mysql/node_modules/loopb
    ack-connector/lib/sql.js:1051:8)
        at Function.find (/var/lib/openshift/55a23e52e0b8cdb70700003f/app-root/runtime/repo/node_modules/loopback-datasource-juggler/lib/dao.js:736:34)
        at SharedMethod.invoke (/var/lib/openshift/55a23e52e0b8cdb70700003f/app-root/runtime/repo/node_modules/loopback/node_modules/strong-remoting/lib/s
    hared-method.js:207:17)
        at HttpContext.invoke (/var/lib/openshift/55a23e52e0b8cdb70700003f/app-root/runtime/repo/node_modules/loopback/node_modules/strong-remoting/lib/ht
    tp-context.js:243:12)
        at /var/lib/openshift/55a23e52e0b8cdb70700003f/app-root/runtime/repo/node_modules/loopback/node_modules/strong-remoting/lib/remote-objects.js:475:
    9
        at execStack (/var/lib/openshift/55a23e52e0b8cdb70700003f/app-root/runtime/repo/node_modules/loopback/node_modules/strong-remoting/lib/remote-obje
    cts.js:346:7)
        at /var/lib/openshift/55a23e52e0b8cdb70700003f/app-root/runtime/repo/node_modules/loopback/lib/application.js:329:13
        at /var/lib/openshift/55a23e52e0b8cdb70700003f/app-root/runtime/repo/node_modules/loopback/lib/models/model.js:267:5
        at /var/lib/openshift/55a23e52e0b8cdb70700003f/app-root/runtime/repo/node_modules/loopback/lib/models/acl.js:443:19
    
    npm info loopback-app@0.0.0 Failed to exec start script
    npm ERR! loopback-app@0.0.0 start: `slc run`
    npm ERR! Exit status 8
    npm ERR!
    npm ERR! Failed at the loopback-app@0.0.0 start script.
    npm ERR! This is most likely a problem with the loopback-app package,
    npm ERR! not with npm itself.
    npm ERR! Tell the author that this fails on your system:
    npm ERR!     slc run
    npm ERR! You can get their info via:
    npm ERR!     npm owner ls loopback-app
    npm ERR! There is likely additional logging output above.
    npm ERR! System Linux 2.6.32-504.16.2.el6.x86_64
    npm ERR! command "/var/lib/openshift/55a23e52e0b8cdb70700003f/strongloop//bin/node/node" "/var/lib/openshift/55a23e52e0b8cdb70700003f/strongloop/bin/n
    ode/npm" "start" "-d"
    npm ERR! cwd /var/lib/openshift/55a23e52e0b8cdb70700003f/app-root/runtime/repo
    npm ERR! node -v v0.10.30
    npm ERR! npm -v 1.4.21
    npm ERR! code ELIFECYCLE
    npm ERR!
    npm ERR! Additional logging details can be found in:
    npm ERR!     /var/lib/openshift/55a23e52e0b8cdb70700003f/app-root/runtime/repo/npm-debug.log
    npm ERR! not ok code 0
    
    ==> app-root/logs/haproxy.log <==
    [WARNING] 192/100828 (395134) : Server express/local-gear is DOWN, reason: Layer4 connection problem, info: "Connection refused", check duration: 0ms.
     0 active and 0 backup servers left. 0 sessions active, 0 requeued, 0 remaining in queue.
    [ALERT] 192/100828 (395134) : proxy 'express' has no server available!
    

    感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您的应用需要收听您的openshift IP地址&amp;端口,似乎它仍然试图在代码中侦听localhost:3000,你还应该确保使用mysql环境变量连接到mysql。以下是您应该阅读的几个资源:

https://developers.openshift.com/en/node-js-overview.html https://developers.openshift.com/en/databases-mysql.html