2016-12-14 52 views
1

我试图在谷歌云上部署我的Meteor React应用,但是当我尝试部署它时,出现错误,说明需要指定MONGO_URL。我建立我的流星应用程序,并cd到我的包文件夹,我在那里gcloud app deploy。这里是我的package.json流星对Gcloud作出反应

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

我怎样才能找到我的流星芒戈用户名和密码。运行普通流星并没有要求我输入用户名和密码。这里是我的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: '{}' 

我不知道该怎么把为MONGO_URL和ROOT_URL如果我在gcloud部署。另外我有我的项目的设置文件。是否应该在app.yaml的METER_SETTINGS下进行?我很抱歉询问太多的问题,但这是我第一次处理gcloud :)

回答

2

这个问题有点老,但它仍然从谷歌获得一些意见,所以让我们按部分回答,首先你需要了解流星在开发和生产中与MongoDB进行交互。当您编写应用程序时,只需执行meteor run即可实现所有功能,因为Meteor部署了一个内部MongoDB。这不建议用于真正的生产用途,并且在任何基于容器的架构下(如Docker,Google App Engine,Heroku等)都不适用。

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

Google Cloud Launcher Overview

我建议Bitnami的一个,这是更容易配置,如果你刚刚开始。

Bitnami MongoDB - No replication

MongoDB instance details

谷歌会自动创建一个实例,你会得到一个root用户名和密码,旁边一个公共IP地址连接到该实例。

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

# Use this template for the command 
mongo "mongodb://root:[email protected]_ADDRESS/" --authenticationDatabase admin 

# For example, with sample values 
mongo "mongodb://root:[email protected]/" --authenticationDatabase admin 

现在,创建流星新用户到新创建的数据库连接。永远不要给它root凭据,它不会工作,并且不安全。例如,将数据库命名为myapp

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

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

mongo "mongodb://meteor_app:[email protected]_ADDRESS/myapp" 

如果一切正常,你现在有你的MONGO_URL。

# Put this in the app.yaml file, env variables sections 
MONGO_URL: "mongodb://meteor_app:[email protected]_ADDRESS/myapp" 
+0

谢谢。我切换到mongoAtlas和aws – user2646559

+0

太好了,如果您同意该解决方案,您应该接受它,因此问题将被标记为已解决。 –

+0

我还没有尝试过您的解决方案,但如果您100%确定,我会接受它 – user2646559