เรียกใช้บริการ MongoDB เป็น daemon ของ SystemD บน Ubuntu 15.10


12

MongoDB รองรับ Ubuntu Long Term Support (LTS) รุ่นต่างๆ สุดท้ายคือ Ubuntu 14.04 LTS ซึ่งกระบวนการเริ่มต้นได้รับการจัดการโดย Upstart กรรมสิทธิ์ของ Canonical อย่างไรก็ตามฉันใช้ Ubuntu 15.10 กับกระบวนการเริ่มต้น SystemD Linux ดังนั้นฉันไม่สามารถเริ่มบริการ MongoDB ในการบูต

เมื่อฉันอ่านสถานะบริการหรือลองเริ่มแสดงข้อความ "ไม่สามารถโหลด":

> 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.

ฉันใช้ MongoDB 3.2 Community Edition (mongodb-org) อย่างเป็นทางการจากhttps://docs.mongodb.org/master/tutorial/install-mongodb-on-ubuntu/ไม่ใช่ MongoDB 2.6 meta-package (mongodb) จาก Ubuntu กรุ

> 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

มีคนรู้วิธีเริ่มต้น MongoDB ด้วย SystemD?


1
ปัญหาของฉันคือไฟล์ปรับแต่งที่กำหนดเองซึ่งไม่ฟอร์ก mongod นี่คือตัวอย่างจาก mongod เริ่มต้น conf ที่ฉันหายไป processManagement: ทางแยก: จริง: pidFilePath จริง: /var/run/mongod.pid
Pykler

คำตอบ:


25

ฉันจัดการเริ่มต้นบริการ MongoDB ด้วย SystemD เมื่อบู๊ต:

ฉันถอนการติดตั้ง meta-package อย่างเป็นทางการ (mongodb-org) v3.2 จากนั้นฉันติดตั้ง meta-package (mongodb) v2.6 จากที่เก็บ Ubuntu:

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

สร้างไฟล์กำหนดค่าบริการตามที่แสดงด้านล่าง:

> 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

ตรวจสอบในรายการหากเปิดใช้งานหรือปิดใช้งานบริการโดยใช้คำสั่งด้านล่าง:

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

หากปิดใช้งานอยู่หรือไม่อยู่ในรายการให้เปิดใช้งาน:

> sudo systemctl enable mongodb.service

ตรวจสอบอีกครั้ง:

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

ตอนนี้คุณสามารถจัดการบริการบนกระบวนการเริ่มต้นของ SystemD:

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

สนุก!


ดูaskubuntu.com/a/617869/43344สำหรับตัวชี้ไปยังส่วนต่าง ๆ ของคำจำกัดความบริการที่คุณพลาด นอกจากนี้ทราบว่าหน่วยบริการที่จัดทำและเขียนโดยผู้ดูแลระบบไม่ควร/libไป
JdeBP

1
หน่วยบริการที่ถูกเขียนขึ้นโดยยอมรับไม่ได้โดยผู้ดูแลระบบภายในแล้วพวกเขาก็ต้องอยู่/libใน ส่วนของคำจำกัดความบริการดีพอที่จะเริ่มให้บริการการตั้งค่าเพิ่มเติมไม่ได้มีผลกระทบอย่างมีนัยสำคัญดังนั้นจึงถือว่าเป็นส่วนเสริม หากคุณเพิ่มPIDFile=/var/run/mongodb/mongod.pidบรรทัดและrunคำแนะนำในExecStart=บรรทัดคุณจะได้รับข้อผิดพลาดเนื่องจากฉันใช้เมตาดาต้าแพ็คเกจ (mongodb) 2.6 ไม่ใช่เมตาดาต้าแพ็คเกจ (mongodb-org) 3.2
เฟอร์นันโดซานตูชี

1
ทำไมลงคะแนนฉัน upvoted ฉันยังประสบปัญหาที่คล้ายกันและคำตอบนี้ช่วยขอบคุณ
Tien Do

นี่เป็นประโยชน์อย่างมากในการย้ายจาก Ubuntu 14 ถึง 18 นอกจากนี้สิ่งเดียวของฉันคือฉันต้องสร้างข้อมูลและบันทึกไดเรกทอรีใหม่chownก่อนที่ mongod จะเริ่มผ่าน systemctl ไม่มีเอกสารการติดตั้งที่จะไม่บอกฉัน แต่ในกรณีที่เป็นประโยชน์!
Tom J Nowell

6

ในการติดตั้งเริ่มต้นจากที่เก็บ MongoDB เพื่อเริ่มต้นบริการmongodโดยอัตโนมัติสิ่งที่คุณต้องทำคือเปิดใช้งานบริการ system.d:

systemctl enable mongod.service(ต้องใส่ใจกับชื่อบริการmongo dไม่ใช่mongodb )

หมายเหตุ: สิ่งนี้ได้รับการทดสอบบน Debian / GNU Jessie 8.x พร้อมกับ systemd และ Ubuntu Xerus 16.04 LTS


สิ่งนี้เป็นจริงสำหรับ Ubuntu Xerus 16.04 LTS เช่นกัน หลังจากติดตั้งจาก repo อย่างเป็นทางการคุณจะต้องเปิดใช้งาน systemd service unit! ฉันเพิ่งยืนยันพร้อมการติดตั้งอินสแตนซ์อื่น ... :)
stamster

1
ไฟล์นี้มีอยู่ใน/lib/systemd/system/mongod.serviceUbuntu 16.04 ของฉัน
Jyotman Singh เมื่อ

ใช่นิยามหน่วย systemd อยู่ที่นั่น แต่ถูกปิดใช้งานดังนั้นคุณต้องเปิดใช้งานเพื่อที่จะได้เริ่มต้นโดยอัตโนมัติทุกครั้งที่คุณรีบูตอินสแตนซ์ของคุณ
เริ่มต้น
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.