【问题标题】:Hosting a keystonejs app with openshift使用 openshift 托管 keystonejs 应用程序
【发布时间】:2014-08-03 10:29:17
【问题描述】:

尝试在 openshift 上托管我的 keystone.js 应用程序时,我一直收到 503 但日志中没有错误,有没有人成功地用他们托管过 keystone 应用程序?在 localhost 上一切正常。

我正在使用全新安装的 keystone.js,没有博客或 cloudinary。

【问题讨论】:

    标签: openshift keystonejs


    【解决方案1】:

    您提供的信息很少,无法给出明确的答案。您将哪些选项传递给keystone.init()?你在用dotenv吗?如果是这样,你在那里设置什么?您是否使用rhc set-env 设置了任何环境变量?

    我之所以问,是因为 OpenShift 上的 Node.js 应用程序中的 503 错误的常见(尽管不是唯一的)罪魁祸首是覆盖 OpenShift 的端口号。 Keystone 在查看 process.env.OPENSHIFT_INTERNAL_PORT 之前查看 process.env.PORT。因此,如果您在.envrhc set-env 上设置了PORT,它将优先于OPENSHIFT_INTERNAL_PORT

    我在KeystoneJS Google Group 上遇到了类似的问题。在另一种情况下,开发人员在他的应用程序中添加了一个 MONGODB 墨盒,但没有在 Keystone 中设置墨盒的连接字符串。

    如果您也是这种情况,您需要在Keystone.init() 或使用Keystone.set('mongo', 'connection_sring') 中设置Keystone mongo 选项。创建墨盒时,您会获得一个 url 和一些凭据。 OpenShit 在环境变量中将这些传递给您的应用程序。您可以按如下方式构建 mongo 连接字符串:

    var connectionString = process.env.OPENSHIFT_MONGODB_DB_USERNAME + ":" +  process.env.OPENSHIFT_MONGODB_DB_PASSWORD + "@" + process.env.OPENSHIFT_MONGODB_DB_HOST + '/' + process.env.OPENSHIFT_APP_NAME;
    
    keystone.set('mongo', connectionString);
    
    or 
    
    keystone.init({
      ...
      mongo: connectionString,
      ...
    });
    

    或者你可以使用rhc set-env来设置MONGO环境变量如下:

    rhc set-env MONGO=http://{username}:{password}@{connection url}/{dbname} -a your_app_name
    

    上面的connection url 是您在创建磁带时从 OpenShift 获得的。如果看起来像一个标准的 MONGODB url(例如mongodb://127.6.85.129:27017/)。

    这些只是我最好的猜测,因为你的问题在细节上有点薄。您可能想发布一些更具体的信息,以便我们更准确地评估您的问题。

    【讨论】:

    • 感谢您的回复,我不知道该放什么我只是使用没有 cloudinary 的 keystone.js 的新副本
    • 我认为问题在于连接到 mongo,我添加了 mongo 墨盒,但不确定是否需要在任何地方指定数据库凭据,或者 open shift 是否自动执行此操作。
    • 很酷,谢谢,我根据另一个示例稍微更改了字符串,但它可以工作。 if(process.env.OPENSHIFT_MONGODB_DB_PASSWORD){ console.log('if'); var 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; keystone.set('mongo', connection_string); }
    • 不客气!感谢更新。我会更新我的答案,以便将来的其他人可以从中受益。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 1970-01-01
    相关资源
    最近更新 更多