lunes, 25 de enero de 2016


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 $RETVAL


4) Inclusión del script daemon en las llaves del sistema ubuntu

Para añadir el script:
root@skx:~# update-rc.d  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


Para remover el script:
root@skx:/etc/rc2.d# update-rc.d -f  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


5) 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/

0 comentarios:

Publicar un comentario

Subscribe to RSS Feed Sígueme en twitter!