Odoo 10 en Ubuntu 16.04

Muchos implantadores se han quedado en la versión 8, ya que la versión 9 no ha tenido muchas mejoras respecto a la versión 8, y se han esperado a que salga la versión 10. En la Odoo Experience 2016 se ha presentado la versión 10 de Odoo. Y ya se están realizando muchas migraciones de módulos a la versión 10 en el github de OCA. En este post explicaré como instalar Odoo 10 en Ubuntu 16.04.

Instalación de dependencias

Lo primero que haremos será instalar las depencias necesarias para instalar Odoo

sudo apt-get -yq install adduser postgresql-client python-dateutil python-docutils python-feedparser python-jinja2 python-ldap python-libxslt1 python-lxml python-mako python-mock python-openid python-psycopg2 python-psutil python-pybabel python-pychart python-pydot python-pyparsing python-reportlab python-simplejson python-tz python-unittest2 python-vatnumber python-vobject python-webdav python-werkzeug python-xlwt python-yaml python-zsi poppler-utils python-pip python-pypdf python-passlib python-decorator gcc python-dev libxml2-dev libxslt-dev libsasl2-dev libldap2-dev libssl-dev libpq-dev libjpeg-dev libjpeg8-dev python-setuptools python-markupsafe python-reportlab-accel python-zsi python-yaml python-argparse python-openssl python-egenix-mxdatetime python-usb python-serial lptools make python-pydot python-psutil python-paramiko poppler-utils python-pdftools antiword python-requests python-xlsxwriter python-suds python-software-properties

Instalación de wkhtmltopdf

El paquete wkhtmltopdf es el encargado de generar los informes en pdf a partir del código html, esta librería introduce cambios en las distintas versiones, y actualmente en Odoo es importante que se instale la versión 12.1, ya que con otras versiones puedes encontrar problemas a la hora de renderizar css o cargar subinformes

wget http://download.gna.org/wkhtmltopdf/0.12/0.12.1/wkhtmltox-0.12.1_linux-trusty-amd64.deb
sudo dpkg -i wkhtmltox-0.12.1_linux-trusty-amd64.deb

Instalación de npm less

Para que funcione correctamente el servidor web es necesario instalar npm y su paquete less.

sudo apt-get -yq install npm
sudo ln -s /usr/bin/nodejs /usr/bin/node
sudo npm install -g less less-plugin-clean-css

Instalación de Pillow

En la primera prueba de instalación tuve problemas a la hora de instalar datos demo con el procesamiento de imagenes, esto se puede solucionar con la instalación del paquete python de Pillow

RUN pip install --no-cache-dir -I pillow

Instalación de Postgres

El motor de la base de datos de Odoo es postgres, esto no ha cambiado, tendremos que instalar el servidor y crear un usuario para conectarnos.

Instalar el servidor de postgresql

sudo apt-get install postgresql

Crear un usuario de base de datos

sudo su postgres
createuser odoo

Crear un usuario del sistema

Si estamos en un servidor es recomendable crear un usuario para lanzar el servidor de odoo, el usuario se puede crear como un usuario del sistema o como un usuario con acceso completo, yo prefiero crear un usuario con acceso completo y descargar en su directorio home todo el código.

Para crear un usuario podemos utilizar el script adduser y seguir los pasos.

sudo adduser odoo

Obtener el código de Odoo

Para obtener el código de Odoo hay varias alternativas, se puede descargar un nightly build, o descargarlo directamente desde git. Al descargarlo desde git será mas sencillo de actualizar.

Para instalar git

sudo apt-get install git

Para descargar el código

su - odoo
cd
git clone https://github.com/Odoo/odoo.git --depth 1 --branch 10.0 --single-branch odoo
exit

Con esto descargaremos la versión 10.0 (–branch 10.0) de Odoo en nuestro directorio home, con la opción –depth 1 descargaremos únicamente el último commit en lugar de descargar todo el histórico del código.

Instalar requisitos python

Dentro del código de Odoo hay un fichero con todas las dependencias de librerías python necesarias para isntalar odoo. Mediante el instalador de librerías python-pip instalaremos estos requisitos.

sudo pip install -r /home/odoo/odoo/requirements.txt

Configuración de Odoo

Con esto ya tenemos todo lo necesario para lanzar odoo de forma manual, pasando las opciones como parametros, para no tener que indicarlos en cada ejecución vamos a crear un fichero de configuración llamado odoo-server.conf en el directorio home de odoo con este contenido:

[options]
admin_passwd = admin

xmlrpc = True
xmlrpc_port = 8069

db_host = 127.0.0.1
db_port = 5432
db_user = odoo
db_password = odoo

addons_path = /home/odoo/odoo/sources/odoo/addons,/home/odoo/odoo/sources/odoo/openerp/addons

Con este fichero podrémos lanzar odoo con:

su odoo -
/home/odoo/odoo/odoo-bin -c /home/odoo/odoo-server.conf

En esta versión se ha renombrado el ejecutable, de openerp-server a odoo-bin.

Lanzar Odoo al inicio

En el código de Odoo hay un script de inicio preparado en la carpeta debian, este script presupone una instalación en unos directorios distintos a los que estamos utilizando, después de ajustar este fichero quedará de la siguiente forma:

#!/bin/bash
### BEGIN INIT INFO
# Provides: odoo.py
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start odoo daemon at boot time
# Description: Enable service provided by daemon.
# X-Interactive: true
### END INIT INFO
## more info: http://wiki.debian.org/LSBInitScripts

. /lib/lsb/init-functions

PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin
DAEMON=/home/odoo/odoo/odoo-bin
NAME=odoo
DESC=odoo
CONFIG=/home/odoo/odoo-server.conf
LOGFILE=/home/odoo/odoo-server.log
PIDFILE=/home/odoo/${NAME}.pid
USER=odoo
export LOGNAME=$USER

test -x $DAEMON || exit 0
set -e

function _start() {
start-stop-daemon --start --quiet --pidfile $PIDFILE --chuid $USER:$USER --background --make-pidfile --exec $DAEMON -- --config $CONFIG --logfile $LOGFILE
}

function _stop() {
start-stop-daemon --stop --quiet --pidfile $PIDFILE --oknodo --retry 3
rm -f $PIDFILE
}

function _status() {
start-stop-daemon --status --quiet --pidfile $PIDFILE
return $?
}
case "$1" in
start)
echo -n "Starting $DESC: "
_start
echo "ok"
;;
stop)
echo -n "Stopping $DESC: "
_stop
echo "ok"
;;
restart|force-reload)
echo -n "Restarting $DESC: "
_stop
sleep 1
_start
echo "ok"
;;
status)
echo -n "Status of $DESC: "
_status && echo "running" || echo "stopped"
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart|force-reload|status}" >&2
exit 1
;;
esac

exit 0

 

Este fichero se ha de copiar en /etc/init.d/odoo, y para que se cargue en el inicio ejecutar desde consola lo siguiente:

sudo su -

chmod +x /etc/init.d/odoo

update-rc.d odoo defaults

 

14 comentarios sobre “Odoo 10 en Ubuntu 16.04

  1. Manel Juàrez

    Esta instrucción “sudo pip install -r /home/odoo/odoo/sources/odoo/requirements.txt” da error “odoo no está en el archivo sudoers. Se informará de este incidente”

    Y además la carpeta /home/odoo/odoo/sources no existe. El requierements.txt está en /home/odoo/odoo

  2. Angel Moya Autor del artículo

    Gracias por los comentarios, en cuanto pueda corrijo el post.

    Para ejecutar el comando sudo pip install hazlo con tu usuario de Odoo, o directamente haz pip install con el usuario root.

    El archivo requeriments.txt estará dentro del directorio de Odoo, en principio en /home/odoo/odoo

  3. JoaCo

    Buenas, lo primero agradecerte el paso a paso. Yo he seguido todas tus instrucciones, la unica diferencia a sido llamar al archivo /etc/init.d/odoo le he llamado odoo-server, si saco un estado del servicio odoo-server me devuelve lo siguiente:
    odoo@odooserver:~$ service odoo status
    ● odoo-server.service – LSB: Start odoo daemon at boot time
    Loaded: loaded (/etc/init.d/odoo-server; bad; vendor preset: enabled)
    Active: active (exited) since dom 2016-11-06 22:31:52 CET; 1min 48s ago
    Docs: man:systemd-sysv-generator(8)
    Process: 11089 ExecStop=/etc/init.d/odoo-server stop (code=exited, status=0/SUCCESS)
    Process: 11100 ExecStart=/etc/init.d/odoo-server start (code=exited, status=0/SUCCESS)

  4. Sergio Muñoz

    Hola!
    La localización española no esta disponible en Odoo 10 verdad? Saludos y gracias

  5. Angel Moya Autor del artículo

    Si lo has llamado odoo-server deberías ejecutar “service odoo-server status”, si te devuelve información poniendo odoo es porque tienes que tener otra instalación con otro servicio llamado odoo.

  6. Alberto Luengo Cabanillas

    Buenas Ángel. Enhorabuena por el post (y por su posicionamiento). Dos pequeños apuntes:

    1.- El paquete “postgresql-contrib” es muy interesante de instalar para, entre otras cosas, añadir la extensión “UNACCENT” a las Bases de Datos.

    2.- En vez de generar el fichero de configuración de Odoo a mano, siempre preferí la opción de que me lo generase el propio binario de Odoo con la instrucción “./odoo-bin -s -c odoo-server.conf”.

    Un saludo,

  7. Angel Moya Autor del artículo

    Hola Alberto, muchas gracias por el apunte.
    Lo de unnaccent es cierto, muy útil y necesario en una instalación completa. Estos tutoriales los hago con lo mínimo para probar que funcione, pero unnaccent en producción es indispensable. Hace poco me encontré una instalación en la que habían dicho a los usuarios que no era posible realizar búsquedas sin tener en cuenta los acentos, y les habían dicho que lo correcto era poner todos los nombres sin acentos. Imagínate cómo tenían el sistema.

    Sobre el fichero de configuración ya va en gustos, para estas pruebas me gusta tenerlo con lo mínimo, y para producción ya tengo uno preparado para una configuración a medida según el servidor.

    Bueno Alberto, me alegra verte por aquí, el otro día recibí un presupuesto de tu empresa para la oficina que estoy montando en Murcia y al ver el nombre de la empresa me acordé. Un saludo y gracias por el comentario

  8. Vicente Corrochano

    Mil Gracias Angel y a ti también Alberto
    El aporte es muy bueno.
    Me gustaría pedirte o incluso a ambos que ampliarais el tema de El paquete postgresql-contrib y lo de Añadir la extensión “UNACCENT” a las Bases de Datos
    Y una cosa más veo que dices que para explotación creas ficheros de configuración especificos, me podrías decir que diferencia exite entre el que tu creas manualmente y el que, como dice Alberto, se crea de forma automática?.
    Mil gracias por el aporte
    Un saludo

  9. Vicente Corrochano

    En el paso Instalar el servidor de postgresql

    sudo apt-get install postgresql

    Crear un usuario de base de datos

    sudo su postgres
    createuser odoo
    el sistema me pide la contraseña del usuario postgres, entiendo que este usuario está bloqueado por defecto pero ni idea de como continuar
    Que estoy haciendo mal?

  10. Angel Moya Autor del artículo

    Buenas Vicente,

    El paguete postgresql-contrib se instala con apt-get y la extensión Unaccent se isntala desde psl, hay muchos tutoriales en google.

    Sobre el fichero de configuración, hay una opción cuando lanzas el servidor (no la recuerdo, creo que es -c) que te genera un fichero de configuración con unos valores por defecto y/o los valores que has puesto como parámetros. Yo no utilizo esta opción porque te genera un fichero de configuración con todos los parámetros disponibles, y muchos de ellos no son necesarios en la mayoría de casos. Para aprender sería una buena opción generarlo así y luego estudiar que hace cada campo.

  11. Angel Moya Autor del artículo

    Si has hecho “sudo su postgres” lo que estas haciendo es logearte como usuario postgres, al hacerlo con sudo lo haces como usuario root y no te pide contraseña.

    Cuando estas logeado como usuario postgres, al hacer createuser odoo, la contraseña que te pide es la que le vas a asignar al usuario odoo.

  12. Pingback: 10 módulos para Odoo 10 | Alberto Luengo Cabanillas

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *