Запуск mongodb на ubuntu 16.04 LTS
Как я могу запустить Mongodb, как сервис, на Ubuntu 16.04 LTS?
Несколько дней назад я обновил свой сервер до Ubuntu 16.04. Я заметил, что моя служба MongoDB не запускается при перезагрузке.
Попытка использовать
sudo initctl start mongod
Не трюк.
У кого-нибудь есть идея, как это решить?
Ответы
Ответ 1
Любой, кто обновил или установил Ubuntu 16.04 (также известный как Ubuntu Xenial xerus), заметил, что некоторые из старых служб перестали работать.
Эта проблема известна из версии 15.04, но я остановлюсь на вышеупомянутой версии.
Таково было мое дело с MongoDB. Короче говоря, Ubuntu перешел от выскочки к systemd. Одним из распространенных решений этих проблем является переход на выскочку. Я не рассматриваю этот вариант как реальное решение, конечно, не для долгосрочного.
Реальное решение (IMHO) к проблеме состоит в том, чтобы написать systemd script, который начнет MongodDB. К сожалению, парни MongoDB еще не поставили его.
Так что мне пришлось писать один с нуля. Чтобы создать свой собственный, выполните следующие действия:
- переключиться на использование root
sudo su
или используйте sudo для всех следующих шагов.
-
создать службу script (в этом примере имя службы - Mongodb)
nano /lib/systemd/system/mongodb.service
-
Содержимое файла должно быть
[Unit]
Description=MongoDB Database Service
Wants=network.target
After=network.target
[Service]
ExecStart=/usr/bin/mongod --config /etc/mongod.conf
ExecReload=/bin/kill -HUP $MAINPID
Restart=always
User=mongodb
Group=mongodb
StandardOutput=syslog
StandardError=syslog
[Install]
WantedBy=multi-user.target
Вы также можете скачать файл здесь:
mongodb.service
Вот краткое описание важных полей:
ExecStart - Выполняется ли команда. Mongo устанавливает себя под /usr/bin, а файл конфигурации записывается в /etc
Пользователь - uid процесса mongod.
Группа - Гид процесса mongod. Обратите внимание, что пользователь и группа создаются установкой.
Теперь, чтобы запустить mongodb:
sudo systemctl start mongodb
Чтобы остановить использование службы mongodb:
sudo systemctl stop mongodb
Чтобы включить mongodb при запуске
sudo systemctl enable mongodb.service
Если вам нужно обновить службы, используйте:
sudo systemctl daemon-reload
Ответ 2
Последняя версия MongoDB делает большинство вещей, кроме одной на данный момент.
После установки MongoDB
на Ubuntu 16.04.x
выполните команды следующим образом:
$ sudo systemctl enable mongod.service
$ sudo systemctl daemon-reload
Теперь, скорее всего, mongod
запускается при каждой загрузке автоматически.
Это решение также работает в случае получения этой ошибки:
Не удалось запустить mongod.service: модуль mongod.service не найден.
После запуска приведенных выше команд начинают работать следующие команды:
$ sudo service mongod start
$ mongo
Точно так же все установленные службы должны быть включены для запуска.
Например, после установки Ops Manager (a.k.a MMS) в документации сказано, что нужно выполнить команду ниже.
$ sudo systemctl start mongodb-mms.service
Скорее всего, Ubuntu не запускает службу. Потому что он еще не включен. Чтобы включить его, просто запустите команду ниже:
$ sudo systemctl enable mongodb-mms.service
$ sudo systemctl daemon-reload
Затем попробуйте запустить службу:
$ sudo systemctl enable mongodb-mms.service
Это все...
Ответ 3
Для людей, которые хотят свежие установки
Я боролся с этим в течение 1 часа. Затем я нашел эту страницу
Установка выполняется так же просто:
sudo apt-get update
sudo apt-get install mongodb
Затем, чтобы проверить, все ли работает:
sudo service mongodb status
Сообщите мне, если это сработает для вас!
Ответ 4
Пакеты для 3. 2+ содержат сценарии upstart.
Сначала следуйте официальным инструкциям по установке:
# If you installed the ubuntu package, remove it, if not skip to key import
sudo apt-get remove mongodb
sudo apt-get autoremove
# import key
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
# add trusty repos
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
# update apt
sudo apt-get update
# install the package
sudo apt-get install -y mongodb-org
Затем снимите маску с задания mongodb.service
(и включите, и запустите его). Я полагаю, что это было замаскировано, потому что пакет также включает в себя новые рабочие места, поэтому вы не хотели бы, чтобы они оба запускались. В нашем случае, однако, это именно то, что мы хотим.
sudo systemctl unmask mongodb
sudo service mongod start
Ссылки:
соответствующий вопрос JIRA
связанный вопрос на Ask Ubuntu
Ответ 5
sudo systemctl start mongod
это то, что у меня работало в Ubuntu Linux 16.04