Script de inicio en ubuntu para mongodb


11

Soy nuevo en linux y mongodb. Ya instalé mongodb en ubuntu pero quiero ejecutar una instancia más en un puerto diferente. Como entendí por otras preguntas y foros, debe haber una secuencia de comandos inicial. /programming/7300109/ubuntu-start-upstart-second-instance-of-mongodb

Pero no puedo encontrar o ubicar un script de inicio en mi servidor. Si creo un script de inicio, ¿dónde debo ubicarlo para comenzar como un servicio?

¿o hay alguna otra forma correcta y fácil de iniciar otra instancia de mongodb en el mismo servidor pero con un puerto diferente?

Respuestas:


8

¿Está ejecutando desde el repositorio 10gen o desde el repositorio predeterminado de Debian / Ubuntu? Recomiendo usar el repositorio oficial de 10gen.

Consulte este enlace: [10gen MongoDB How-To Install en Ubuntu:] http://docs.mongodb.org/manual/tutorial/install-mongodb-on-ubuntu/ . Es mejor desinstalar la instalación anterior de mongodb antes de este cambio, que también requerirá que modifique su fuente de repositorio (en /etc/apt/source.list) pero esto también se detalla en el enlace de arriba. Recomiendo usar upstart sobre sysvinit y el proceso se describe en el Cómo.

Con la configuración de Ubuntu 10gen, el archivo de configuración está en /etc/mongodb.conf.

Hay varias maneras en que puede ejecutar un proceso mongod por separado, una sería simplemente ejecutarlo desde el cli:

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

que producirá (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

y puedes conectarte a través del cli -> mongod --port 3001

Otra forma es crear una copia de /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

He cambiado el dbpath (donde se almacenan los archivos mongodb) de / var / lib / mongodb a / var / lib / mongodbnew; la ruta de registro ha cambiado de mongodb.log a mongodbnew.log y el puerto ha cambiado del valor predeterminado de 27017 a 27018 (también deberá eliminar el # para descomentar la línea).

También cambié la línea superior para reflejar el nuevo nombre de este archivo de configuración.

También tendrá que crear el directorio de datos porque no existirá y sin él, el proceso mongod no se iniciará y se asegurará de que el propietario y el grupo sean mongodb:

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

Además, cree y cambie las transmisiones de su archivo de registro:

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

Para iniciar su nuevo proceso mongod (en segundo plano) desde el cli, escriba

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

que envían lo siguiente a la pantalla:

"toda la salida va a: /var/log/mongodb/mongodbnew.log"

Compruebe que los procesos mongod se ejecutan 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

Para verificar que puede conectarse, ejecute el shell Mongo:

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

Con lsof, ahora debería ver sus dos procesos mongod, el original vinculado a 27017 y el nuevo vinculado 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)

Para asegurarse de que los dos procesos se ejecutan al inicio, copie el archivo de configuración de inicio original:

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

que debería dar como resultado dos archivos como -

$ 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

Edite el nuevo archivo mongodbnew.conf usando vi o lo que prefiera para verse así:


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

detenerse en el nivel de ejecución [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

fin de guión

He probado esto en Ubuntu 12.04 y parece funcionar bien, incluso después de un reinicio. Obviamente no lo he ejecutado en producción. Disculpas, si hay algún error tipográfico arriba pero hay mucha información y puede que me haya perdido algo.

Finalmente, aquí hay un enlace en los Conjuntos de réplicas que pueden ayudarlo, ya que ha proporcionado ejemplos sobre cómo iniciar múltiples instancias mongod desde el cli: http://www.mongodb.org/display/DOCS/Replica+Set+Tutorial .



2

Me encontré con un problema con la respuesta anterior donde stop-start-daemon no inicia un nuevo proceso con el mismo nombre más de una vez. Sin embargo, hay un --nameargumento que le permite cambiar la línea en su secuencia de comandos inicial /etc/init/para incluir un nuevo nombre para que comience. Algo como esto:

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

En este caso, el --nameargumento hace que esta instancia sea única y le permite comenzar por separado de otras instancias mongod.


0

upstart los guiones se encuentran en /etc/init/


thnx, hay un mongodb.conf pero es el archivo conf predeterminado para la instancia de ejecución predeterminada

Acabo de echar un vistazo a mi mongodb.conf busca fuentes / etc / default / mongodb presumiblemente para la configuración y luego inicia mongodb usando start-stop-daemon

puede copiar este archivo y modificar el comando para iniciar mongodb con un puerto diferente. es probable que desee para especificar un nuevo archivo de configuración, así que usted puede cambiar los archivos de registro, etc
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.