确保“mongod”在 16.04 系统启动时启动的正确方法是什么?

确保“mongod”在 16.04 系统启动时启动的正确方法是什么?

我通过 Ubuntu 16.04 中的软件中心安装了 MongoDB:

mongodb 1:2.6.10-0ubuntu1

我相信目前包含 MongoDB 2.6.10。

我在 apache2 localhost 设置上运行一个应用程序,并且mongod每次系统启动时都必须手动启动:

mongod

我希望它自动启动。

我遇到了两种主要方法可以实现此目的:

update-rc.d mongodb defaults

从: https://askubuntu.com/a/89914/367134

结果是:

update-rc.d mongodb defaults
insserv: fopen(.depend.stop): Permission denied

但这并没有产生错误:

sudo update-rc.d mongodb defaults

我还看到了一些关于编辑“MongoDB 配置文件”的参考,但我不确定这指的是什么,因为我可以在多个位置看到配置文件:

  • /etc/mongodb.conf
  • /etc/init/mongodb.conf
  • /etc/init.d/mongodb

而且,一旦进入正确的文件,我就不确定要在其中进行什么更改。

/etc/init/mongodb.conf可以看到:

start on runlevel [2345]
stop on runlevel [!2345]

mongod在 16.04 中 确保系统启动时启动的正确方法是什么?

我一直在读,并查看/etc/rc2.d并可以看到:

S01mongodb@                       --> /etc/init.d/mongodb

更新:

运行建议后:

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'.  

权限故障排除

/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 ...

答案1

安装

这是我最终使用的方法(来自用户 Adam C 的评论:使用更新版本的 mongodb)。对我来说,这个方法很管用,但我不是这方面的专家。

https://askubuntu.com/a/757385/367134

然后我必须创建一个服务文件,请参阅:

https://askubuntu.com/a/694226/367134

并从以下位置编辑该服务文件中的路径:

/etc/mongodb.conf 

到:

/etc/mongod.conf

然后使用以下命令使 mongodb 在系统启动时启动:

sudo systemctl enable mongodb

看:

https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units

现在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/

答案2

在开发过程中,有时您可能还想要相反的东西:拥有多个单独启动的本地可分离实例,而不是一个全局安装...

mongod --dbpath ./mongo_db_data/ --logpath ./mongo_logs/mongodb.log --port 12345

答案3

对我来说工作只是做sudo systemctl enable mongod

答案4

对我来说,这是由于数据库路径的权限错误造成的。只是

chown mongodb:mongodb /var/lib/mongodb

相关内容