我是web开发的新手,我想开始使用一些RoR(使用机车CMS)。
机车要求的事情之一是有Mongodb。我使用homebrew安装以下链接http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/
它安装得很好,但我无法运行它!
当我在终端上输入'mongo'时,我得到以下输出:
"MongoDB shell version: 2.4.3
connecting to: test
Mon May 6 11:12:28.927
JavaScript execution failed:
Error: couldn't connect to server
127.0.0.1:27017 at src/mongo/shell/mongo.js:L112
exception: connect failed"
后台帮助调试(在终端上):
1。当我输入mongod时,我得到以下内容:
"all output going to: /usr/local/var/log/mongodb/mongo.log"
mongodb .log的所有权:
-rw-r--r-- 1 username admin 22133 May 6 11:13 mongo.log
2。当我输入mongod——fork时,我得到以下内容:
about to fork child process, waiting until server is ready for connections.
forked process: 77566
all output going to: /usr/local/var/log/mongodb/mongo.log
ERROR: child process failed, exited with error number 100
3。输入mongod——help会给出以下警告:
* WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
4。我有一个名为data的文件夹(它作为mongodb数据库,这是它应该在哪里?)在根(PATH:/data)数据文件夹的所有权:
"drwxr-xr-x 3 username wheel 102 Apr 23 21:38 data"
5。查看端口是否空闲:lsof -i:27017。我还尝试使用活动监视器检查正在运行的mongo进程,但一无所获!
No output
6。我还试过:mongo——修理。力的帮助!
我已经在这个问题上停留了一段时间,我看过stackoverflow上的大多数回复,并四处寻找解决方案,但到目前为止没有任何帮助!
更新:当我尝试启动mongo shell时,我得到了下面的l来自mongol . Log的日志信息:
5/6/13 1:33:27.616 PM com.apple.launchd:
(org.mongodb.mongod[79133])
open("/private/var/log/mongodb/output.log", ...): Permission denied
所以我为特定的文件夹做了一个chmod777, shell启动了!
虽然我仍然得到一个警告,当它启动为:
Server has startup warnings:
Mon May 6 13:33:27.693 [initandlisten]
Mon May 6 13:33:27.693 [initandlisten]
** WARNING: soft rlimits too low.
Number of files is 256, should be at least 1000
有什么办法可以让这些警告静音吗?
要获得您需要确定故障原因的信息,您需要查看(并为我们发布)/usr/local/var/log/mongodb/mongo.log
在尝试启动时的输出。
然而,最常见的失败原因是缺少默认的数据库路径——在/data/db
。要么创建那个文件夹(不要忘记确保你的用户有读写权限),要么用--dbpath
选项指定一个不同的路径。
UPDATE:正如你已经发现的那样,日志文件上的错误权限可能导致这个问题,就像数据路径上的错误权限一样。
关于警告,您需要的信息在这里:
https://superuser.com/questions/433746/is-there-a-fix-for-the-too-many-open-files-in-system-error-on-os-x-10-7-1只是,虽然,一个警告-你可以运行MongoDB没有这些限制的问题,只要它不是在繁重的负载下。因此,如果这是一个开发环境,除非您计划进行负载测试,否则您应该可以