Запустіть послугу 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.