node.js - Gcloud 上的 Meteor react

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

我正在尝试在 Google 云上部署我的 Meteor React 应用程序,但是当我尝试部署它时,我收到错误消息,指出需要指定 MONGO_URL。我构建了meteor应用程序并cd到我的包文件夹中,我在其中进行gcloud应用程序部署。这是我的 package.json

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

如何找到我的 Meteor mongo 用户名和密码。运行常规 meteor 不会询问我的用户名和密码。这是我的 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 :)

最佳答案

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

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

Google Cloud Launcher Overview

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

Bitnami MongoDB - No replication

MongoDB instance details

Google 将自动创建一个实例,并向您提供 root 用户名和密码,以及用于连接到该实例的公共(public) 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"

关于node.js - Gcloud 上的 Meteor react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41136432/

相关文章:

node.js - 在 2 个不同的字段中搜索值 mongodb + node.js

python - 如何定义分割给定 url 的方法(在 Google 应用程序引擎的 python webapp2 中)

python - 使用 Google App Engine 发布订阅

node.js - Node.js 0.4 中的最大递归深度

node.js - 从同一 Mongodb 集合中的坐标数组创建 GeoJson

node.js - express-session - session id 和 connect.sid 之间的区别?

c# - MongoDB C# - 不调用 ISupportInitialize 方法

java - 如何从google appengine项目获取代码?

javascript - 如果数据的格式略有损坏,是否仍然可以确定其文件类型?

sql - node.js SQL 插入数组