Запустите сервис MongoDB как демон SystemD в Ubuntu 15.10


12

MongoDB просто поддерживает версии Ubuntu Long Term Support (LTS). Последним является Ubuntu 14.04 LTS, где процессом инициализации управляет компания Upstart, принадлежащая Canonical. Однако я использую Ubuntu 15.10 со стандартным процессом инициализации Linux в SystemD. Поэтому я не могу запустить сервис MongoDB при загрузке.

Когда я читаю статус службы или пытаюсь запустить ее, отображается сообщение «Не удалось загрузить»:

> systemctl status mongod
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
> sudo systemctl start mongod
Failed to start mongod.service: Unit mongod.service failed to load: No such file or directory.

Я использую официальный выпуск MongoDB 3.2 Community Edition (mongodb-org) с https://docs.mongodb.org/master/tutorial/install-mongodb-on-ubuntu/, а не метапакет MongoDB 2.6 (mongodb) из Ubuntu. репозиторий.

> sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
> echo "deb http://repo.mongodb.org/apt/ubuntu trusty/mongodb-org/3.2 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.2.list
> sudo apt-get update
> sudo apt-get install -y mongodb-org

Кто-то знает, как запустить MongoDB с SystemD?


1
моей проблемой был пользовательский конфигурационный файл, который не разветвлял mongod, вот фрагмент из конф. mongod по умолчанию, который мне не хватало, processManagement: fork: true pidFilePath: /var/run/mongod.pid
Pykler

Ответы:


25

Мне удалось запустить сервис MongoDB с SystemD при загрузке:

Я удалил официальный метапакет (mongodb-org) v3.2, затем установил метапакет (mongodb) v2.6 из репозитория Ubuntu:

> sudo apt-get remove mongodb-org
> sudo apt-get install mongodb

Создайте файл конфигурации службы, как показано ниже:

> cd /lib/systemd/system
> sudo touch mongodb.service
> sudo nano mongodb.service
[Unit]
Description=An object/document-oriented database
Documentation=man:mongod(1)
After=network.target

[Service]
User=mongodb
Group=mongodb
ExecStart=/usr/bin/mongod --quiet --config /etc/mongodb.conf

[Install]
WantedBy=multi-user.target

Проверьте в списке, включена ли служба или отключена, используя команду ниже:

> systemctl list-unit-files --type=service
...
mongodb.service             disabled
...

Если он отключен или отсутствует в списке, включите его:

> sudo systemctl enable mongodb.service

Проверить снова:

> systemctl list-unit-files --type=service 
...
mongodb.service             enabled
...

Теперь вы можете управлять службой в процессе инициализации SystemD:

> systemctl status mongodb
> sudo systemctl stop mongodb
> sudo systemctl start mongodb
> sudo systemctl restart mongodb

Наслаждайтесь!


Обратитесь к askubuntu.com/a/617869/43344 за указателем на части определения службы, которые вы пропустили. Также обратите внимание, что единицы обслуживания, поставленные и написанные местным администратором, не должны входить /lib.
JdeBP

1
Этот сервисный отдел был написан Canonical, а не местным администратором, поэтому они должны находиться в /lib. Части определения сервиса достаточно хороши для запуска сервиса, дополнительные настройки не оказывают существенного влияния, поэтому они считаются дополнительными. Если вы добавите PIDFile=/var/run/mongodb/mongod.pidстроку и runинструкцию в ExecStart=строке, вы получите ошибку, потому что я использую метапакет (mongodb) 2.6, а не метапакет (mongodb-org) 3.2.
Фернандо Сантуччи

1
Почему проголосовали, я проголосовал. Я также столкнулся с подобной проблемой, и этот ответ помог, спасибо.
Тянь-До

Это был очень полезный переход с Ubuntu 14 на 18, мое единственное добавление состояло в том, что мне нужно было воссоздать каталоги данных и журналов и chownих, прежде чем mongod запустится через systemctl. Ничего, что установочные документы не сказали бы мне, но в случае, если это полезно!
Том J Ноуэлл

6

При установке по умолчанию из репозитория MongoDB, для автоматического запуска службы mongod все, что вам нужно сделать, это включить службу system.d:

systemctl enable mongod.service(обратите внимание на название сервиса mongo d , а не mongodb )

ПРИМЕЧАНИЕ: это тестируется как на Debian / GNU Jessie 8.x с systemd, так и на Ubuntu Xerus 16.04 LTS.


Это относится и к Ubuntu Xerus 16.04 LTS. После установки из официального репо, вам нужно включить системный сервисный модуль! Я только что подтвердил это с установкой другого экземпляра ... :)
Stamster

1
Файл присутствует в /lib/systemd/system/mongod.serviceмоем Ubuntu 16.04
Jyotman Singh

Да, определение модуля systemd есть, но оно отключено, поэтому вам нужно включить его, чтобы он автоматически запускался при каждой перезагрузке вашего экземпляра.
stamster
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.