Install MongoDB as a windows service
最近打算尝试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端口,在入站规则里加一条就行了。