【问题标题】:Meteor react on Gcloud流星对 Gcloud 的反应
【发布时间】:2017-04-29 10:03:31
【问题描述】:

我正在尝试在 Google 的云上部署我的 Meteor React 应用程序,但是当我尝试部署它时,我收到错误消息,指出需要指定 MONGO_URL。我构建了我的流星应用程序并 cd 到我做 gcloud app deploy 的捆绑文件夹。这是我的 package.json

{
    "private": true,
    "scripts": {
        "start": "node main.js",
        "install": "(cd programs/server && npm install)"
    },
    "engines": {
        "node": "6.6.0"
    }
}

如何找到我的流星 mongo 用户名和密码。运行常规流星并没有询问我的用户名和密码。这是我的 app.yaml

runtime: nodejs
env: flex
threadsafe: true
automatic_scaling:
    max_num_instances: 1
env_variables:
    MONGO_URL: 'mongodb://[user]:[pass]@[host]:[port]/[db]'
    ROOT_URL: 'https://...'
    METEOR_SETTINGS: '{}'

如果我在 gcloud 上部署,我不知道应该为 MONGO_URL 和 ROOT_URL 放置什么。我也有我的项目的设置文件。它应该放在 app.yaml 中的 METER_SETTINGS 下吗?我很抱歉问了太多问题,但这是我第一次与 gcloud 打交道 :)

【问题讨论】:

    标签: node.js mongodb google-app-engine meteor gcloud


    【解决方案1】:

    这个问题有点老了,但是谷歌还是有一些观点的,所以我们分部分回答,首先你需要了解 Meteor 在开发和生产中是如何与 MongoDB 交互的。当您编写应用程序时,只需执行 meteor run 即可完成所有工作,因为 Meteor 部署了一个内部 MongoDB。不建议将其用于实际生产用途,并且在任何基于容器的架构(例如 Docker、Google App Engine、Heroku 等)下都无法正常工作。

    鉴于此,您需要在基于 MongoDB 的 Google Compute Engine 中部署一个单独的实例。谷歌已经准备好在谷歌云启动器中启动它们,只需搜索“MongoDB”。

    我推荐 Bitnami 的,如果你刚刚开始,它更容易配置。

    Google 将自动创建一个实例,您将获得一个 root 用户名和密码,以及一个用于连接到该实例的公共 IP 地址。

    运行以下命令从终端访问 Mongo:

    # Use this template for the command
    mongo "mongodb://root:PASSWORD@IP_ADDRESS/" --authenticationDatabase admin
    
    # For example, with sample values
    mongo "mongodb://root:8sdjkfh8876@127.0.0.1/" --authenticationDatabase admin
    

    现在,为 Meteor 创建一个新用户以连接新创建的数据库。永远不要给它root 凭据,它不起作用而且不安全。例如,将数据库命名为myapp

    use myapp;
    db.createUser({
      user: "meteor_app",
      pwd: "A_SECURE_PASSWORD",
      roles: [ "readWrite", "dbAdmin" ]
    })
    

    现在,您退出此连接并测试您的新用户。

    mongo "mongodb://meteor_app:A_SECURE_PASSWORD@IP_ADDRESS/myapp"
    

    如果一切正常,您现在就有了 MONGO_URL。

    # Put this in the app.yaml file, env variables sections
    MONGO_URL: "mongodb://meteor_app:A_SECURE_PASSWORD@IP_ADDRESS/myapp"
    

    【讨论】:

    • 谢谢。我切换到 mongoAtlas 和 aws
    • 太好了,如果您同意解决方案,您应该接受它,这样问题就会被标记为已解决。
    • 我没有尝试过你的解决方案,但如果你 100% 确定,我会接受它
    • 我在生产环境中将它用于 3 个不同的应用程序,以及主/开发工作流程。很确定它正在工作:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-04
    • 1970-01-01
    相关资源
    最近更新 更多