Подтвердить что ты не робот

Запуск mongodb на ubuntu 16.04 LTS

Как я могу запустить Mongodb, как сервис, на Ubuntu 16.04 LTS? Несколько дней назад я обновил свой сервер до Ubuntu 16.04. Я заметил, что моя служба MongoDB не запускается при перезагрузке. Попытка использовать

sudo initctl start mongod

Не трюк. У кого-нибудь есть идея, как это решить?

4b9b3361

Ответ 1

Любой, кто обновил или установил Ubuntu 16.04 (также известный как Ubuntu Xenial xerus), заметил, что некоторые из старых служб перестали работать. Эта проблема известна из версии 15.04, но я остановлюсь на вышеупомянутой версии.

Таково было мое дело с MongoDB. Короче говоря, Ubuntu перешел от выскочки к systemd. Одним из распространенных решений этих проблем является переход на выскочку. Я не рассматриваю этот вариант как реальное решение, конечно, не для долгосрочного.

Реальное решение (IMHO) к проблеме состоит в том, чтобы написать systemd script, который начнет MongodDB. К сожалению, парни MongoDB еще не поставили его.

Так что мне пришлось писать один с нуля. Чтобы создать свой собственный, выполните следующие действия:

  • переключиться на использование root
    sudo su
    

или используйте sudo для всех следующих шагов.

  1. создать службу script (в этом примере имя службы - Mongodb)

    nano /lib/systemd/system/mongodb.service
    
  2. Содержимое файла должно быть

    [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