我在 Ubuntu 16.04 中通过软件中心安装了 MongoDB:
mongodb 1:2.6.10-0ubuntu1
Run Code Online (Sandbox Code Playgroud)
我相信这当前包含 MongoDB 2.6.10。
我在 apache2 localhost 设置上运行一个应用程序,mongod每次系统启动时都必须手动启动:
mongod
Run Code Online (Sandbox Code Playgroud)
我希望它自动启动。
我遇到了两种主要方法来做到这一点:
update-rc.d mongodb defaults
Run Code Online (Sandbox Code Playgroud)
来自:https : //askubuntu.com/a/89914/367134
这导致:
update-rc.d mongodb defaults
insserv: fopen(.depend.stop): Permission denied
Run Code Online (Sandbox Code Playgroud)
但这并没有产生错误:
sudo update-rc.d mongodb defaults
Run Code Online (Sandbox Code Playgroud)
我还看到了一些编辑“MongoDB 配置文件”的参考资料,但我不确定这是指什么,因为我可以在多个位置看到配置文件:
/etc/mongodb.conf /etc/init/mongodb.conf /etc/init.d/mongodb而且,一旦在正确的文件中,我不确定在那里更改什么。
在/etc/init/mongodb.conf我可以看到:
start on runlevel [2345]
stop on runlevel [!2345]
Run Code Online (Sandbox Code Playgroud)
确保mongod在 16.04 系统启动时启动的正确方法是什么?
我一直在阅读this,并查看/etc/rc2.d并可以看到:
S01mongodb@ --> /etc/init.d/mongodb
Run Code Online (Sandbox Code Playgroud)
更新:
运行后建议:
sudo systemctl enable mongodb
然后重新启动,运行systemctl status mongodb返回:
* mongodb.service - An object/document-oriented database
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
Active: failed (Result: exit-code) since Mon 2016-04-18 23:42:28 AEST; 7min ago
Docs: man:mongod(1)
Process: 655 ExecStart=/usr/bin/mongod --config /etc/mongodb.conf (code=exited, status=100)
Main PID: 655 (code=exited, status=100)
Apr 18 23:42:27 me-comp systemd[1]: Started An object/document-oriented database
Apr 18 23:42:28 me-comp systemd[1]: mongodb.service: Main process exited, code=exited, status=100/n/a
Apr 18 23:42:28 me-comp systemd[1]: mongodb.service: Unit entered failed state.
Apr 18 23:42:28 me-comp systemd[1]: mongodb.service: Failed with result 'exit-code'.
Run Code Online (Sandbox Code Playgroud)
权限问题排查
/var/lib/mongodb= drwxr-xr-x mongodb mongodb.
/var/log/mongodb= drwxr-xr-x mongodb mongodb.
/var/log/mongodb/mongodb.log= -rw-r--r-- mongodb nogroup.
/var/log/mongodb/mongod.log= -rw-r--r-- mongodb mongodb.
/data/db/mongod.lock=-rwxrwxr-x me me和 0 字节。
/data= drwxr-xr-x root root.
/data/db= drwxr-xr-x me root.
配置文件内容
/etc/mongodb.conf:
# Where to store the data.
dbpath=/var/lib/mongodb
#where to log
logpath=/var/log/mongodb/mongodb.log
logappend=true
bind_ip = 127.0.0.1
#port = 27017 ...
Run Code Online (Sandbox Code Playgroud)
安装
这是我最终使用的方法(来自用户 Adam C 的评论:使用更新版本的 mongodb)。它对我有用,但我不是这方面的权威。
https://askubuntu.com/a/757385/367134
然后我不得不制作一个服务文件,请参阅:
https://askubuntu.com/a/694226/367134
并从以下位置编辑该服务文件中的路径:
/etc/mongodb.conf
Run Code Online (Sandbox Code Playgroud)
到:
/etc/mongod.conf
Run Code Online (Sandbox Code Playgroud)
然后使用以下命令在系统启动时启动 mongodb:
sudo systemctl enable mongodb
Run Code Online (Sandbox Code Playgroud)
看:
现在 mongodb 在 16.04 系统启动时启动。
卸载旧的 MongoDB
然而,在我这样做之前,我必须删除现有的安装和目录,我这样做(主要来自https://askubuntu.com/a/497144/367134 的步骤):
# go to /etc/apt/sources.list.d and remove any mongodb lists, then:
# sanity check - see what is installed
sudo dpkg -l | grep mongo
# remove all packages
sudo apt-get remove mongodb* --purge
sudo apt-get autoremove
# remove old directories
sudo rm -r -f /var/lib/mongodb/
sudo rm -r -f /var/log/mongodb/
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54245 次 |
| 最近记录: |