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