สคริปต์พุ่งพรวดใน ubuntu สำหรับ mongodb


11

ฉันยังใหม่กับ linux และ mongodb ฉันได้ติดตั้ง mongodb บน Ubuntu แล้ว แต่ฉันต้องการรันอีกหนึ่งอินสแตนซ์บนพอร์ตอื่น ตามที่ฉันเข้าใจจากคำถามและฟอรัมอื่น ๆ จะต้องมีสคริปต์พุ่งพรวด /programming/7300109/ubuntu-start-upstart-second-instance-of-mongodb

แต่ฉันไม่สามารถค้นหาหรือค้นหาสคริปต์ upstart บนเซิร์ฟเวอร์ของฉันถ้าฉันสร้างสคริปต์ upstart ฉันควรค้นหาตำแหน่งใดเพื่อเริ่มเป็นบริการ

หรือมีวิธีอื่นที่เหมาะสมและง่ายต่อการเริ่มต้นอินสแตนซ์อื่นของ mongodb บนเซิร์ฟเวอร์เดียวกัน แต่มีพอร์ตต่างกัน

คำตอบ:


8

คุณกำลังเรียกใช้จากพื้นที่เก็บข้อมูล 10gen หรือจาก repo Debian / Ubuntu เริ่มต้นหรือไม่ ฉันแนะนำให้ใช้ที่เก็บ 10gen เป็นทางการ

ตรวจสอบการเชื่อมโยงนี้ออก - [10gen MongoDB วิธีการติดตั้งบน Ubuntu:] http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ เป็นการดีที่สุดที่จะถอนการติดตั้งการติดตั้ง mongodb ก่อนหน้านี้ก่อนการเปลี่ยนแปลงนี้ซึ่งจะทำให้คุณต้องแก้ไขแหล่งที่เก็บข้อมูลของคุณ (ใน /etc/apt/source.list) แต่นี่เป็นรายละเอียดในลิงก์ด้านบน ฉันขอแนะนำให้ใช้พุ่งพรวดผ่าน sysvinit และการประมวลผลที่ระบุไว้ในวิธีการ

ด้วยการตั้งค่า Ubuntu 10gen ไฟล์การกำหนดค่าจะอยู่ใน /etc/mongodb.conf

มีหลายวิธีที่คุณสามารถเรียกใช้กระบวนการ mongod ที่แยกจากกันได้เพียงแค่เรียกใช้จาก cli -

sudo -u mongodb mongod --dbpath /var/tmp/mongotest --logpath /var/tmp/mongotest_log --port 3001 &

ซึ่งจะผลิต (โดยใช้ 'ps')

mongodb   2210  3.3  1.5 259012 15300 pts/0    Dl   11:48   0:00 mongod --dbpath /var/tmp/mongotest --logpath /var/tmp/mongotest_log --port 3001

และคุณสามารถเชื่อมต่อผ่าน cli -> mongod --port 3001

อีกวิธีหนึ่งคือการสร้างสำเนาของ / etc / Mongodb.conf -

sudo cp /etc/mongodb.conf /etc/mongodbnew.conf and editing the following lines in the new file - 


# mongodbnew.conf

dbpath=/var/lib/mongodbnew

#where to log
logpath=/var/log/mongodb/mongodbnew.log

port = 27018

ฉันได้เปลี่ยน dbpath (ที่เก็บไฟล์ mongodb) จาก / var / lib / mongodb เป็น / var / lib / mongodbnew; พา ธ การบันทึกเปลี่ยนจาก mongodb.log เป็น mongodbnew.log และพอร์ตเปลี่ยนจากค่าเริ่มต้นที่ 27017 เป็น 27018 (คุณจะต้องลบ # เพื่อยกเลิกการใส่เครื่องหมายบรรทัด)

ฉันได้เปลี่ยนบรรทัดบนสุดเพื่อสะท้อนชื่อใหม่ของไฟล์การกำหนดค่านี้

คุณจะต้องสร้างไดเรกทอรีข้อมูลเพราะมันจะไม่มีอยู่และหากไม่มีกระบวนการ mongod จะไม่เริ่มต้นและให้แน่ใจว่าเจ้าของและกลุ่มนั้นเป็น mongodb -

sudo mkdir /var/lib/mongodbnew
sudo chown -R mongodb:mongodb mongodbnew/

นอกจากนี้สร้างและเปลี่ยนการ persmissions ของไฟล์บันทึกของคุณ -

sudo touch /var/log/mongodb/mongodbnew.log && sudo chown mongodb:mongodb /var/log/mongodb/mongodbnew.log

ในการเริ่มต้นกระบวนการ mongod ใหม่ของคุณ (ในพื้นหลัง) จาก cli ให้พิมพ์

sudo -u mongodb /usr/bin/mongod --config /etc/mongodbnew.conf &

ซึ่งส่งต่อไปนี้ไปที่หน้าจอ -

"เอาต์พุตทั้งหมดไปที่: /var/log/mongodb/mongodbnew.log"

ตรวจสอบว่ากระบวนการ mongod กำลังทำงานกับ "ps" -

sysadmin@ubuntu:/var/lib$ ps auwx | grep mongo | egrep -v 'grep|sudo'
mongodb    921 11.3  1.5 627672 15608 ?        Ssl  10:56   4:30 /usr/bin/mongod --config /etc/mongodb.conf
mongodb   2137  7.8  1.5 627672 15880 pts/0    Sl   11:36   0:00 /usr/bin/mongod --config /etc/mongodbnew.conf

เพื่อตรวจสอบว่าคุณสามารถเชื่อมต่อได้ให้เรียกใช้ Mongo shell -

$ mongo --port 27018
MongoDB shell version: 2.0.5
connecting to: 127.0.0.1:27018/test
> 

ด้วย lsof คุณควรเห็นกระบวนการมองโกลทั้งสองของคุณผูกพันกับ 27017 และกระบวนการใหม่ผูกกับ 27018

$ sudo lsof -i :27017
COMMAND PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mongod  921 mongodb    6u  IPv4   9066      0t0  TCP *:27017 (LISTEN)
sysadmin@ubuntu:/var/lib$ sudo lsof -i :27018
COMMAND  PID    USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
mongod  2137 mongodb    6r  IPv4  11923      0t0  TCP *:27018 (LISTEN)

เพื่อให้แน่ใจว่ากระบวนการทั้งสองทำงานเมื่อเริ่มต้นให้คัดลอกไฟล์กำหนดค่าเริ่มต้นดั้งเดิม -

sudo cp /etc/init/mongodb.conf /etc/init/mongodbnew.conf

ซึ่งควรส่งผลให้สองไฟล์เช่น -

$ ls -lart /etc/init/mongo*
-rw-r--r-- 1 root root 536 May  8 15:51 /etc/init/mongodb.conf
-rw-r--r-- 1 root root 554 Jun 11 11:43 /etc/init/mongodbnew.conf

แก้ไขไฟล์ mongodbnew.conf ใหม่โดยใช้ vi หรือสิ่งที่คุณต้องการให้มีลักษณะเช่นนี้ -


## Ubuntu upstart file at /etc/init/mongodbnew.conf

limit nofile 20000 20000

kill timeout 300 # wait 300s between SIGTERM and SIGKILL.

pre-start script
    mkdir -p /var/lib/mongodbnew/
    mkdir -p /var/log/mongodbnew/
end script

start on runlevel [2345]

หยุดที่ runlevel [06]

script
  ENABLE_MONGODB="yes"
  if [ -f /etc/default/mongodbnew ]; then . /etc/default/mongodbnew; fi
  if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --exec                /usr/bin/mongod -- --config /etc/mongodbnew.conf; fi

สคริปต์สิ้นสุด

ฉันได้ทดสอบสิ่งนี้บน Ubuntu 12.04 และดูเหมือนว่าจะทำงานได้ดีรวมถึงหลังจากรีบูต ฉันไม่ได้เรียกใช้ในการผลิตอย่างชัดเจน ขออภัยหากมีการพิมพ์ผิดพลาดด้านบน แต่มีข้อมูลจำนวนมากและฉันอาจพลาดบางสิ่งบางอย่าง

สุดท้ายนี่คือการเชื่อมโยงบนชุดแบบจำลองที่อาจช่วยให้คุณในขณะที่มันได้มาเป็นตัวอย่างในการเริ่มต้นกรณี mongod หลายรายการจาก CLI - http://www.mongodb.org/display/DOCS/Replica+Set+Tutorial


ลิงก์สำหรับ install-mongodb-on-debian หรือ ubuntu-linux ถูกเปลี่ยนเป็นdocs.mongodb.org/manual/tutorial/install-mongodb-on-debianและdocs.mongodb.org/manual/tutorial/install-mongodb -ON-อูบุนตู
Fernando Kosh

2

ฉันพบปัญหากับคำตอบข้างต้นที่ stop-start-daemon ไม่ได้เริ่มกระบวนการใหม่ด้วยชื่อเดียวกันมากกว่าหนึ่งครั้ง อย่างไรก็ตามมี--nameข้อโต้แย้งที่ช่วยให้คุณสามารถเปลี่ยนบรรทัดในสคริปต์พุ่งพรวดของคุณ/etc/init/เพื่อรวมชื่อใหม่ดังนั้นมันจะเริ่ม บางสิ่งเช่นนี้

if [ "x$ENABLE_MONGODB" = "xyes" ]; then exec start-stop-daemon --start --quiet --chuid mongodb --name mongodb-shard2 --exec /usr/bin/mongod -- --config /etc/mongodb-shard2.conf; fi

ในกรณีนี้การ--nameโต้แย้งทำให้อินสแตนซ์นี้ไม่ซ้ำกันและอนุญาตให้เริ่มแยกจากอินสแตนซ์ Mongo อื่น


0

upstart พบสคริปต์ /etc/init/


ขอบคุณมี mongodb.conf แต่มันเป็นไฟล์ conf เริ่มต้นสำหรับอินสแตนซ์ที่ใช้งานเริ่มต้น

ฉันเพิ่งได้ดู mongodb.conf ของฉันมันแหล่ง / etc / default / mongodb สันนิษฐานว่าสำหรับการกำหนดค่าแล้วเริ่ม mongodb โดยใช้ start-stop-daemon

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