Bis*_*opZ 53 ubuntu service mongodb
我在Ubuntu上运行MongoDB 2.2,如果我运行:
sudo mongod
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,它无法找到/ data/db,这不是数据库所在的位置.在mongod.conf中,数据库路径被指定为Ubuntu 10gen缺省值/var/lib/mongodb,这是db所在的位置.好像mongod没有找到conf文件.所以当我跑:
sudo mongod -f /etc/mongodb.conf
Run Code Online (Sandbox Code Playgroud)
服务器启动正常,输出记录到日志文件中:/var/log/mongodb/mongodb.log.一切都很开心.我可以切换到另一个shell,登录mongo shell,查看数据库并运行查询.
所以,我取消了,并尝试作为服务运行:
> sudo status mongodb
mongodb stop/waiting
> sudo start mongodb
mongodb start/running, process 10468
Run Code Online (Sandbox Code Playgroud)
到目前为止看起来不错,但是mongo服务器没有启动.跑另一个:
> sudo status mongodb
mongodb stop/waiting
> mongo
MongoDB shell version: 2.2.0
connecting to: test
Sat Sep 1 19:07:43 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
exception: connect failed
Run Code Online (Sandbox Code Playgroud)
"test"不是正确的数据库,日志文件中没有任何内容.
我不知道可能出现什么问题.我检查了新贵脚本,看起来很好./etc/init/mongodb.conf运行:
mongodb --exec /usr/bin/mongod -- --config /etc/mongodb.conf
Run Code Online (Sandbox Code Playgroud)
Ada*_*ord 105
好的,这一切都取决于权限,但让我们一步一步来看.当你运行sudo mongod它根本不加载配置文件时,它实际上从编译的默认值开始 - 端口27017,数据路径/data/db等 - 这就是为什么你得到关于无法找到该文件夹的错误."Ubuntu默认值"仅在您将其指向配置文件时使用(如果您开始使用服务命令,则在幕后为您完成).
接下来你像这样运行它:
sudo mongod -f /etc/mongodb.conf
Run Code Online (Sandbox Code Playgroud)
如果以前没有问题,那么现在就会出现 - 您已经使用普通配置(指向通常的dbpath和日志)作为root用户运行该过程.这意味着现在将在用户正常的MongoDB文件夹中存在许多文件:group of root:root.
当您尝试再次将其作为普通服务启动时,这将导致错误,因为mongodb用户(服务将尝试运行)将无权访问这些root:root文件,最值得注意的是,它可能无法写入日志文件以获取任何信息.
因此,要将其作为普通服务运行,我们需要修复这些权限.首先,确保MongoDB当前没有以root用户身份运行,然后:
cd /var/log/mongodb
sudo chown -R mongodb:mongodb .
cd /var/lib/mongodb
sudo chown -R mongodb:mongodb .
Run Code Online (Sandbox Code Playgroud)
这应该解决它(假设用户:组是mongodb:mongodb),虽然它可能最好用一个ls -al或类似的验证来确认.完成此操作后,您应该能够再次成功启动服务.
nel*_*nic 38
首先确认mongodb用户/组有权写入数据目录和日志文件:
$ sudo chown -R mongodb:mongodb/var/lib/mongodb /.
$ sudo chown -R mongodb:mongodb /var/log/mongodb.log
使用以下命令启动MongoDB 作为守护程序(后台进程):
$ mongod --fork --dbpath/var/lib/mongodb/--smallfiles --logpath /var/log/mongodb.log --logappend
要关闭MongoDB,请进入Mongo CLI,访问admin并发出shutdown命令:
$ ./mongo
>使用管理员
> db.shutdownServer()
参考:http://www.mongodb.org/display/DOCS/Starting+and+Stopping+Mongo
| 归档时间: |
|
| 查看次数: |
79422 次 |
| 最近记录: |