MongoDB 2.6 nie uruchamia się w systemie Ubuntu 15.04


51

Mam zainstalowany MongoDB 2.6 na czystą zainstalowanym 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

Skończyło się bez żadnych problemów. Jednak gdy próbowałem go uruchomić, otrzymałem następujący błąd:

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

Jak mogę to naprawić?

Odpowiedzi:


65

Zainstalowałem z repozytorium debian wheeze i działa dobrze.

Najpierw upewnij się, że usunąłeś pakiet mongodb-org i wszystkie jego zależności:

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

Usuń stary mongodb.list, który utworzyłeś:

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

Zamiast tego użyj repozytorium Debiana:

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

Zaktualizuj i zainstaluj ponownie:

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

Następnie możesz z powodzeniem uruchomić serwer:

sudo service mongod start

lub

systemctl start mongod

(jak wyjaśnił Ernie Hershey w odpowiedzi na komentarz Romana Gaufmana tutaj: https://jira.mongodb.org/browse/SERVER-17742 )


1
Próbowałem tego i nie udało mi się znaleźć usługi przy próbie uruchomienia mongod
Moshe Revah

2
Czy na pewno napisałeś zależności? Też to dostałem, ale potem zdałem sobie sprawę, że nie usunąłem wszystkich pakietów związanych z mongodb. Po usunięciu wszystkich z nich i zainstalowaniu z repozytorium wheezy, działa dobrze z systemd.
Sprzedaż Dielson

1
zaoszczędziło mi dużo bólu głowy
Srivathsa Harish Venkataramana

1
Dziękuję Ci. Purge, a następnie autorove (prawie zapomniałem) załatwiło sprawę.
Nenad Vukicevic

W moim przypadku 14.04, ale prawdopodobnie 15.04 tailing /var/log/syslog, weryfikacja nieudanej próby, a następnie edycja /etc/init/mongodb.confmoże również pomóc, jeśli używasz niestandardowego katalogu danych, katalogu dziennika lub instancji użytkownika.
Jedz o Joes

25

Zespół MongoDB twierdzi, że nie będzie obsługiwał Ubuntu 15.04 i zamiast tego planuje wesprzeć 16.04 (patrz https://jira.mongodb.org/browse/SERVER-17742 ).

Ubuntu 15.04 zmienia domyślny system init z Upstart na systemd. Nie udało mi się uruchomić MongoDB 3.0 z systemd.

Możesz wrócić do Upstart, instalując upstart-sysv:

sudo apt-get install upstart-sysv

Następnie uruchom ponownie i MongoDB powinien być włączony.

Mam nadzieję znaleźć prosty sposób na uruchomienie MongoDB na Ubuntu 15.04 bez cofania się w czasie.


2
To najlepszy sposób na rozwiązanie tego problemu. Jeśli ktoś zna inne sposoby, udostępnij tutaj.
Fernando Kosh

W moim przypadku instalacja upstart-sysv i restartowanie po prostu ulega awarii.
Didac Montero

@DidacMontero Spójrz na wiki.ubuntu.com/SystemdForUpstartUsers, aby zobaczyć inne opcje
Moshe Revah

Działa dla mnie na Ubuntu 15.04, dzięki za obejście!
Lil 'Bits

to działało idealnie dla mnie.
slimflem,

4

Instalujesz z pakietów opublikowanych bezpośrednio z mongodb.org. Powinieneś instalować z pakietów dostarczonych w repozytorium Ubuntu. Pakiety Debian / Ubuntu zostały załatane za pomocą jednostek systemowych, aby wypełnić dziurę pozostawioną przez mongodb.org.

(Nie brakuje mongodb.serviceplików jednostkowych na stronie WWW. Nie jest też trudne napisanie jednego. Mam.)

W szczególności: taką jednostkę usługową znajdziesz w pakiecie mongodb-server wersja 2.6 dla Ubuntu w wersji 15 . Więc po prostu zainstaluj ten pakiet.

(Należy zauważyć, że jednostki usług dostarczone przez Debian / Ubuntu nie stosują zalecanych przez Mongo dyrektyw systemowych jednostek usług .)

Dalsza lektura


Jednak to podejście nie rozwiązuje problemu dla tych, którzy chcą MongoDB> = 3,0
Dielson Sales

Tak. Najwyraźniej nie przeczytałeś ani drugiego akapitu, ani dalszej lektury.
JdeBP

4

Stworzyłem skrypt Systemd, który wydaje się działać dla Ubuntu 15.04+ i 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

Upewnij się, że ustawiłeś katalog danych w /etc/mongod.conf


1
To najlepsze rozwiązanie.
J. Bruni

link już nie działa
Hotbelgo

Naprawiono link.
benileo

Na pewno powinien być oznaczony jako najlepsze rozwiązanie.
Wédney Yuri,

1

Czy to nie najlepsza odpowiedź? Od duplikatu pytania: https://askubuntu.com/a/694226/255468 autor: @sclausen


To po prostu brak pliku usługi dla systemd. Nie trzeba wracać do upstartu, jak zrobił to Kartik, ani używać innego repozytorium niż opisano w https://docs.mongodb.org/manual/installation/ .

Utwórz plik /lib/systemd/system/mongodb.service o następującej treści:

[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


1

użyj „mongodb” zamiast „mongod”

to znaczy

sudo service mongodb start

sudo service mongodb stop

0

Wiele z tych odpowiedzi jest związanych z Mongo 3.0, podczas gdy pytanie dotyczy konkretnie 2.6.

Udało mi się zainstalować 2.6 przy użyciu repozytorium Debiana od 10gen. Wygląda na to, że działa idealnie z 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

Źródło: Jak zainstalować MongoDB 2.6 na Ubuntu 14.10, 14.04 i 12.04 LTS


0

Pytanie dotyczy wersji 2.6. Unit mongod.service failed to loadOtrzymałem dokładnie ten sam błąd w moim Ubuntu 15.04 dla wersji 3.0.6. Ostatecznie rozwiązany przy użyciu tego samego repozytorium wheezy wspomnianego powyżej przez Dielson Sales.

A po instalacji (wykonując czynności opisane przez @Dielson Sales) napotkał powyższy błąd. Oto jak w końcu rozwiązałem.

A) Zmień domyślne pliki magazynu danych MongoDB z / var / lib / mongodb na / data / db

  • Najpierw utwórz nowy katalog / data / db sudo mkdir -p /data/db

  • Otwórz plik mongod.conf sudo gedit /etc/mongod.confi zmień wiersz „dbpath” jak poniżej

  • Zamień dbpath = / var / lib / mongodb TO dbpath = / data / db i zapisz plik.

  • Następnie usuń stary domyślny / var / lib / mongodb

  • Teraz musimy utworzyć wszystkie katalogi / pliki będące własnością użytkownika mongod

B) Więc biegnij sudo chown -R mongodb:mongodb /data/db

A teraz w końcu mogę zacząć od mongo sudo service mongod start

I chce, że usługa jest uruchomiona sudo systemctl status mongod - Powinien wyświetlać komunikat podobny do poniższego

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

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

Szczegółowo opisałem moje kroki w moim blogu


0

Najpierw pobierz mongodb:

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

pobierz wyciąg:

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

uruchom mongod (mongodb-linux-x86_64-3.0.6.tgz / bin / mongod) z atrybutem -dbpath:

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

Może to być dowolny pusty katalog

i na koniec uruchom mongo (mongodb-linux-x86_64-3.0.6.tgz / bin / mongo)

./mongo

pracował na moim ubuntu 15 :)

przepraszam za mój zły angielski, mieszkam w Brazylii


0

Po godzinach od wyszukiwania rozwiązaniem było uaktualnienie mojego Ubuntu z 15.04 do 16.04 za pomocą tego polecenia:

Krok 1

sudo do-release-upgrade -d 

Zajmie to kilka minut, więc nie panikuj, niż musisz usunąć mongodb:

Krok 2

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

A teraz zainstaluj mongodb, ale używając tego źródła:

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

Krok 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

I to wszystko.

Uwaga: Jeśli w pierwszym wierszu pojawi się błąd „E: wpisz„ deb ”. . . w pliku mongodb-org-3.0.list

wszystko, co musisz zrobić, to dostać się do tego pliku za pomocą gedit i usunąć 'na początku i na końcu zdania.


Ta część „Rozwiązaniem było uaktualnienie mojego Ubuntu z 15.04 do 16.04 ...” nie ma w tej chwili sensu, ponieważ 16.04 nie została jeszcze wydana.
clearkimura

1
@clearkimura Tak to jest. Cóż, w wersji alfa. Cokolwiek, druga codzienna wersja Ubuntu 16.04 jest zainstalowana na moim komputerze i nie widziałem żadnych problemów.
Star OS

0

Ubuntu 15.04+ używa systemd zamiast upstart . Zacznij od oficjalnego przewodnika instalacji MongoDB . Następnie użyj ich oficjalnego 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

Pobieranie, łatanie, instalowanie usługi i konfiguracja dir + uprawnienia

$ 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

Uruchomić usługę

$ sudo systemctl start mongod

Sprawdź status usługi

$ sudo systemctl status mongod

0

Napisałeś literówkę w swoim poleceniu.

Spróbuj użyć tego zamiast: sudo service mongodb start

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.