在 16.04 中確保 mongod 在系統啟動時啟動的正確方法是什麼?

在 16.04 中確保 mongod 在系統啟動時啟動的正確方法是什麼?

我在Ubuntu 16.04中透過軟體中心安裝了MongoDB:

mongodb 1:2.6.10-0ubuntu1

我相信目前包含 MongoDB 2.6.10。

mongod我正在 apache2 localhost 設定上運行一個應用程序,每次系統啟動時都必須手動啟動:

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

相關內容