最近打算尝试MongoDB,按照官网方法在windows上安装服务遇到问题。
然后用中文搜到的结果其实不是最佳解决方案,所以觉得有必要写个中文的流程,主要就是个翻译的工作吧。
1、官方文档的命令是
mongod --bind_ip
0.0
.
0.0
--logpath d:
\
mongo
\
logs --logappend --dbpath d:
\
mongo
\
data --directoryperdb --install
2、查看系统服务,找到MongoDB,执行运行,返回1053错误!
这个问题部分中文搜索结果是用vbs脚本替代了windows service,其实再走一步就是彼岸。
3、解决问题
先看看log:
Tue Mar
22
12
:
20
:
04
[initandlisten] MongoDB starting : pid
=
2744
port
=
27017
dbpath
=
D:
\
Data
\
MongoDB
"
--directoryperdb --serviceName MongoDB --install 64-bit
Tue Mar 22 12:20:04 [initandlisten] db version v1.8.0, pdfile version 4.5
Tue Mar 22 12:20:04 [initandlisten] git version: 9c28b1d608df0ed6ebe791f63682370082da41c0
Tue Mar 22 12:20:04 [initandlisten] build sys info: windows (6, 1, 7600, 2, '') BOOST_LIB_VERSION=1_42
Tue Mar 22 12:20:04 [initandlisten] exception in initAndListen std::exception: dbpath (D:\Data\MongoDB " --directoryperdb --serviceName MongoDB --install ) does not exist , terminating
Tue Mar 22 12 : 20 : 04 dbexit:
Tue Mar 22 12 : 20 : 04 [initandlisten] shutdown: going to close listening sockets ...
Tue Mar 22 12 : 20 : 04 [initandlisten] shutdown: going to flush diaglog ...
Tue Mar 22 12 : 20 : 04 [initandlisten] shutdown: going to close sockets ...
Tue Mar 22 12:20:04 [initandlisten] db version v1.8.0, pdfile version 4.5
Tue Mar 22 12:20:04 [initandlisten] git version: 9c28b1d608df0ed6ebe791f63682370082da41c0
Tue Mar 22 12:20:04 [initandlisten] build sys info: windows (6, 1, 7600, 2, '') BOOST_LIB_VERSION=1_42
Tue Mar 22 12:20:04 [initandlisten] exception in initAndListen std::exception: dbpath (D:\Data\MongoDB " --directoryperdb --serviceName MongoDB --install ) does not exist , terminating
Tue Mar 22 12 : 20 : 04 dbexit:
Tue Mar 22 12 : 20 : 04 [initandlisten] shutdown: going to close listening sockets ...
Tue Mar 22 12 : 20 : 04 [initandlisten] shutdown: going to flush diaglog ...
Tue Mar 22 12 : 20 : 04 [initandlisten] shutdown: going to close sockets ...
...
可以看到是解析db路径的地方出了问题,于是又搜了搜英文结果,果然发现了解决方法:
在注册表中找到
HKEY_LOCAL_MACHINE
\
SYSTEM
\
CurrentControlSet
\
Services
\
MongoDB
找到服务命令,把最后的
... --directoryperdb MongoDB --service
改为
... --directoryperdb --serviceName MongoDB --service
再次启动服务,服务正常工作,正常的启动日志是:
Tue Mar
22
12
:
22
:
07
[initandlisten] MongoDB starting : pid
=
3096
port
=
27017
dbpath
=
D:
\
Data
\
MongoDB
64
-bit
Tue Mar 22 12 : 22 : 07 [initandlisten] db version v1 . 8.0 , pdfile version 4.5
Tue Mar 22 12 : 22 : 07 [initandlisten] git version: 9c28b1d608df0ed6ebe791f63682370082da41c0
Tue Mar 22 12 : 22 : 07 [initandlisten] build sys info: windows ( 6 , 1 , 7600 , 2 , '' ) BOOST_LIB_VERSION = 1_42
Tue Mar 22 12 : 22 : 07 [initandlisten] waiting for connections on port 27017
Tue Mar 22 12 : 22 : 07 [websvr] web admin interface listening on port 28017
Tue Mar 22 12 : 22 : 07 [initandlisten] db version v1 . 8.0 , pdfile version 4.5
Tue Mar 22 12 : 22 : 07 [initandlisten] git version: 9c28b1d608df0ed6ebe791f63682370082da41c0
Tue Mar 22 12 : 22 : 07 [initandlisten] build sys info: windows ( 6 , 1 , 7600 , 2 , '' ) BOOST_LIB_VERSION = 1_42
Tue Mar 22 12 : 22 : 07 [initandlisten] waiting for connections on port 27017
Tue Mar 22 12 : 22 : 07 [websvr] web admin interface listening on port 28017
...
路径正确了。
5、另外不要忘了还要在Windows 2008 R2的防火墙中打开27017和28017端口,在入站规则里加一条就行了。