Publicidad

lunes, 27 de enero de 2014

Crear Demonio de Arranque Odoo (OPENERP 8.0)

Hacer Funcionar Odoo (OPENERP 8.0) como un Servicio del Sistema

    Para que openerp-server pueda funcionar como un servicio de cualquier S.O. en Linux tenemos que entrar en la ruta:

/etc/init.d/

    Dentro de esta ruta debemos crear nuestro demonio le pondremos como nombre openerp-server-70 como referencia que es la versión 7.0 de OPENERP, y así poder tener distintos demonios para versiones diferentes,  para crear el archivo usamos el comando:

sudo nano openerp-server

    Damos Ctrl+O y Enter para guardar el archivo ahora tendremos en la ruta /etc/init.d nuestro demonio openerp-server-70, como la siguiente imagen:


Ahora debemos editar nuevamente este archivo escribimos en la terminar :

sudo nano openerp-server-70

Y Pegamos el siguiente código:


#!/bin/sh

#
# OpenERP init script v0.1 for centos by Open-Future
# Bert Deferme - www.open-future.be - bert@open-future.be
#

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License version 3 as
# published by the Free Software Foundation.
#
# For a copy of the GNU General Public License, see <http://www.gnu.org/licenses/>.
#
# Creado por poncesoft.blogspot.com
# By German Ponce Dominguez
#
# chkconfig: 345 60 61
# description: starts the openerp-server service

NAME=openerp-server-70
USER=german

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
PIDDIR=/var/run/openerp-server-70
PIDFILE=$PIDDIR/$NAME.pid
DAEMON=/home/german/openerp/70/server/openerp-server
DAEMONOPTS=" -c /home/german/openerp/70/openerp-server.conf --pidfile=${PIDFILE} "

checkpid() {
  [ -f $PIDFILE ] || return 1
  pid=`cat $PIDFILE`
  [ -d /proc/$pid ] && return 0
  return 1
}

do_start() {

  if [ -f $PIDFILE ]; then
    echo "pidfile already exists: $PIDFILE"
    exit 1
  fi

  echo -n "Starting $NAME: "

  if [ ! -d $PIDDIR ]
  then
      mkdir $PIDDIR
      chown $USER $PIDDIR
  fi

  su - $USER -c "nohup $DAEMON $DAEMONOPTS >/dev/null 2>&1 &"

  sleep 3

  checkpid
  if [ $? -eq 1 ]; then
    rm -f $PIDFILE
    echo "failed."
    exit 1
  fi

  echo "done."
}

do_stop() {

  checkpid

  if [ $? -eq 1 ]; then
    echo -n "$NAME not running... (no pidfile found)"
    exit 0
  fi

  echo -n "Stopping $NAME: "

  pid=`cat $PIDFILE`
  kill -15 $pid

  sleep 2

  if [ $? -eq 1 ]; then
    echo "Failed. (pidfile found but process didn't exist)"
    exit 1
  fi

  echo "done."

}

do_status() {

  echo -n "Checking $NAME: "

  checkpid

  if [ $? -eq 1 ]; then
    echo "stopped."
  else
    echo "running."
  fi

}
do_restart() {

  do_stop

  if [ $? -eq 1 ]; then
    exit 1
  fi

  do_start

}

case "$1" in
    start) do_start ;;
    stop) do_stop ;;
    restart|force-reload) do_restart ;;
    status) do_status ;;
    *)
        N=/etc/init.d/$NAME
        echo "Usage: $N {start|stop|restart|status}" >&2
        exit 1
        ;;
esac

exit 0

####################### FIN DEL DEMONIO #######################

Ahora debemos modificar las siguientes lineas, la explicación esta en negrita:

NAME=openerp-server-70 ### Este es el nombre del demonio de arranque
USER=german ### Es el usuario del Sistema que podra levantar y sera dueño de este Servicio

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin ### Este Path lo dejamos tal Cual
PIDDIR=/var/run/openerp-server-70 ### La ruta donde podra crearse el archivo Pid
PIDFILE=$PIDDIR/$NAME.pid ### Es el nombre del archivo pid con la ruta que le Asignamos
DAEMON=/home/german/openerp/70/server/openerp-server ### La ruta del openerp-server donde lo tengamos descargado en este casi mi instalacion esta en la carpeta Home dentro de server
DAEMONOPTS=" -c /home/german/openerp/70/openerp-server.conf --pidfile=${PIDFILE} " ### Es el archivo de configuracion para el servidor openerp-server y donde se encuentra (La Ruta)

Ahora debemos crear la ruta del pid que es la que pusimos anteriormente en la variable del Demonio :

PIDDIR=/var/run/openerp-server-70

Entramos en la ruta /var/run/:

cd /var/run/

Creamos la carpeta openerp-server-70:

sudo mkdir openerp-server-70

Cambiamos los permisos de esta carpeta hacia el usuario german que es el dueño del servicio:

sudo chown german.german openerp-server-70
(german.german es el usuario)

Nos mostrara algo similar a la siguiente pantalla:

    Ahora solo nos falta crear el archivo de configuración de OPENERP, para ello arrancamos nuestro server de OPENERP:

cd /home/german/openerp/70/server ### La ruta de mi Servidor de OPENERP

Ahora arrancamos el archivo openerp-server con el siguiente comando:

python openerp-server --addons-path=../modulos_link/ --db_host=localhost --db_user=openerp --db_password=openerp --db_port=5432 --xmlrpc-port=8069 --netrpc-port=8070 -c ../openerp-server.conf -s

    Noten que agregamos al final -c ../openerp-server.conf -s con esto creamos el archivo openerp-server.conf

    Listo Tenemos ahora terminado Nuestro Demonio de Arranque, solo debemos reiniciar y aplicar el siguiente comando:

service openerp-server-70 start

Con esto podemos iniciar, detener y reiniciar el servicio de manera fácil.....


5 comentarios:

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  2. Hola buen día Roman, una pregunta, has podido instalar multiples instancias de odoo 8 en un servidor centos 7? Tengo instalada una instancia, pero a intentar crear una nueva el nuevo servicio inicia pero después de unos segundos se detiene. No se si has realizado la creación de instancias en centos. Excelente día. Saludos.

    ResponderEliminar
    Respuestas
    1. Hola, claro que se puede debes configurar cada instancia en un puerto distinto para cada una por ejemplo, puerto 8069, segunda puerto 8269, etc...

      Cada una puedes crearla con un usuario postgres independiente para que no se mezclen las Bases de Datos.

      Eliminar
  3. Gracias por tu respuesta, la creación de instancias lo he hecho sin problemas en Ubuntu, pero en Centos no he podido, la instalación la hice directamente instalando el repositorio de odoo, e instalando con yum install odoo. He copiado el archivo de configuración y el archivo del servicio, creado un nuevo usuario en postgresql, el archivo de configuración lo cconfiguro para otro puerto y con el nuevo usuario de postgresql, pero al correr el proceso inicia pero despues de unos segundo truena sin marcar error en el log de odoo. No se si en centos has tenido la oportunidad de instalar varias instancias?, saludos.

    ResponderEliminar