Chạy dịch vụ MongoDB dưới dạng daemon của SystemD trên Ubuntu 15.10


12

MongoDB chỉ hỗ trợ các phiên bản Hỗ trợ dài hạn của Ubuntu (LTS). Cái cuối cùng là Ubuntu 14.04 LTS, trong đó quy trình init được quản lý bởi độc quyền Upstart của Canonical. Tuy nhiên, tôi đang sử dụng Ubuntu 15.10 với quy trình khởi động SystemD tiêu chuẩn của Linux. Vì vậy, tôi không thể khởi động dịch vụ MongoDB khi khởi động.

Khi tôi đọc trạng thái dịch vụ hoặc thử khởi động nó, hiển thị thông báo "không tải được":

> systemctl status mongod
Loaded: not-found (Reason: No such file or directory)
Active: inactive (dead)
> sudo systemctl start mongod
Failed to start mongod.service: Unit mongod.service failed to load: No such file or directory.

Tôi đang chạy Phiên bản cộng đồng MongoDB 3.2 chính thức (mongodb-org) từ https://docs.mongodb.org/master/tutorial/install-mongodb-on-ub Ubuntu / không phải gói meta MongoDB 2.6 (mongodb) từ Ubuntu kho.

> sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv EA312927
> 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
> sudo apt-get update
> sudo apt-get install -y mongodb-org

Ai đó biết cách khởi động MongoDB với SystemD?


1
vấn đề của tôi là một tệp cấu hình tùy chỉnh không phải là mongod, đây là đoạn trích từ mongod mặc định mà tôi bị thiếu, processQuản lý: fork: true pidFilePath: /var/run/mongod.pid
Pykler

Câu trả lời:


25

Tôi đã quản lý bắt đầu dịch vụ MongoDB với SystemD khi khởi động:

Tôi đã gỡ cài đặt gói meta chính thức (mongodb-org) v3.2, sau đó tôi đã cài đặt gói meta (mongodb) v2.6 từ kho lưu trữ Ubuntu:

> sudo apt-get remove mongodb-org
> sudo apt-get install mongodb

Tạo tập tin cấu hình dịch vụ như hình dưới đây:

> cd /lib/systemd/system
> sudo touch mongodb.service
> sudo nano mongodb.service
[Unit]
Description=An object/document-oriented database
Documentation=man:mongod(1)
After=network.target

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

[Install]
WantedBy=multi-user.target

Xác minh trong danh sách nếu dịch vụ được bật hoặc tắt bằng lệnh bên dưới:

> systemctl list-unit-files --type=service
...
mongodb.service             disabled
...

Nếu nó bị vô hiệu hóa hoặc không có trong danh sách, hãy kích hoạt nó:

> sudo systemctl enable mongodb.service

Kiểm tra lại:

> systemctl list-unit-files --type=service 
...
mongodb.service             enabled
...

Bây giờ bạn có thể quản lý dịch vụ trên tiến trình khởi động SystemD:

> systemctl status mongodb
> sudo systemctl stop mongodb
> sudo systemctl start mongodb
> sudo systemctl restart mongodb

Thưởng thức!


Xem Askubfox.com/a/617869/43344 để biết con trỏ tới các phần của định nghĩa dịch vụ mà bạn đã bỏ lỡ. Cũng lưu ý rằng các đơn vị dịch vụ được cung cấp và viết bởi quản trị viên địa phương không nên đi vào /lib.
JdeBP 22/03/2016

1
Đơn vị dịch vụ đó được viết bởi Canonical, không phải bởi một quản trị viên địa phương, sau đó họ phải cư trú trong /lib. Các phần của định nghĩa dịch vụ đủ tốt để bắt đầu dịch vụ, các cài đặt bổ sung không có hiệu lực đáng kể, vì vậy chúng được coi là bổ sung. Nếu bạn thêm PIDFile=/var/run/mongodb/mongod.piddòng và runhướng dẫn ExecStart=trực tuyến, bạn sẽ gặp lỗi, vì tôi đang sử dụng gói meta (mongodb), chứ không phải gói meta (mongodb-org) 3.2.
Fernando Santucci

1
Tại sao xuống bình chọn, tôi ủng hộ. Tôi cũng phải đối mặt với một vấn đề tương tự và câu trả lời này đã giúp, cảm ơn.
Tiến Đỗ

Điều này cực kỳ hữu ích khi chuyển từ Ubuntu 14 sang 18, điều bổ sung duy nhất của tôi là tôi phải tạo lại các thư mục dữ liệu và nhật ký và chownchúng trước khi mongod sẽ bắt đầu thông qua systemctl. Không có gì các tài liệu cài đặt sẽ không nói với tôi nhưng trong trường hợp nó hữu ích!
Tom J Nowell

6

Khi cài đặt mặc định từ kho MongoDB, để tự động khởi động dịch vụ mongod , tất cả những gì bạn cần làm là bật dịch vụ system.d:

systemctl enable mongod.service(chú ý đến tên dịch vụ mongo d , không phải mongodb )

LƯU Ý: điều này đã được thử nghiệm trên cả Debian / GNU Jessie 8.x với systemd và Ubuntu Xerus 16.04 LTS.


Điều này cũng đúng với Ubuntu Xerus 16.04 LTS. Sau khi cài đặt từ repo chính thức, bạn cần kích hoạt đơn vị dịch vụ systemd! Tôi vừa xác nhận nó với một cài đặt cá thể khác ... :)
stamster

1
Tệp có trong /lib/systemd/system/mongod.serviceUbuntu 16.04 của tôi
Jyotman Singh

Có, định nghĩa đơn vị systemd là có nhưng nó bị vô hiệu hóa, vì vậy bạn cần kích hoạt nó để tự động khởi động mỗi khi bạn khởi động lại cá thể của mình.
stamster
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.