Script di avvio in Ubuntu per mongodb


11

Sono nuovo di Linux e MongoDB. Ho già installato mongodb su Ubuntu ma voglio eseguire un'altra istanza su un'altra porta. Come ho capito da altre domande e forum, ci deve essere uno script iniziale. /programming/7300109/ubuntu-start-upstart-second-instance-of-mongodb

Ma non riesco a trovare o individuare uno script upstart sul mio server. Se creo uno script upstart, dove dovrei trovarlo per avviarlo come servizio.

o esiste un altro modo semplice e appropriato per avviare un'altra istanza di mongodb sullo stesso server ma con una porta diversa.

Risposte:


8

Stai eseguendo dal repository 10gen o dal repository Debian / Ubuntu predefinito? Consiglio di utilizzare il repository 10gen ufficiale.

Dai un'occhiata a questo link - [10gen MongoDB How-To Install su Ubuntu:] http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ . È meglio disinstallare la precedente installazione di mongodb prima di questa modifica, che richiederà anche di modificare la fonte del repository (in /etc/apt/source.list) ma questo è anche dettagliato nel link sopra. Consiglio di utilizzare upstart su sysvinit e l'elaborazione è descritta nel How-To.

Con il set-up Ubuntu 10gen, il file di configurazione è in /etc/mongodb.conf.

Esistono diversi modi in cui è possibile eseguire un processo mongod separato, si potrebbe semplicemente eseguirlo dal cli -

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

che produrrà (usando '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

e puoi connetterti tramite cli -> mongod --port 3001

Un altro modo è creare una copia di /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

Ho modificato il dbpath (dove sono memorizzati i file mongodb) da / var / lib / mongodb a / var / lib / mongodbnew; il percorso del registro è stato modificato da mongodb.log a mongodbnew.log e la porta è stata modificata dal valore predefinito da 27017 a 27018 (sarà inoltre necessario rimuovere # per rimuovere il commento dalla riga).

Ho anche cambiato la riga superiore per riflettere il nuovo nome di questo file di configurazione.

Dovrai anche creare la directory dei dati perché non esisterà e senza di essa, il processo mongod non si avvierà e assicurerà che il proprietario e il gruppo siano mongodb -

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

Inoltre, crea e modifica le convinzioni del tuo file di registro -

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

Per iniziare il nuovo processo di mongod (in background) dal cli, digitare

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

che invia quanto segue allo schermo -

"tutto l'output va a: /var/log/mongodb/mongodbnew.log"

Verifica che i processi mongod siano in esecuzione con "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

Per verificare che sia possibile connettersi, eseguire la shell Mongo -

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

Con lsof, ora dovresti vedere i tuoi due processi mongod, l'originale associato a 27017 e il nuovo associato a 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)

Per assicurarsi che i due processi vengano eseguiti all'avvio, copiare il file di configurazione iniziale init -

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

che dovrebbe tradursi in due file come -

$ 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

Modifica il nuovo file mongodbnew.conf usando vi o qualunque cosa tu preferisca assomigliare a questo -


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

stop on 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

fine script

Ho provato questo su Ubuntu 12.04 e sembra funzionare bene, anche dopo un riavvio. Non l'ho eseguito in produzione ovviamente. Mi scuso, se c'è qualche errore di battitura sopra, ma ci sono molte informazioni e potrei aver perso qualcosa.

Infine, ecco un link sui set di repliche che potrebbe esserti di aiuto in quanto sono venuti degli esempi sull'avvio di più istanze di mongod dal cli - http://www.mongodb.org/display/DOCS/Replica+Set+Tutorial .


Il collegamento per install-mongodb-on-debian-o-ubuntu-linux è stato modificato in docs.mongodb.org/manual/tutorial/install-mongodb-on-debian e docs.mongodb.org/manual/tutorial/install-mongodb -on-ubuntu .
Fernando Kosh,

2

Ho riscontrato un problema con la risposta precedente in cui stop-start-daemon non avvia un nuovo processo con lo stesso nome più di una volta. Tuttavia, c'è un --nameargomento che ti consente di cambiare la linea nel tuo script upstart /etc/init/per includere un nuovo nome in modo che inizi. Qualcosa come questo:

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

In questo caso l' --nameargomento rende unica questa istanza e le consente di avviarsi separatamente dalle altre istanze di mongod.


0

upstart gli script si trovano in /etc/init/


grazie, c'è un mongodb.conf ma è il file conf predefinito per l'istanza in esecuzione predefinita

Ho appena dato un'occhiata al mio mongodb.conf che genera / etc / default / mongodb presumibilmente per la configurazione e quindi avvia mongodb usando start-stop-daemon

è possibile copiare questo file e modificare il comando per avviare mongodb con una porta diversa. probabilmente vorrai specificare un file di configurazione completamente nuovo in modo da poter cambiare i file di registro ecc.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.