事实证明,部署到某些通用VPS与meteor deploy
的体验非常不同。我几乎已经把它搞砸了,但作为一个Mongo n00b,我遇到了一件事:OpLog拖尾。这是迄今为止的信息:
Distro:Scientific Linux发行版6.4(Carbon)
$ mongod --version
db version v2.4.6
$ node --version
v0.10.33
我正在使用Meteor 1.0。和乘客4.0.53。
好消息是更改到deploy目录(我作为一个bundle部署)并执行:
$ node bundle/main.js
让我在端口3000上访问应用程序,但是在开发模式下,因此不会拖尾OpLog(我认为)。
所以在经过一系列的开始之后,我用这个来操纵乘客:
<VirtualHost *:80>
ServerName sc.mywebapp.com
DocumentRoot /home/deploy/meteor_apps/mywebapp/public
PassengerStickySessions On
SetEnv MONGO_URL mongodb://0.0.0.0:27017/meteor
SetEnv MONGO_OPLOG_URL mongodb://0.0.0.0:27017/local
SetEnv ROOT_URL http://sc.mywebapp.com
# Set these ONLY if your app is a Meteor bundle!
PassengerAppType node
PassengerStartupFile bundle/main.js
PassengerAppRoot /home/deploy/meteor_apps/mywebapp
</VirtualHost>
我不得不将这些添加到裸机httpd.conf:
LoadModule passenger_module /usr/local/rvm/gems/ruby-1.9.3-p484/gems/passenger-4.0.53/buildout/apache2/mod_passenger.so
<IfModule mod_passenger.c>
PassengerRoot /usr/local/rvm/gems/ruby-1.9.3-p484/gems/passenger-4.0.53
PassengerDefaultRuby /usr/local/rvm/wrappers/ruby-1.9.3-p484/ruby
PassengerNodejs /usr/local/bin/node
</IfModule>
现在好消息是Passenger正在尝试。但由于它处于生产模式,它想要关闭OpLog。我收到以下错误:
Error: $MONGO_OPLOG_URL must be set to the 'local' database of a Mongo replica set
所以,记住我是MongoDB N00b,我需要做什么才能获得Mongo副本集的本地数据库?这将是一个小型,低流量的网站 - 它可能会增长,但我只是想让我的初始部署。
有什么神奇的步骤?
谢谢!
答案 0 :(得分:6)
神奇的步骤是拥有正确的用户权限,并在oplog连接字符串中提供authSource
参数。
创建您的用户(MongoDB 2.4):
$ mongo -u YourExistingAdminUserName -p YourExistingAdminPassword 127.0.0.1/admin
cluster:PRIMARY> db.addUser({user: "oplogger", pwd: "PasswordForOplogger", roles: [], otherDBRoles: {local: ["read"]}})
创建您的用户(MongoDB 2.6 +):
$ mongo -u YourExistingAdminUserName -p YourExistingAdminPassword 127.0.0.1/admin
cluster:PRIMARY> db.createUser({user: "oplogger", pwd: "PasswordForOplogger", roles: [{role: "read", db: "local"}]})
然后设置您的oplog网址:
MONGO_OPLOG_URL=mongodb://oplogger:PasswordForOplogger@127.0.0.1/local?authSource=admin