Instalación de OpenERP 7.0 y Odoo 8.0 en Linux Ubuntu Server 14.04 LTS

Buen día tengan todos.

En esta entrada, como parte de una actualización a la pasada guía en donde les enseñe los pasos de instalación para OpenERP 7.0 en Ubuntu 12.04, Ahora lo haremos para Odoo sobre Ubuntu Server 14.04, ademas, otra característica, es que el código será descargado de los repositorios de Odoo en GitHub. Y debido a esto, podremos usar cualquiera de sus versiones, para efecto de esta guía, probaremos la versión de OpenERP 7.0 y Odoo 8.0.

Instalar dependencias

supervisor@Server:~$ sudo apt-get install bzr bzrtools graphviz postgresql postgresql-client-common python python-dateutil python-dev python-egenix-mxdatetime python-egenix-mxdatetime python-feedparser python-gdata python-hippocanvas python-imaging python-ldap python-libxml2 python-libxslt1 python-lxml python-mako python-matplotlib python-numpy python-openid python-psycopg2 python-pybabel python-pychart python-pydot python-pyparsing python-reportlab python-setuptools python-simplejson python-tz python-vatnumber python-vobject python-webdav python-werkzeug python-xlwt python-yaml python-zsi python-psutil python-docutils docutils-common docutils-doc python-jinja2 python-mock python-pygments python-roman python-unittest2 openssl xmlstarlet xsltproc python-soappy git python-decorator python-pypdf

Configuración de PostgreSQL

supervisor@Server:~$ sudo su postgres 
postgres@Server:/home/supervisor$ psql --version
psql (PostgreSQL) 9.3.5
postgres@Server:/home/supervisor$ exit
supervisor@Server:~$ sudo nano /etc/postgresql/9.3/main/pg_hba.conf

Agregar la linea:

local      all       openerp       md5

Reiniciar el servidor de Postgres:

supervisor@Server:~$ sudo service postgresql restart 
 * Restarting PostgreSQL 9.3 database server [ OK ]

Creacion de Usuario openerp

Se deben crear los usuarios openerp, tanto en Postgres como en Ubuntu.

Crear el usuario en Postgres:

supervisor@Server:~$ sudo su postgres
postgres@Server:/home/supervisor$ createuser -d -R -S -P openerp
Enter password for new role: 
Enter it again: 
postgres@Server:/home/supervisor$ exit

Crear el usuario en Linux Ubuntu:

supervisor@Server:~$ sudo adduser openerp
Añadiendo el usuario `openerp' ...
Añadiendo el nuevo grupo `openerp' (1001) ...
Añadiendo el nuevo usuario `openerp' (1001) con grupo `openerp' ...
Creando el directorio personal `/home/openerp' ...
Copiando los ficheros desde `/etc/skel' ...
no talloc stackframe at ../source3/param/loadparm.c:4864, leaking memory
Introduzca la nueva contraseña de UNIX: 
Vuelva a escribir la nueva contraseña de UNIX: 
passwd: password updated successfully
Changing the user information for openerp
Enter the new value, or press ENTER for the default
 Full Name []: OpenERP System User
 Room Number []: 
 Work Phone []: 
 Home Phone []: 
 Other []: 
¿Es correcta la información? [S/n] s

Creación de Directorios

Antes de descargar el código, crearemos una estructura de directorios para alojar él código del sistema Odoo, para eso crearemos una estructura similar a la siguiente:

supervisor@Server:~$ sudo su openerp 
openerp@Server:/home/supervisor$ mkdir /home/openerp/instancias/estable/odoo -p
openerp@Server:/home/supervisor$ cd /home/openerp/instancias/estable/odoo/
openerp@Server:~/instancias/estable/odoo$

Descarga de Fuentes de Odoo desde GitHub

openerp@Server:~/instancias/estable/odoo$ git clone https://github.com/odoo/odoo.git server
Clonar en «server»...
remote: Counting objects: 1379020, done.
remote: Compressing objects: 100% (156/156), done.
remote: Total 1379020 (delta 118), reused 91 (delta 63)
Receiving objects: 100% (1379020/1379020), 528.83 MiB | 307.00 KiB/s, done.
Resolving deltas: 100% (1167424/1167424), done.
Checking connectivity... hecho.
Checking out files: 100% (13568/13568), done.
openerp@Server:~/instancias/estable/odoo/server$ git status 
En la rama 8.0
Your branch is up-to-date with 'origin/8.0'.
nothing to commit, working directory clean

Por default, la rama seleccionada es para la versión de Odoo 8.0, pero en este caso, mi objetivo es usar la versión 7.0, entonces cambio a la rama estable para dicha versión 7.0:

openerp@Server:~/instancias/estable/odoo/server$ git branch
 * 8.0
openerp@Server:~/instancias/estable/odoo/server$ git checkout 7.0
 Checking out files: 100% (14043/14043), done.
 Branch 7.0 set up to track remote branch 7.0 from origin.
 Switched to a new branch '7.0'
openerp@Server:~/instancias/estable/odoo/server$ git branch
 * 7.0
 8.0

Probando el servidor OpenERP 7.0

Observación: En el paso anterior, al descargar el código de GitHub, nos hemos posicionado en la rama 7.0. Es por eso que la versión que estaremos probando con la ejecucion de las instrucciones siguientes, es la versión 7.0.

Notase al final de la instrucción el parámetro -s y ténganlo en cuenta para un paso mas adelante.

openerp@Server:~/instancias/estable/odoo/server$ ./openerp-server -w openerp -r openerp --addons-path=addons -s
2014-10-10 05:51:31,716 2786 INFO ? openerp: OpenERP version 7.0
2014-10-10 05:51:31,716 2786 INFO ? openerp: addons paths: /home/openerp/instancias/estable/odoo/server/addons
2014-10-10 05:51:31,716 2786 INFO ? openerp: database hostname: localhost
2014-10-10 05:51:31,717 2786 INFO ? openerp: database port: 5432
2014-10-10 05:51:31,717 2786 INFO ? openerp: database user: openerp
2014-10-10 05:51:35,141 2786 INFO ? openerp.addons.google_docs.google_docs: GData lib version `%s GData-Python/2.0.18` detected
2014-10-10 05:51:37,909 2786 INFO ? openerp.service.wsgi_server: HTTP service (werkzeug) running on 0.0.0.0:8069
2014-10-10 05:51:37,909 2786 INFO ? openerp: OpenERP server is running, waiting for connections...

openerp-inicio-db-manager

Contro + C para detener el servidor.

Probando el servidor Odoo 8.0

Posicionarnos en la rama 8.0:

openerp@Server:~/instancias/estable/odoo/server$ git checkout 8.0

Ejecutando el servidor:

openerp@Server:~/instancias/estable/odoo/server$ ./openerp-server --addons-path=addons -w openerp -r openerp
2014-10-10 06:29:07,636 5645 INFO ? openerp: OpenERP version 8.0
2014-10-10 06:29:07,636 5645 INFO ? openerp: addons paths: ['/home/openerp/.local/share/Odoo/addons/8.0', u'/home/openerp/instancias/estable/odoo/server/addons', '/home/openerp/instancias/estable/odoo/server/openerp/addons']
2014-10-10 06:29:07,637 5645 INFO ? openerp: database hostname: localhost
2014-10-10 06:29:07,637 5645 INFO ? openerp: database port: 5432
2014-10-10 06:29:07,637 5645 INFO ? openerp: database user: openerp
2014-10-10 06:29:07,754 5645 INFO ? openerp.service.server: HTTP service (werkzeug) running on 0.0.0.0:8069

odoo-inicio-db-manager

Control + C para detenerlo.

Crear directorio de archivos de Configuración

openerp@Server:~/instancias/estable/odoo/server$ mkdir /home/openerp/instancias/config -p

Ahora, en el paso anterior, al momento de ejecutar y probar la version de OpenERP 7.0, entonces, hice la aclaración de que al final de la instrucción le pasamos el parametro -s y esto se hizo con la intencion de que se creara en automático el archivo de configuración en base a los parámetros de dicha ejecución. Por lo que sigue ahora es copiar dicho archivo generado al directorio antes creado para este fin.

Entonces, solo por aclarar, mi intención es dejar funcionando en este servidor la versión 7.0, pero si ustedes quieren dejar funcionando la version de Odoo 8.0, entonces basta con ejecutar de nueva cuenta la linea que usamos para probar Odoo 8.0, pero agregando la opcion -s:

openerp@Server:~/instancias/estable/odoo/server$ git checkout 8.0
openerp@Server:~/instancias/estable/odoo/server$ ./openerp-server --addons-path=addons -w openerp -r openerp -s

Entonces, como comentaba, voy a copiar el archivo a mi directorio de archivos de configuración:

openerp@Server:~/instancias/estable/odoo/server$ cp ~/.openerp_serverrc /home/openerp/instancias/config/estable_70.conf

Crear directorio para logs del sistema

openerp@Server:~/instancias/estable/odoo/server$ mkdir /home/openerp/instancias/logs
openerp@Server:~/instancias/estable/odoo/server$ nano /home/openerp/instancias/config/estable_70.conf

Ahora, editar el archivo de configuración y buscar la linea del parámetro “logfile” y complementarla como sigue:

logfile = /home/openerp/instancias/logs/system.log

Generar un servicio del sistema para ejecutar OpenERP al inicio del servidor
Script de ejecucion de OpenERP:

openerp@Server:~/instancias/estable/odoo/server$ exit
supervisor@Server:~$ nano openerp-server

Pegar el contenido siguiente:

#!/bin/sh
### BEGIN INIT INFO
# Provides: openerp-server
# Required-Start: $syslog
# Required-Stop: $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

NAME=openerp-server
DESC=openerp-server
SERVEREXE=openerp-server

LOG=TRUE
# path al directorio de instancias de OpenERP
OERPPATH=/home/openerp/instancias

# Default OpenERP server python executable
DAEMON=${OERPPATH}/estable/odoo/server/${SERVEREXE}

# Default server config file
CONFIGFILE=${OERPPATH}/config/estable_70.conf

# Specify the user name (Default: openerp).
USER=openerp

# Assign order (start, stop, restart|force-reload, status)to $ORDER
if [ -z $1 ]; then
   N=/etc/init.d/${NAME}
   echo "Usage: ${NAME} {start|stop|restart|force-reload|status} [openerp-options ]" >&2
   exit 1
fi

ORDER="${1}"
shift

# Additional options that are passed to the Daemon.
PARAM=""
if [ $# -ge 1 ]; then
    while [ ! -z "${1}" ]; do
        PARAM="${PARAM} ${1}"
        shift
    done
fi

test -x ${DAEMON} || exit 0

set -e

start_daemon () {
    #Comprobamos que el usuario que esta ejecutando el comando es root.
    if [ $(whoami) != "root" ]; then
        echo "Por favor, ejecuta el comando como superusuario (sudo)"
        exit 1
    fi

    if [ -f ${PIDFILE} ]; then
        echo "${NAME} already running: `cat ${PIDFILE}`"
        return
    fi

    echo -n "Starting ${DESC}: "
    if [ $LOG = "TRUE" ] ; then
        echo "\nstart-stop-daemon --start --pidfile ${PIDFILE} --chuid ${USER} --make-pidfile --exec ${DAEMON} "
        start-stop-daemon --start --oknodo --background --user ${USER} --chuid ${USER} --name ${NAME} --pidfile ${PIDFILE} --make-pidfile --startas ${DAEMON} -- ${DAEMON_OPTS}
    else
        start-stop-daemon --start --oknodo --background --user ${USER} --chuid ${USER} --name ${NAME} --pidfile ${PIDFILE} --make-pidfile --startas ${DAEMON} -- ${DAEMON_OPTS}
    fi

    echo "${NAME}: `cat ${PIDFILE}`: running."
}

stop_daemon () {
    #Comprobamos que el usuario es root.
    if [ $(whoami) != "root" ]; then
        echo "Por favor, ejecuta el comando como superusuario (sudo)"
        exit 1
    fi

    if [ ! -f ${PIDFILE} ]; then
        echo "${NAME}: not running"
        return
    fi

    echo -n "Stopping ${DESC}: "

    start-stop-daemon --stop --oknodo --pidfile ${PIDFILE} --retry 5

    echo "${NAME}: `cat ${PIDFILE}`: stopped."
    rm -f ${PIDFILE} # remove pidfile
}

status_daemon(){
    echo -n "Checking ${DESC} ${SERVER}: "
    if [ -f ${PIDFILE} ]; then
        echo "`cat ${PIDFILE}` running."
    else
        echo "stopped."
    fi
}

case "${ORDER}" in
    start)
        PIDFILE="/var/run/${NAME}.pid"
        DAEMON_OPTS="--config=${CONFIGFILE} ${PARAM}"
        start_daemon
    ;;

    stop)
        PIDFILE="/var/run/${NAME}.pid"
        DAEMON_OPTS="--config=${CONFIGFILE} ${PARAM}"
        stop_daemon
    ;;

    restart|force-reload)
         PIDFILE="/var/run/${NAME}.pid"
         DAEMON_OPTS="--config=${CONFIGFILE} ${PARAM}"
         stop_daemon
         start_daemon
    ;;

    status)
        PIDFILE="/var/run/${NAME}.pid"
        status_daemon
    ;;

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

Guardar cambios.

Despues, copiar el script de ejecuacion a /etc/init.d/

supervisor@Server:~$ sudo cp openerp-server /etc/init.d/

Agregar permisos de ejecución al Script:

supervisor@Server:~$ sudo chmod +x /etc/init.d/openerp-server

Agregar el script ejecutable como un servicio:

supervisor@Server:~$ sudo update-rc.d openerp-server defaults 
 Adding system startup for /etc/init.d/openerp-server ...
 /etc/rc0.d/K20openerp-server -> ../init.d/openerp-server
 /etc/rc1.d/K20openerp-server -> ../init.d/openerp-server
 /etc/rc6.d/K20openerp-server -> ../init.d/openerp-server
 /etc/rc2.d/S20openerp-server -> ../init.d/openerp-server
 /etc/rc3.d/S20openerp-server -> ../init.d/openerp-server
 /etc/rc4.d/S20openerp-server -> ../init.d/openerp-server
 /etc/rc5.d/S20openerp-server -> ../init.d/openerp-server

Arrancar, Reiniciar, Detener el servicio de OpenERP

Inicio:

supervisor@Server:~$ sudo service openerp-server start

Reincio:

supervisor@Server:~$ sudo service openerp-server restart

Detener Servidor OpenERP:

supervisor@Server:~$ sudo service openerp-server stop

Con esto tenemos una instalación funcional básica de OpenERP 7.0 y Odoo 8.0, en la cual ya podremos instalar módulos, configurar y probar el potencial de esta herramienta.

Sin mas por el momento, me despido, suerte y hasta la próxima.

Espero muchos comentarios al respecto de esta guía y espero poder ir aportando aun mas temas sobre Odoo – OpenERP.

Saludos cordiales!