Skrip pemula di ubuntu untuk mongodb

11

Saya baru mengenal linux dan mongodb. Saya sudah menginstal mongodb di ubuntu tetapi saya ingin menjalankan satu instance lagi pada port yang berbeda. Seperti yang saya mengerti dari pertanyaan dan forum lain, pasti ada skrip pemula. /programming/7300109/ubuntu-start-upstart-second-instance-of-mongodb

Tetapi saya tidak dapat menemukan atau menemukan skrip pemula di server saya. Jika saya membuat skrip pemula, di mana saya harus menemukannya untuk memulai sebagai layanan.

atau apakah ada cara lain yang tepat dan mudah untuk memulai instance mongodb lain pada server yang sama tetapi port yang berbeda.

Erhan A
sumber

Jawaban:

8

Apakah Anda menjalankan dari repositori 10gen atau dari repo Debian / Ubuntu default? Saya sarankan menggunakan repositori 10gen resmi.

Lihat tautan ini - [Cara Instalasi MongoDB 10gen di Ubuntu:] http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ . Yang terbaik adalah menghapus instalasi instalasi mongodb sebelumnya sebelum perubahan ini, yang juga mengharuskan Anda untuk memodifikasi sumber repositori Anda (di /etc/apt/source.list) tetapi ini juga dirinci dalam tautan di atas. Saya merekomendasikan menggunakan pemula sebagai pengganti sysvinit dan diproses diuraikan dalam How-To.

Dengan pengaturan Ubuntu 10gen, file konfigurasi ada di /etc/mongodb.conf.

Ada beberapa cara yang dapat Anda lakukan untuk menjalankan proses mongod terpisah, satu hanya akan menjalankannya dari cli -

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

yang akan menghasilkan (menggunakan '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

dan Anda dapat terhubung melalui cli -> mongod --port 3001

Cara lain adalah membuat salinan /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

Saya telah mengubah dbpath (tempat file mongodb disimpan) dari / var / lib / mongodb ke / var / lib / mongodbnew; path log telah berubah dari mongodb.log ke mongodbnew.log dan port telah berubah dari default 27017 ke 27018 (Anda juga harus menghapus # untuk menghapus tanda komentar pada baris).

Saya juga mengubah baris teratas untuk mencerminkan nama baru file konfigurasi ini.

Anda juga harus membuat direktori data karena itu tidak akan ada dan tanpanya, proses mongod tidak akan memulai dan memastikan bahwa pemilik dan grup adalah mongodb -

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

Selain itu, buat dan ubah pengajuan file log Anda -

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

Untuk memulai proses mongod baru Anda (di latar belakang) dari cli, ketik

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

yang mengirim berikut ke layar -

"semua output menuju: /var/log/mongodb/mongodbnew.log"

Periksa apakah proses mongod berjalan dengan "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

Untuk memverifikasi bahwa Anda dapat terhubung, jalankan shell Mongo -

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

Dengan lsof, sekarang Anda akan melihat dua proses mongod Anda, yang asli terikat ke 27017 dan yang baru terikat ke 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)

Untuk memastikan bahwa kedua proses berjalan saat start-up, salin file konfigurasi init asli -

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

yang seharusnya menghasilkan dua file seperti -

$ 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

Edit file mongodbnew.conf baru menggunakan vi atau apa pun yang Anda suka terlihat seperti ini -


## 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]

berhenti di 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

akhiri skrip

Saya telah menguji ini di Ubuntu 12.04 dan tampaknya berfungsi dengan baik, termasuk setelah reboot. Saya belum menjalankannya dalam produksi jelas. Permintaan maaf, jika ada kesalahan ketik di atas tetapi ada banyak informasi dan saya mungkin melewatkan sesuatu.

Akhirnya, inilah tautan pada Replica Sets yang mungkin membantu Anda karena telah muncul contoh untuk memulai beberapa instance mongod dari cli - http://www.mongodb.org/display/DOCS/Replica+Set+Tutorial .

Mark Hillick
sumber
Tautan untuk install-mongodb-on-debian-atau-ubuntu-linux diubah menjadi docs.mongodb.org/manual/tutorial/install-mongodb-on-debian dan docs.mongodb.org/manual/tutorial/install-mongodb -pada-ubuntu .
Fernando Kosh
2

Saya mengalami masalah dengan jawaban di atas di mana stop-start-daemon tidak memulai proses baru dengan nama yang sama lebih dari sekali. Namun, ada --nameargumen yang memungkinkan Anda untuk mengubah baris di skrip pemula Anda /etc/init/untuk memasukkan nama baru sehingga akan mulai. Sesuatu seperti ini:

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

Dalam hal ini --nameargumen membuat instance ini unik dan memungkinkannya untuk memulai secara terpisah dari instance mongod lainnya.

Michael Peterman
sumber
0

upstart skrip ditemukan di /etc/init/

jjwchoy
sumber
thnx, ada mongodb.conf tetapi ini adalah file conf default untuk instance berjalan standar
Saya baru saja melihat mongodb.conf saya sumbernya / etc / default / mongodb mungkin untuk konfigurasi dan kemudian mulai mongodb menggunakan start-stop-daemon
Anda dapat menyalin file ini dan memodifikasi perintah untuk memulai mongodb dengan port yang berbeda. Anda mungkin ingin menentukan file konfigurasi yang sama sekali baru sehingga Anda dapat mengubah file log dll