PRE REQUISITOS:
- Pre instalación de mongo database en su versión 10gen... Si no has hecho la instalación puedes seguir esta guía: Instalar MongoDB 3.X en Ubuntu
- (Opcional) Desde windows, pre instalar el programa Vim para evitar conflictos de espacios, derivando en archivos corruptos al traspasar a Linux las ediciones. Una vez en el VIM, si copias y pegas segmentos o preferiblemente siempre antes de guardar ejecuta lo siguiente:
:set fileformat=unix
1) VERIFICACIÓN DE PERMISOS
Lo primero que debemos hacer es verificar los permisos de las carpetas /var/lib/mongodb y /data/db , de las cuales usaremos /data/db en nuestro archivos de configuración que veremos a continuación; por lo tanto, debemos asegurarnos que ambas carpetas tengan el usuario requerido por mongo. En las instalaciones default por lo general se requiere que estas carpetas tengan los usuarios "mongodb" y "root" con acceso a todas las subcarpetas y archivos.
Para equiparar permisos se puede utilizar el siguiente script:
sudo chown -R /data/db
No está demás indicar un comando para buscar nombres de archivos en todo el sistema antes de continuar:
$ find / -mount -name '*'
2) ARCHIVO MONGOD.CONF EN LA CARPETA /etc
Este archivo posiblemente se haya creado con la instalación de mongo, de igual manera dejaré un ejemplo que está funcionando:
# mongod.conf # for documentation of all options, see: # http://docs.mongodb.org/manual/reference/configuration-options/ # Where and how to store data. storage: dbPath: /data/db journal: enabled: true # engine: # mmapv1: # wiredTiger: # where to write logging data. systemLog: destination: file logAppend: true path: /var/log/mongodb/mongod.log # network interfaces net: port: 27017 bindIp: 0.0.0.0 #operationProfiling: #replication: #sharding: ## Enterprise-Only Options: #auditLog: #snmp:3) ARCHIVO MONGODB EN LA CARPETA /etc/init.d - Este archivo es el script daemon que invocará el servicio llamando a su vez al otro archivo .conf de la carpeta etc... - Un ejemplo de script daemon mongo funcionando:
# !/bin/sh ### BEGIN INIT INFO # Provides: mongodbstartup # Required-Start: $remote_fs $syslog # Required-Stop: $remote_fs $syslog # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: Start mongo database instance at boot time # Description: Enable service provided by mongo. ### END INIT INFO # mongodb Startup script for the mongodb server # # chkconfig: - 64 36 # description: MongoDB Database Server # # processname: mongodb # #set -e #set -u # Source function library #. /etc/rc.d/init.d/functions . /lib/lsb/init-functions #if [ -f /etc/sysconfig/mongodb ]; then # . /etc/sysconfig/mongodb #fi prog="mongod" mongod="/usr/bin/mongod" mongodb_user="luiseliberal" RETVAL=0 start() { echo -n $"Starting $prog: " #daemon $mongod "--fork --logpath /var/log/mongodb/mongod.log --logappend 2>&1 >> /var/log/mongodb/mongod.log" daemon --user=$mongodb_user $mongod "--config /etc/init/mongod.conf" RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog return $RETVAL } stop() { echo -n $"Stopping $prog: " killproc $prog RETVAL=$? echo [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog return $RETVAL } reload() { echo -n $"Reloading $prog: " killproc $prog -HUP RETVAL=$? echo return $RETVAL } case "$1" in start) start ;; stop) stop ;; restart) stop start ;; condrestart) if [ -f /var/lock/subsys/$prog ]; then stop start fi ;; reload) reload ;; status) status $mongod RETVAL=$? ;; *) echo $"Usage: $0 {start|stop|restart|condrestart|reload|status}" if [ -f /var/lib/mongodb/mongod.lock ] ; then rm /var/lib/mongodb/mongod.lock fi if [ -f /data/db/mongod.lock ] ; then rm /data/db/mongod.lock fi mongod --repair mongod --auth RETVAL=1 esac exit $RETVAL4) Inclusión del script daemon en las llaves del sistema ubuntu Para añadir el script:
root@skx:~# update-rc.dPara remover el script:defaults Adding system startup for /etc/init.d/blah ... /etc/rc0.d/K20blah -> ../init.d/blah /etc/rc1.d/K20blah -> ../init.d/blah /etc/rc6.d/K20blah -> ../init.d/blah /etc/rc2.d/S20blah -> ../init.d/blah /etc/rc3.d/S20blah -> ../init.d/blah /etc/rc4.d/S20blah -> ../init.d/blah /etc/rc5.d/S20blah -> ../init.d/blah
root@skx:/etc/rc2.d# update-rc.d -f5) EJECUCIÓN Y TEST - Algo muy importante es el probar estos archivos y para ello puedes ejecutar desde la consola, ubicándote en la carpeta contenedora el siguiente comando: Para iniciarlo: ./mongodb Para iniciarlo y verificar la ejecución: ./mongodb > mongodbtest (mongodbtest es un archivo creado en la misma carpeta) - El log para visualizar los errores y avances en la concreción del script estaría ubicado en la siguiente ruta de sistema: /var/log/boot.log y pasando este nivel el próximo log sería el que se tiene parametrizado en los scripts; en mi caso esta en la ruta: var/log/mongodb/mongodb.log Es importante también no confundir Upstart (etc/init) con los tradicionales scripts Daemon (etc/init.d), partiendo de que son configuraciones distintas y se ubican en repositorios distintos. SHARD MONGO SERVERS (AVANZADO) http://www.joslynesser.com/blog/archives/2010/09/28/mongodb-sharding-guide-server-setup-on-ubuntu-ec2/remove update-rc.d: /etc/init.d/blah exists during rc.d purge (continuing) Removing any system startup links for /etc/init.d/blah ... /etc/rc0.d/K20blah /etc/rc1.d/K20blah /etc/rc2.d/S20blah /etc/rc3.d/S20blah /etc/rc4.d/S20blah /etc/rc5.d/S20blah /etc/rc6.d/K20blah