MongoDB 2.6 не запускается в Ubuntu 15.04


51

Я установил MongoDB 2.6 на чистой установленной Ubuntu 15.04:

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
sudo apt-get update
sudo apt-get install -y mongodb-org

Все закончилось без проблем. Однако, когда я попытался запустить его, я получил следующую ошибку:

$ sudo service mongod start
Failed to start mongod.service: Unit mongod.service failed to load: No such file or directory.

Как я могу это исправить?

Ответы:


65

Я установил из репозитория Debian Wheeze, и он работает нормально.

Сначала убедитесь, что вы удалили пакет mongodb-org и все его зависимости:

sudo apt-get purge mongodb-org
sudo apt-get autoremove

Удалите старый созданный вами mongodb.list:

sudo rm /etc/apt/sources.list.d/mongodb.list

Вместо этого используйте репозиторий Debian:

echo "deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list

Обновите и установите снова:

sudo apt-get update
sudo apt-get install -y mongodb-org

После этого вы можете успешно запустить сервер:

sudo service mongod start

или же

systemctl start mongod

(как уточнил Эрни Херши в ответ на комментарий Романа Гауфмана здесь: https://jira.mongodb.org/browse/SERVER-17742 )


1
Я попробовал это и получил услугу, не найденную при попытке запустить mongod
Моше

2
Вы уверены, что вы автоматически удалили зависимости? Я тоже это получил, но потом понял, что не удалил все пакеты, связанные с mongodb. После удаления всех из них и установки из репозитория wheezy, он работает нормально с systemd.
Продажи Dielson

1
избавил меня от головной боли
Шриватса Хариш Венкатарамана

1
Спасибо. Очистка с последующим автоматическим удалением (почти забыл это) сделал свое дело.
Ненад Вукичевич

В моем случае 14.04, но, скорее всего, 15.04 /var/log/syslog, проверка неудачной попытки, а затем редактирование /etc/init/mongodb.confтакже может помочь, если вы используете нестандартный каталог данных, каталог журналов или пользовательский экземпляр.
Ешьте в Joes

25

Команда MongoDB заявляет, что не будет поддерживать Ubuntu 15.04 и планирует вместо этого поддерживать 16.04 (см. Https://jira.mongodb.org/browse/SERVER-17742 ).

Ubuntu 15.04 переводит систему инициализации по умолчанию с Upstart на systemd. У меня не было успеха, начиная MongoDB 3.0 с systemd.

Вы можете переключиться обратно на Upstart, установив upstart-sysv:

sudo apt-get install upstart-sysv

Затем перезагрузите компьютер и MongoDB должен быть включен.

Я надеюсь найти простой способ запустить MongoDB в Ubuntu 15.04, не переключаясь во времени.


2
На данный момент это лучший способ решить эту проблему. Если кто-то знает другие способы, пожалуйста, поделитесь здесь.
Фернандо Кош

В моем случае установка upstart-sysv и перезапуск просто вылетает.
Didac Montero

@DidacMontero Посмотрите на wiki.ubuntu.com/SystemdForUpstartUsers для других вариантов
Моше Рева

У меня работает на Ubuntu 15.04, спасибо за обходной путь!
Lil 'Bits

это отлично сработало для меня.
slimflem

4

Вы устанавливаете из пакетов, опубликованных непосредственно с mongodb.org. Вы должны выполнять установку из пакетов, поставляемых в репозитории Ubuntu. Пакеты Debian / Ubuntu были исправлены сервисными модулями systemd, чтобы заполнить дыру, оставленную mongodb.org.

mongodb.serviceWWW нет недостатка в единичных файлах. Его тоже нетрудно написать. У меня есть.)

В частности: вы найдете такой сервисный модуль в пакете mongodb-server версии 2.6 для Ubuntu версии 15 . Так что просто установите этот пакет.

(Обратите внимание, что сервисные блоки, поставляемые Debian / Ubuntu, не применяют рекомендованные монго директивы системного сервисного модуля .)

дальнейшее чтение


Однако этот подход не решает проблему для тех, кто хочет MongoDB> = 3.0
Dielson Sales

Да. Вы явно не читали ни второй абзац, ни дальнейшее чтение.
JdeBP

4

Я создал сценарий Systemd, который, кажется, работает для Ubuntu 15.04+ и Mongo 3.0+:

[Unit]
Description=High-performance, schema-free document-oriented database
Documentation=man:mongod(1)
After=network.target

[Service]
Type=forking
User=mongodb
Group=mongodb
RuntimeDirectory=mongod
PIDFile=/var/run/mongod/mongod.pid
ExecStart=/usr/bin/mongod -f /etc/mongod.conf --pidfilepath /var/run/mongod/mongod.pid --fork
TimeoutStopSec=5
KillMode=mixed

[Install]
WantedBy=multi-user.target

https://gist.github.com/benileo/ada486d73f58dd93a0ee

Убедитесь, что вы установили каталог данных в /etc/mongod.conf


1
Это лучшее решение.
Дж. Бруни

ссылка больше не работает
Hotbelgo

Исправлена ​​ссылка.
Бенилео

Конечно, это должно быть помечено как лучшее решение.
Ведни Юрий

1

Разве это не лучший ответ? Из дублирующего вопроса: https://askubuntu.com/a/694226/255468 от @sclausen


Это просто отсутствие служебного файла для systemd. Нет необходимости возвращаться к выскочкам, как это делал Kartik, или использовать репозиторий, отличный от описанного в https://docs.mongodb.org/manual/installation/ .

Создайте файл /lib/systemd/system/mongodb.service со следующим содержимым:

[Unit]
Description=High-performance, schema-free document-oriented database
After=network.target

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

[Install]
WantedBy=multi-user.target



0

Многие из этих ответов связаны с Mongo 3.0, тогда как вопрос задан конкретно о 2.6.

Я успешно установил 2.6 с использованием репозитория Debian из 10gen. Похоже, это прекрасно работает с Ubuntu 15.04.

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10
echo 'deb http://downloads-distro.mongodb.org/repo/debian-sysvinit dist 10gen' | sudo tee /etc/apt/sources.list.d/mongodb.list
sudo apt-get update
sudo apt-get install mongodb-org

Источник: Как установить MongoDB 2.6 в Ubuntu 14.10, 14.04 и 12.04 LTS


0

Пока вопрос к версии 2.6. Я получал точно такую ​​же ошибку Unit mongod.service failed to loadв моем Ubuntu 15.04 для версии 3.0.6. В конечном итоге решено с помощью того же хранилища wheezy, которое упоминалось выше в Dielson Sales.

И после установки (следуя инструкциям @Dielson Sales) возникла вышеуказанная ошибка. Вот как я наконец решил.

A) Измените файлы хранилища данных MongoDB по умолчанию с / var / lib / mongodb на / data / db

  • Сначала создайте новый каталог / data / db sudo mkdir -p /data/db

  • Откройте файл mongod.conf sudo gedit /etc/mongod.confи измените строку «dbpath», как показано ниже

  • Заменить DBPATH = / уаг / Библиотека / MongoDB TO DBPATH = / данные / дб и сохраните файл.

  • Затем удалите старый по умолчанию / var / lib / mongodb

  • Теперь мы должны сделать все каталоги / файлы, принадлежащие пользователю mongod

Б) так беги sudo chown -R mongodb:mongodb /data/db

И теперь, наконец, я могу начать Монго с sudo service mongod start

И ччек, с которым работает сервис - sudo systemctl status mongod должно отобразиться сообщение, подобное приведенному ниже

Loaded: loaded (/etc/init.d/mongod)

Active: active (running) since Thu 2015-09-03 04:57:49 IST; 7s ago

Подробно мои шаги в моем блоге


0

Сначала скачайте mongodb:

curl -O https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-3.0.6.tgz

извлечение скачать:

tar -zxvf mongodb-linux-x86_64-3.0.6.tgz

запустите mongod (mongodb-linux-x86_64-3.0.6.tgz / bin / mongod) с атрибутом -dbpath:

sudo ./mongod --dbpath /path/of/the/directory

Это может быть пустой каталог любой на ваш выбор

и наконец, запустите mongo (mongodb-linux-x86_64-3.0.6.tgz / bin / mongo)

./mongo

работал на моем убунту 15 :)

извините за мой плохой английский, я живу в Бразилии


0

После нескольких часов поиска, решение было обновить мою Ubuntu с 15.04 до 16.04 с помощью этой команды:

Шаг 1

sudo do-release-upgrade -d 

Это займет несколько минут, поэтому не паникуйте, чем вы должны удалить mongodb:

Шаг 2

sudo apt-get purge mongodb-org 
sudo apt-get autoremove`  
rm /etc/apt/sources.list.d/mongodb-org-3.0.list`  

А теперь установите mongodb, но используя этот источник:

echo 'deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.0 main' | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list

Шаг 3

sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 7F0CEB10  
echo ‘deb http://repo.mongodb.org/apt/debian wheezy/mongodb-org/3.0 main’ | sudo tee /etc/apt/sources.list.d/mongodb-org-3.0.list
sudo apt-get update
sudo apt-get install mongodb-org
sudo service mongod status

Вот и все.

Примечание. Если вы получили сообщение об ошибке типа «E», введите «deb» в первой строке. , , в файле mongodb-org-3.0.list

все, что вам нужно сделать, это зайти в этот файл с помощью gedit и удалить «в начале и в конце предложения».


Эта часть «Решением было обновить мою Ubuntu с 15.04 до 16.04 ...» в данный момент не имеет смысла, потому что 16.04 еще не выпущен.
Clearkimura

1
@clearkimura Да, это так. Ну в альфе. И что бы там ни было, вторая ежедневная сборка Ubuntu 16.04 установлена ​​на моем компьютере, и я не видел никаких проблем.
Star OS

0

Ubuntu 15.04+ использует systemd вместо upstart . Начните с официального руководства по установке MongoDB . Тогда используйте их официальные mongod.service:

[Unit]
Description=High-performance, schema-free document-oriented database

[Service]
User=mongod
Group=mongod
Environment="OPTIONS=--quiet -f /etc/mongod.conf"
ExecStart=/usr/local/bin/mongod $OPTIONS run
PIDFile=/var/run/mongodb/mongod.pid

[Install]
WantedBy=multi-user.target

Скачать, установить патч, установить сервис и установить dir + права

$ curl -OL https://raw.githubusercontent.com/mongodb/mongo/1663f45b4e33e058a0203a81f50574a870882c34/rpm/mongod.service
$ sed -i 's/\/usr\/local/\/usr/g' mongod.service
$ sed -i '/Desc/a After=network.target' mongod.service
$ sudo sed -i '0,/\/var\/lib\/mongodb/s//\/data\/db/' /etc/mongod.conf
$ sudo cp mongod.service /lib/systemd/system/mongo.service
$ sudo mkdir -p /data/db
$ sudo chown -R mongodb:mongodb /data
$ sudo systemctl daemon-reload
$ sudo systemctl enable mongod

Запустить сервис

$ sudo systemctl start mongod

Проверьте статус сервиса

$ sudo systemctl status mongod

0

Вы сделали опечатку в вашей команде.

Попробуйте использовать это вместо: sudo service mongodb start

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