![在 16.04 中確保 mongod 在系統啟動時啟動的正確方法是什麼?](https://rvso.com/image/1087117/%E5%9C%A8%2016.04%20%E4%B8%AD%E7%A2%BA%E4%BF%9D%20mongod%20%E5%9C%A8%E7%B3%BB%E7%B5%B1%E5%95%9F%E5%8B%95%E6%99%82%E5%95%9F%E5%8B%95%E7%9A%84%E6%AD%A3%E7%A2%BA%E6%96%B9%E6%B3%95%E6%98%AF%E4%BB%80%E9%BA%BC%EF%BC%9F.png)
我在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
看:
現在 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