Запустіть послугу MongoDB як демон SystemD на Ubuntu 15.10


12

MongoDB просто підтримує версії Ubuntu Long Term Support (LTS). Останнє - Ubuntu 14.04 LTS, де процесом init керує власник 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 (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 conf, який я пропав без вісті, 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
...

Тепер ви можете керувати сервісом у процесі init 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. Нічого, що інсталюючі документи не сказали б мені, але у випадку, якщо це корисно!
Том Дж

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

Так, визначення системного блоку є, але воно вимкнено, тому його потрібно ввімкнути для того, щоб він автоматично запускався під час перезавантаження вашого примірника.
stamster
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.