use*_*619 1 mongodb mlab meteor meteor-galaxy
我正在尝试使用以下命令使用流星星系部署我的应用程序
DEPLOY_HOSTNAME=us-east-1.galaxy-deploy.meteor.com meteor deploy icrm.meteorapp.com --settings scalingo.json
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误
MongoError: not authorized on local to execute command { find: "oplog.rs", filter: {}, sort: { $natural: -1 }, projection: { ts: 1 }, limit: 1 } 在日志中
在我的 scalingo.json 中,我设置如下
"galaxy.meteor.com": {
"env": {
"MONGO_URL": "mongodb://username:password@ds137100.mlab.com:37100/icrm",
"MONGO_OPLOG_URL": "mongodb://username:password@ds137100.mlab.com:37100/local?authSource=icrm",
"ROOT_URL": "http://icrm.meteorapp.com/"
}
}
Run Code Online (Sandbox Code Playgroud)
当我访问http://icrm.meteorapp.com/ 我得到
503 Service Unavailable: No healthy endpoints to handle the request.
Run Code Online (Sandbox Code Playgroud)
我知道我在设置 MONGO_OPLOG_URL 时犯了一些错误,我在 MONGO_URL 和 MONGO_OPLOG_URL 中写了相同的用户名和密码,我使用的是免费沙盒版本,请帮我解决这个问题,如果可能,建议我使用免费沙盒版本的解决方案。 ..
非常感谢
听起来您的 mongodb 配置肯定有问题。不幸的是,各种 mongodb 服务提供商之间存在很多差异,但让我与您分享我的设置方式(也许这会以某种方式帮助您)。我确实要注意,我正在从云 linux 服务器(而不是使用 mongodb 服务)管理我自己的 mongodb 实例。
启用安全授权(例如在 mongod.conf)并确保您已经创建了一个管理员用户(您将使用它来创建您的所有其他用户)以及您的meteor 应用程序将用于访问 mongodb 的用户。
首先,您必须创建一个具有正确角色的“管理员”用户才能添加新用户。从 mongo shell 你可以做到这一点。
admin = db.getSiblingDB("admin");
admin.createUser(
{
user: "admin",
pwd: "admin-password",
roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
}
);
Run Code Online (Sandbox Code Playgroud)
然后从 shell 中,以上述用户身份登录并创建您的meteor 应用程序使用的帐户。注意,我meteor_db在这个例子中调用了我的流星应用程序数据库。将此更改为您想要的任何内容。
db.getSiblingDB("admin").auth("admin", "admin-password" );
use meteor_db;
db.createUser(
{
user: "meteor",
pwd: "meteor",
roles: [ { role: "readWrite", db: "meteor_db" } ]
}
);
Run Code Online (Sandbox Code Playgroud)完成后,您需要配置 mongodb 以启用 oplog(流星将用于拖尾)。为此,您必须通过编辑mongod.conf和修改该replication部分来设置复制和 1 个复制集。
replication:
replSetName: rs0
Run Code Online (Sandbox Code Playgroud)
重新启动 mongodb,然后从 mongo shell 启动对新成员的复制(您必须以 root 身份执行此操作)。如果您没有在默认本地主机和端口号上运行 mongodb,请使用您的特定主机名和端口修改以下示例)。
rs.initiate({_id:"rs0", members: [{"_id":0, "host":"127.0.0.1:27017"}]});
Run Code Online (Sandbox Code Playgroud)现在启用了 oplog,您必须创建一个可以访问 oplog 的用户。这是您将用于配置的用户MONGO_OPLOG_URL(由meteor 使用)。在 mongo shell 中,以 admin 用户(上面创建)的身份登录并创建新oplogger用户。
db.getSiblingDB("admin").auth("admin", "admin-password" );
admin = db.getSiblingDB("admin");
admin.createUser(
{
user: "oplogger",
pwd: "oplogger-password",
roles: [ { role: "read", db: "local" } ]
}
);
Run Code Online (Sandbox Code Playgroud)完成所有设置后,您只需要设置您的meteor 环境变量并重新启动您的应用程序。
export MONGO_URL='mongodb://meteor:meteor@<hostname>:<port>/meteor_db'
export MONGO_OPLOG_URL='mongodb://oplogger:oplogger-password@<hostname>:<port>/local?authSource=admin'
Run Code Online (Sandbox Code Playgroud)如果您遇到任何问题或有其他问题,请告诉我。此外,这里有一些额外的资源,当我尝试进行所有这些设置时,我发现它们很有帮助(也许它们也会有所帮助)。
| 归档时间: |
|
| 查看次数: |
7593 次 |
| 最近记录: |