मोंगोडब के लिए ubuntu में अपस्टार्ट स्क्रिप्ट


11

मैं linux और mongodb में नया हूं। मैं पहले से ही ubuntu पर mongodb स्थापित है, लेकिन मैं अलग बंदरगाह पर एक और उदाहरण चलाना चाहते हैं। जैसा कि मैंने अन्य प्रश्नों और मंचों से समझा, अपस्टार्ट स्क्रिप्ट होनी चाहिए। /programming/7300109/ubuntu-start-upstart-second-instance-of-mongodb

लेकिन मैं अपने सर्वर पर एक अपस्टार्ट स्क्रिप्ट नहीं ढूँढ सकता या ढूँढ नहीं सकता। यदि मैं एक अपस्टार्ट स्क्रिप्ट बनाता हूं, तो मुझे सेवा के रूप में शुरू करने के लिए इसे कहां ढूंढना चाहिए।

या एक ही सर्वर पर अलग पोर्ट पर मंगोडब का एक और उदाहरण शुरू करने के लिए कोई अन्य उचित और आसान तरीका है।

जवाबों:


8

क्या आप 10gen रिपॉजिटरी से या डिफॉल्ट डेबियन / Ubuntu रेपो से भाग रहे हैं? मैं आधिकारिक 10gen रिपॉजिटरी का उपयोग करने की सलाह देता हूं।

इस लिंक को देखें - [10gen MongoDB How-To Install on Ubuntu:] http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ । इस परिवर्तन से पहले के पिछले मैन्गोडब इंस्टॉलेशन को अनइंस्टॉल करना सबसे अच्छा है, जिसके लिए आपको अपने रिपॉजिटरी स्रोत (/etc/apt/source.list में) को संशोधित करने की भी आवश्यकता होगी लेकिन यह ऊपर दिए गए लिंक में भी विस्तृत है। मैं sysvinit पर ऊपर की ओर का उपयोग करने की सलाह देता हूं और संसाधित को हाउ-टू में उल्लिखित किया जाता है।

10gen Ubuntu सेट-अप के साथ, कॉन्फ़िगरेशन फ़ाइल /etc/mongodb.conf में है।

वहाँ कई तरीके हैं कि आप एक अलग mongod प्रक्रिया चला सकते हैं, एक बस इसे cli से चल रहा होगा -

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

जो उत्पादन करेगा ('पीएस' का उपयोग करके)

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 में बदल गया है (आपको लाइन को अनफॉलो करने के लिए # को भी निकालना होगा)।

मैंने इस कॉन्फ़िगरेशन फ़ाइल के नए नाम को दर्शाने के लिए शीर्ष पंक्ति को भी बदल दिया।

आपको डेटा डायरेक्टरी भी बनानी होगी क्योंकि यह मौजूद नहीं होगी और इसके बिना, मोंगोड प्रक्रिया शुरू नहीं होगी और यह सुनिश्चित करना होगा कि मालिक और समूह mongodb है -

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

इसके अतिरिक्त, अपनी लॉग फ़ाइल के प्रिंट बनाएं और बदलें -

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

क्ली से अपनी नई मैंगोड प्रक्रिया (पृष्ठभूमि में) शुरू करने के लिए टाइप करें

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

जो स्क्रीन पर निम्नलिखित भेजें -

"सभी आउटपुट: /var/log/mongodb/mongodbnew.log पर जा रहा है"

जांचें कि मोंगोड प्रक्रियाएं "पीएस" के साथ चल रही हैं -

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 --port 27018
MongoDB shell version: 2.0.5
connecting to: 127.0.0.1:27018/test
> 

Lsof के साथ, आपको अब अपनी दो mongod प्रक्रियाओं को देखना चाहिए, मूल 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]

रनलेवल पर रुकना [०६]

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

अंत स्क्रिप्ट

मैंने उबंटू 12.04 पर इसका परीक्षण किया है और यह अच्छी तरह से काम करने के लिए प्रकट होता है, जिसमें एक रिबूट भी शामिल है। मैंने इसे स्पष्ट रूप से उत्पादन में नहीं चलाया है। माफी, अगर किसी टाइपो के ऊपर है, लेकिन बहुत सारी जानकारी है और मुझे कुछ याद हो सकता है।

अंत में, यहां रेप्लिका सेट्स पर एक लिंक दिया गया है, जो आपकी मदद कर सकता है क्योंकि यह cli से कई mongod उदाहरण शुरू करने पर उदाहरण आया है - http://www.mongodb.org/display/DOCS/Replica+Set+Tutorial



2

मैं उपरोक्त उत्तर के साथ एक समस्या में भाग गया, जहां स्टॉप-स्टार्ट-डेमॉन एक ही बार एक से अधिक नाम के साथ एक नई प्रक्रिया शुरू नहीं करता है। हालाँकि, एक --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तर्क इस उदाहरण को विशिष्ट बनाता है और इसे अन्य मोंगॉड उदाहरणों से अलग शुरू करने की अनुमति देता है।


0

upstart स्क्रिप्ट में पाए जाते हैं /etc/init/


thnx, एक mongodb.conf है, लेकिन यह डिफ़ॉल्ट रनिंग इंस्टेंस के लिए डिफ़ॉल्ट

मैंने अभी-अभी अपने mongodb.conf पर एक नज़र डाली है। यह / etc / default / mongodb संभवत: कॉन्फ़िगरेशन के लिए है और फिर स्टार्ट-स्टॉप-डेमन

आप इस फाइल को कॉपी कर सकते हैं और एक अलग पोर्ट के साथ मोंगोडब शुरू करने के लिए कमांड को संशोधित कर सकते हैं। आप शायद पूरी तरह से नई कॉन्फिग फ़ाइल निर्दिष्ट करना चाहते हैं, ताकि आप लॉग फाइल आदि को बदल सकें
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.