Crear varias instancias para desarrollo en OpenERP (Odoo) sobre Debian

Recientemente, se presentó la demanda de mantener un único núcleo de OpenERP para varios desarrolladores, con la finalidad de tener todos la misma versión de desarrollo y fusionar los cambios realizados, esta versión única puede tener asociado varios enlaces de módulos addons con una configuración específica.

Una idea obtenida a base de pequeños desgloses, fue crear un script para el demonio o servicio de OpenERP por cada desarrollador, igualmente, un archivo de configuración para cada desarrollador, en dicho archivo, se configuran los parámetros de configuración de OpenERP con un puerto de conexión específico para cada desarrollador.

Imaginemos que tenemos tres desarrolladores:

  • desa1
  • desa2
  • desa3

Haciendo el script del servicio para OpenERP

Se hace una copia idéntica del script que viene por defecto en la instalación de OpenERP para Debian, como usuario root sería:

cp /etc/init.d/openerp /etc/init.d/openerp-desa1
cp /etc/init.d/openerp /etc/init.d/openerp-desa2
cp /etc/init.d/openerp /etc/init.d/openerp-desa3

Una vez copiados los archivos, se editan y se cambian algunas variables, quedarían algo como lo siguiente:

#!/bin/sh

### BEGIN INIT INFO
# Provides:		openerp-desa1
# Required-Start:	$remote_fs $syslog
# Required-Stop:	$remote_fs $syslog
# Should-Start:		$network
# Should-Stop:		$network
# Default-Start:	2 3 4 5
# Default-Stop:		0 1 6
# Short-Description:	Enterprise Resource Management software
# Description:		Open ERP is a complete ERP and CRM software.
### END INIT INFO

PATH=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/openerp-server
NAME=openerp-desa1
DESC=openerp-desa1
CONFIG=/etc/openerp/openerp-desa1.conf
LOGFILE=/var/log/openerp/openerp-desa1.log
USER=openerp

test -x ${DAEMON} || exit 0

set -e

do_start () {
    echo -n "Starting ${DESC}: "
    start-stop-daemon --start --quiet --pidfile /var/run/${NAME}.pid --chuid ${USER} --background --make-pidfile --exec ${DAEMON} -- --config=${CONFIG} --logfile=${LOGFILE}
    echo "${NAME}."
}

do_stop () {
    echo -n "Stopping ${DESC}: "
    start-stop-daemon --stop --quiet --pidfile /var/run/${NAME}.pid --oknodo
    echo "${NAME}."
}

case "${1}" in
    start)
        do_start
        ;;

    stop)
        do_stop
        ;;

    restart|force-reload)
        echo -n "Restarting ${DESC}: "
        do_stop
        sleep 1
        do_start
        ;;

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

exit 0

Así sucesivamente con el resto de los archivos para script del servicio.

Luego que se tienen los archivos creados, se deben agregar al entorno de init para que se encienda y se apague de manera automática, esto sería como root de la siguiente manera:

insserv -d -f openerp-desa1
insserv -d -f openerp-desa2
insserv -d -f openerp-desa3

Agregando el archivo por defecto al esquema del servicio init, se debe tomar muy en cuenta los parámetros o variables modificados en el contenido de cada archivo, ya que cada parámetro cambiado indicará información relevante para el servicio y para el desarrollador.

Haciendo el archivo de configuración por cada desarrollador

Luego, se realiza el archivo de configuración, para desa1 llamado openerp-desa1.conf quedaría algo parecido a lo siguiente:

[options]
; Configuracion comun
addons_path = /opt/desa1

; Configuraciones conexion estandar XML-RPC
xmlrpc_interface = 
xmlrpc_port = 8071
xmlrpc = True

; Configuraciones conexion segura XML-RPC
xmlrpcs_interface = 
xmlrpcs_port = 9071
xmlrpcs = True

; Configuraciones filtros de base de datos (con expresion regular)
db_filter = .*

; Configuracion de logs
logrotate = True

; Configuracion SMTP
smtp_server = localhost
smtp_port = 25
smtp_ssl = False
smtp_user = False
smtp_password = False

; Opciones de base de datos
db_user = openerp
db_password = False
db_host = False
db_port = False
db_maxconn = 50
db_template = template1

; Opciones avanzadas
max_cron_threads = 2

; Opciones de multiprocesamiento
limit_memory_soft = 209715200
limit_memory_hard = 209715200
limit_time_cpu = 60
limit_time_real = 120
limit_request = 8192

El archivo se guarda en la ruta /etc/openerp, así se harían los demás archivos y se guardan en la misma ruta con la única diferencia que se cambian los nombres y los puertos de conexión, tanto para conexión normal como conexión segura.

La variable o parámetro para el puerto de conexión normal sería:

xmlrpc_port = 8071

Y el parámetro para conexión segura sería:

xmlrpcs_port = 9071

Luego se cambian los permisos de los archivos de configuración creados:

chown openerp.openerp /etc/openerp/openerp-desa*

Una vez realizados los archivos de configuración, se pueden iniciar cada uno de los servicios para cada desarrollador:

invoke-rc.d openerp-desa1 start
invoke-rc.d openerp-desa2 start
invoke-rc.d openerp-desa3 start

Cada desarrollador tendrá su respectivo archivo de log en la ruta indicada por el script de arranque, también se indicará el archivo de configuración y para corroborar toda la información luego que se inicia cada servicio, se pudiera usar:

ps -ef | grep openerp

Con esto se reflejan los procesos relacionados con OpenERP.

Advertisements

About felixurbina

Humano con todos los defectos y virtudes que vienen de fábrica.
This entry was posted in Debian, Odoo, OpenERP. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s