MongoDB 2.6 không khởi động trên Ubuntu 15.04


51

Tôi đã cài đặt MongoDB 2.6 trên Ubuntu 15.04 đã cài đặt sạch:

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

Nó kết thúc mà không có bất kỳ vấn đề. Tuy nhiên, khi tôi cố gắng khởi động nó, tôi đã gặp lỗi sau:

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

Làm thế nào tôi có thể sửa lỗi này?

Câu trả lời:


65

Tôi đã cài đặt từ kho lưu trữ khò khè debian và nó hoạt động tốt.

Trước tiên, hãy đảm bảo bạn xóa gói mongodb-org và tất cả các phụ thuộc của nó:

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

Xóa danh sách mongodb.list cũ mà bạn đã tạo:

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

Sử dụng kho lưu trữ Debian thay thế:

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

Cập nhật và cài đặt lại:

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

Sau đó, bạn có thể khởi động máy chủ một cách thành công:

sudo service mongod start

hoặc là

systemctl start mongod

(như được làm rõ bởi Ernie Hershey khi trả lời bình luận của Roman Gaufman tại đây: https://jira.mongodb.org/browse/SERVER-17742 )


1
Tôi đã thử điều đó và không tìm thấy dịch vụ khi cố gắng bắt đầu mongod
Moshe Revah

2
Bạn có chắc chắn bạn đã tự động phụ thuộc vào các phụ thuộc? Tôi cũng nhận được điều đó, nhưng sau đó tôi nhận ra rằng tôi đã không xóa tất cả các gói liên quan đến mongodb. Sau khi loại bỏ tất cả chúng và cài đặt từ kho lưu trữ khò khè, nó hoạt động tốt với systemd.
Doanh số Dielson

1
đã cứu tôi rất nhiều đau đầu
Srivathsa Harish Venkataramana

1
Cảm ơn bạn. Purge theo sau là autoremove (gần như quên nó) đã thực hiện thủ thuật này.
Nenad Vukicevic

Trong trường hợp của tôi vào ngày 14.04 nhưng có khả năng là vào ngày 15.04 /var/log/syslog, việc xác minh lỗi không thành công sau đó chỉnh sửa /etc/init/mongodb.confcũng có thể giúp ích nếu bạn đang sử dụng thư mục dữ liệu không chuẩn, thư mục nhật ký hoặc ví dụ người dùng.
Ăn tại Joes

25

Nhóm MongoDB cho biết họ sẽ không hỗ trợ Ubuntu 15.04 và dự định hỗ trợ 16.04 thay vào đó (xem https://jira.mongodb.org/browse/SERVER-17742 ).

Ubuntu 15.04 nâng cao hệ thống init mặc định từ Upstart sang systemd. Tôi đã không thành công khi bắt đầu MongoDB 3.0 với systemd.

Bạn có thể chuyển về Upstart bằng cách cài đặt upstart-sysv:

sudo apt-get install upstart-sysv

Sau đó khởi động lại và MongoDB sẽ được lên.

Tôi hy vọng tìm thấy một cách dễ dàng để chạy MongoDB trên Ubuntu 15.04 mà không cần chuyển đổi thời gian.


2
Đây là cách tốt nhất để giải quyết vấn đề này ngay bây giờ. Nếu ai biết những cách khác, xin vui lòng chia sẻ ở đây.
Fernando Kosh

Trong trường hợp của tôi, cài đặt upstart-sysv và khởi động lại chỉ gặp sự cố.
Didac Montero

@DidacMontero Nhìn vào wiki.ubuntu.com/SystemdForUpstartUsers cho các tùy chọn khác
Moshe Revah

Hoạt động với tôi trên Ubuntu 15.04, cảm ơn vì đã giải quyết!
Lil 'Bits

Điều này làm việc hoàn hảo cho tôi.
slimflem

4

Bạn đang cài đặt từ các gói được xuất bản trực tiếp từ mongodb.org. Bạn nên cài đặt từ các gói được cung cấp trong kho lưu trữ Ubuntu. Các gói Debian / Ubuntu đã được vá bằng các đơn vị dịch vụ systemd, để lấp đầy lỗ hổng do mongodb.org để lại.

(Không thiếu các mongodb.servicetệp đơn vị trên WWW. Tôi cũng không khó để viết. Tôi cũng có.)

Cụ thể: bạn sẽ tìm thấy một đơn vị dịch vụ như vậy trong gói mongodb-server phiên bản 2.6 cho Ubuntu phiên bản 15 . Vì vậy, chỉ cần cài đặt gói đó.

(Lưu ý rằng các đơn vị dịch vụ do Debian / Ubuntu cung cấp không áp dụng các chỉ thị của đơn vị dịch vụ systemd được đề xuất mongo .)

đọc thêm


Tuy nhiên, cách tiếp cận này không giải quyết được vấn đề cho những ai muốn MongoDB> = 3.0
Doanh số Dielson

Có nó làm. Bạn rõ ràng đã không đọc đoạn thứ hai hoặc đọc thêm.
JdeBP

4

Tôi đã tạo một tập lệnh Systemd dường như hoạt động cho Ubuntu 15.04+ và 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

Hãy chắc chắn rằng bạn đặt thư mục dữ liệu của bạn trong /etc/mongod.conf


1
Đây là giải pháp tốt nhất.
J. Bruni

liên kết không còn hoạt động
Hotbelgo

Đã sửa lỗi liên kết.
benileo

Để chắc chắn, nó nên được đánh dấu là giải pháp tốt nhất.
Wédney Yuri

1

Đây không phải là câu trả lời tốt nhất sao? Từ một câu hỏi trùng lặp: https://askubfox.com/a/694226/255468 bởi @sclausen


Đó chỉ là thiếu một tệp dịch vụ cho systemd. Không cần quay lại để bắt đầu như Kartik đã làm hoặc sử dụng một kho lưu trữ khác với mô tả trong https://docs.mongodb.org/manual/installation/ .

Tạo một tệp /lib/systemd/system/mongodb.service với nội dung sau:

[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

sử dụng "mongodb" thay vì "mongod"

I E

sudo service mongodb start

sudo service mongodb stop

0

Nhiều câu trả lời trong số này có liên quan đến Mongo 3.0, trong khi câu hỏi được hỏi cụ thể về 2.6.

Tôi đã cài đặt thành công 2.6 bằng kho lưu trữ Debian từ 10gen. Điều này dường như hoạt động hoàn hảo với 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

Nguồn: Cách cài đặt MongoDB 2.6 trên Ubuntu 14.10, 14.04 và 12.04 LTS


0

Trong khi câu hỏi dành cho phiên bản 2.6. Tôi đã nhận được chính xác lỗi tương tự Unit mongod.service failed to loadtrong Ubuntu 15.04 cho phiên bản 3.0.6. Cuối cùng đã giải quyết bằng cách sử dụng kho lưu trữ khò khè tương tự được đề cập bởi Dielson Sales ở trên.

Và sau khi cài đặt (theo các bước chi tiết của @Dielson Sales) đã gặp phải lỗi trên. Đây là cách cuối cùng tôi đã giải quyết.

A) Thay đổi tệp lưu trữ dữ liệu mặc định của MongoDB từ / var / lib / mongodb thành / data / db

  • Đầu tiên tạo thư mục / data / db mới sudo mkdir -p /data/db

  • Mở tệp mongod.conf sudo gedit /etc/mongod.confvà thay đổi dòng db dbpath như bên dưới

  • Thay thế dbpath = / var / lib / mongodb TO dbpath = / data / db và lưu tệp.

  • Sau đó xóa mặc định cũ / var / lib / mongodb

  • Bây giờ chúng ta phải tạo tất cả các thư mục / tệp thuộc sở hữu của người dùng mongod

B) Vì vậy, chạy sudo chown -R mongodb:mongodb /data/db

Và bây giờ cuối cùng tôi cũng có thể bắt đầu mongo với sudo service mongod start

Và chcek rằng dịch vụ đang chạy với sudo systemctl status mongod - Nó sẽ hiển thị một thông báo tương tự như bên dưới

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

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

Có chi tiết các bước của tôi trong bài viết trên blog của tôi


0

Đầu tiên, tải về mongodb:

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

giải nén

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

chạy mongod (mongodb-linux-x86_64-3.0.6.tgz / bin / mongod) với thuộc tính -dbpath:

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

Nó có thể là một thư mục trống bất kỳ sự lựa chọn của bạn

và cuối cùng, chạy mongo (mongodb-linux-x86_64-3.0.6.tgz / bin / mongo)

./mongo

đã làm việc trên Ubuntu 15 :)

xin lỗi vì tiếng anh không tốt của tôi, tôi sống ở Brazil


0

Sau nhiều giờ tìm kiếm, giải pháp là nâng cấp Ubuntu của tôi từ 15.04 lên 16.04 bằng lệnh này:

Bước 1

sudo do-release-upgrade -d 

Sẽ mất vài phút để không hoảng loạn, hơn là bạn phải loại bỏ mongodb:

Bước 2

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

Và bây giờ, cài đặt mongodb nhưng sử dụng nguồn này:

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

Bước 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

Và đó là nó.

Lưu ý: Nếu bạn gặp lỗi như 'E: loại' deb 'trong dòng đầu tiên. . . trong tập tin mongodb-org-3.0.list

tất cả những gì bạn phải làm là vào tệp này bằng gedit và xóa 'ở đầu và cuối câu.


Phần này "Giải pháp là nâng cấp Ubuntu của tôi từ 15.04 lên 16.04 ..." hiện tại không có ý nghĩa gì, vì 16.04 chưa được phát hành.
Clearkimura

1
@clearkimura Đúng vậy. Vâng, trong alpha. Và bất cứ điều gì, bản dựng thứ hai hàng ngày của Ubuntu 16.04 được cài đặt trên máy tính của tôi và tôi không thấy có vấn đề gì.
Sao hệ điều hành

0

Ubuntu 15.04+ sử dụng systemd thay vì mới bắt đầu . Bắt đầu với hướng dẫn cài đặt chính thức của MongoDB . Sau đó sử dụng chính thức của họ 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

Tải xuống, vá, cài đặt dịch vụ và thiết lập dir + quyền

$ 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

Bắt đầu dịch vụ

$ sudo systemctl start mongod

Kiểm tra trạng thái dịch vụ

$ sudo systemctl status mongod

0

Bạn đã thực hiện một lỗi đánh máy trong lệnh của bạn.

Hãy thử sử dụng cái này thay thế: sudo service mongodb start

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.