![Как правильно обеспечить запуск `mongod` при запуске системы в версии 16.04?](https://rvso.com/image/1087117/%D0%9A%D0%B0%D0%BA%20%D0%BF%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D1%8C%D0%BD%D0%BE%20%D0%BE%D0%B1%D0%B5%D1%81%D0%BF%D0%B5%D1%87%D0%B8%D1%82%D1%8C%20%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%20%60mongod%60%20%D0%BF%D1%80%D0%B8%20%D0%B7%D0%B0%D0%BF%D1%83%D1%81%D0%BA%D0%B5%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B%20%D0%B2%20%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D0%B8%2016.04%3F.png)
Я установил MongoDB через центр приложений в Ubuntu 16.04:
mongodb 1:2.6.10-0ubuntu1
Я считаюэтотв настоящее время содержит MongoDB 2.6.10.
Я запускаю приложение на локальном хосте Apache2 и вынужден запускать его 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
видеть:
Теперь 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