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.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









