Publicidad

viernes, 20 de abril de 2018

Instalación Odoo 11 con Docker

Instalación de Odoo en un Docker Ubuntu


    Las herramientas de virtualización son una gran ayuda en el mundo de las tecnologias de información, ya que encapsulan los servicios, librerias y herramientas necesarias para la ejecución de programas, aplicaciones, servicios, etc. al mismo tiempo que lo hacen portable e independiente del Sistema Operativo, anterior a docker podiamos encontrar hypervisor como una de las mas conocidas, en la actualidad docker tiene ventajas sobre otras y se ha vuelto una de las mas importantes, en el mundo de Odoo desde la versión 10 y ahora versión 11 es casi un estandar para los desarrolladores, ya que nos permite tener diferentes instancias o proyectos de forma independiente con la posibilidad de poder llevar este contenedor al entorno de Producción de un cliente de forma facil y rapida, homologando la versión de Python, la versión de sus librerias y las aplicaciones.

En Odoo podemos encontrar el Docker oficial desde Github o el repositorio oficial de Docker:
  • https://github.com/odoo/docker
  • https://hub.docker.com/_/odoo/
La versión oficial contiene una serie de instrucciones para poder hacer nuestra instalación y quede lista para ponerse en marcha para nuestros desarrollos o en nuestro Cliente para su uso final.

En este Post quiero enseñar una maner alternativa a la oficial, usando la imagen (docker) de Ubuntu y montando nuestro Contenedor para instalar Odoo, Postgres y las librerias requeridas para la ejecución de Odoo.

1.   Instalación de Docker
Lo mas importante es tener instalado nuestro docker en el Servidor o Maquina donde vamos a trabajar, en mi caso utilizo Ubuntu 17.04 y los pasos para instalador docker son:


Actualizar los Repositorios:

sudo apt-get update


Instalar las librerias necesarias:

 sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

Añadir el repositorio Docker :

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -


sudo apt-key fingerprint 0EBFCD88


sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

sudo apt-get update


sudo apt-get install docker-ce


Debemos crear una cuenta en la Pagina Oficial https://hub.docker.com/

Como paso final de la instalación debemos hacer un loggin en nuestro Sistema Operativo:

docker login

2.   Descarga de Imagen Ubuntu

En este ejemplo usare Ubuntu 16.04 como mi imagen base para ello ejecuto en terminal

sudo docker pull ubuntu:16.04

Podremos visualizar nuestras Imagenes con el comando:

sudo docker images


3.   Creación de nuestro Contenedor

Crearemos un contenedor con las siguientes caracteristicas:
  • Con el puerto 8069 abierto para acceder desde el anfitrion
  • Con el Puerto 22 abierto
  • Con una Terminal Interactiva
  • Con un Directorio Compartido entre huesped (docker) y anfitrion (SO)

docker run -it -p 22 -p 8069:8069 -v /opt/odoo:/home/odoo --name odoo_11_dev ubuntu:16.04

Es importante indicar la versión de la Imagen descargada para ello al final indicamos ubuntu:16.04
(docker run -it -p 22 -p 8069:8069 -v /opt/odoo:/home/odoo --name odoo_11_dev ubuntu:16.04)

El resultado es una consolta interactiva, en la cual podemos ejecutar comandos.

Si cerramos la terminal el docker seguira corriendo y ya no existe necesidad de ejecutar nuevamente el comando anterior, ahora debemos ejecutar el comando para listar los contenededores activos:

docker ps


Si queremos ver todos los que hemos creado:

docker ps -a

Para poder ingresar al contenedor activo:

docker attach odoo_11_dev

Si no vemos la terminal pasados unos segundos es importante dar un enter mas o dos.

4.   Instalación de Aplicaciones

Una ves que tenemos nuestro Contenedor Ubuntu 16.04, vamos a instalar las aplicaciones y librerias.

Primero debemos hacer un update a los repositorios:

apt-get update

Instalamos Python 3 para Odoo 11:

apt-get install python3 -y

Instalamos Pip 3:

apt-get install python3-pip -y

Instalamos algunas dependencias de Odoo:

apt-get install python3-dev libxml2-dev libxslt1-dev libevent-dev \
libsasl2-dev libldap2-dev libpq-dev libpng12-dev libjpeg-dev \
poppler-utils node-less node-clean-css python3-pypdf2 npm python3-babel \
python3-decorator python3-docutils -y

Creamos un Usuario del Sistema para Gestionar Odoo

useradd -d /home/odoo -s /bin/bash odoo

Cambiamos la contraseña del usuario:

passwd odoo

Instalamos Git

apt-get install git

Descargamos Odoo, dentro de la carpeta /opt

cd /opt

git clone https://github.com/odoo/odoo --branch 11.0

Cambiamos los permisos de la carpeta hacia el usuario odoo:

chown odoo.odoo /opt/odoo -R

Instalamos las dependencias de odoo

pip3 install /opt/odoo/requirements.txt -r

pip3 install /opt/odoo/doc/requirements.txt -r

Instalacion de Wkhtmltopdf:

apt-get install wget -y

wget https://nightly.odoo.com/extra/wkhtmltox-0.12.1.2_linux-jessie-amd64.deb

dpkg -i wkhtmltox-0.12.1.2_linux-jessie-amd64.deb

apt-get -f install


Instalamos Postgres:

apt-get install postgresql

Iniciamos Postgres:

service postgresql start

Creamos el usuario de Postgres para Odoo:

su postgres

createuser -s -P -e odoo

Contraseña: odoo

Instalamos un Editor de Textos, por ejemplo nano:

apt-get install nano

Cambiamos al usuario odoo:

su odoo

Ejecutamos Odoo y creamos nuestro Archivo de configuración:

python3 /opt/odoo/odoo-bin -c odoo_server.conf -s

Editamos el Archivo de Configuración y modificamos los Parametros de Base de Datos:

nano odoo_server.conf

db_host = localhost
db_password = odoo
db_port = 5432
db_sslmode = prefer
db_template = template1
db_user = odoo


Una ves Editado, guardamos con el Comando Ctrl + O

Volvemos a ejecutar sin el  parametro -s

python3 /opt/odoo/odoo-bin -c odoo_server.conf

Y listo, en nuestro navegador podemos acceder a Odoo:

Ante cualquier error de fuentes podemos consultar:
https://poncesoft.blogspot.mx/2016/05/solucion-al-error-bundle.html



6 comentarios:

  1. Excelente! Muchísimas gracias! Me ha resultado sumamente útil su publicación.

    Me gustaría comentar algunos detalles que tuve que tener en cuenta durante el proceso:

    1) En la sección "Instalamos algunas dependencias de Odoo" el comando está dividido en dos secciones de HTML. Lo ejecuté en un solo comando:
    "apt-get install python3-dev libxml2-dev libxslt1-dev libevent-dev \
    libsasl2-dev libldap2-dev libpq-dev libpng12-dev libjpeg-dev \
    poppler-utils node-less node-clean-css python3-pypdf2 npm python3-babel \
    python3-decorator python3-docutils -y"

    2) En la sección "Cambiamos los permisos de la carpeta hacia el usuario odoo" ejecuto el comando:
    "chown odoo.odoo /home/odoo -R"

    3) En la sección "Instalamos las dependencias de odoo" tuve que cambiar el lugar del switch "-r", los comandos que ejecuté fueron:
    "pip3 install -r /opt/odoo/requirements.txt
    pip3 install -r /opt/odoo/doc/requirements.txt"

    4) Antes de ejecutar la sección "Instalacion de Wkhtmltopdf" tuve que ejecutar los siguientes comandos:
    "apt-get install xfonts-75dpi
    apt-get install fontconfig
    apt-get remove libjpeg62
    wget http://ftp.br.debian.org/debian/pool/main/libj/libjpeg-turbo/libjpeg62-turbo_1.5.1-2_amd64.deb"
    dpkg -i libjpeg62-turbo_1.5.1-2_amd64.deb
    dpkg -i wkhtmltox-0.12.1.2_linux-jessie-amd64.deb"

    y luego recomiendo ejecutar los archivos de instalación bajados:
    "rm libjpeg62-turbo_1.5.1-2_amd64.deb
    rm wkhtmltox-0.12.1.2_linux-jessie-amd64.deb"

    5) En la sección "Creamos el usuario de Postgres para Odoo" terminé con el comando
    "exit"
    para volver al usuario root y poder instalar el editor nano.

    6) Antes de ejecutar el comando de la seccion "Ejecutamos Odoo y creamos nuestro Archivo de configuración" recomiendo asegurarnos que estamos en el directorio correcto:
    "cd /opt/odoo"

    y aclarar que luego de ejecutar "python3 /opt/odoo/odoo-bin -c odoo_server.conf -s" debemos volver a la terminal con CTRL-C para poder editar el archivo de configuracion

    Nuevamente MUCHAS GRACIAS por su post, y espero que mis comentarios le puedan resultar útiles a alguien.

    ResponderEliminar
  2. After you reboot the server or stop the docker container with the command:
    "docker stop odoo_11_dev"

    You have to run the following commands to restart odoo:
    "docker start odoo_11_dev
    docker attach odoo_11_dev
    su postgres
    service postgresql start
    su odoo
    cd /opt/odoo
    python3 /opt/odoo/odoo-bin -c odoo_server.conf"

    Open the browser and to to the url "http://:8069"

    ResponderEliminar
  3. After filling the fields on the first web page, during the creation of the database I had these errors:
    ERROR None odoo.sql_db: bad query: b'CREATE DATABASE "odoo_test" ENCODING \'unicode\' TEMPLATE "template1" '
    ERROR None odoo.http: new encoding (UTF8) is incompatible with the encoding of the template database (SQL_ASCII)

    I solved it stopping odoo, switching back to the postgres user and then in psql console executed the following sequence of commands:
    update pg_database set datallowconn = TRUE where datname = 'template0';
    \c template0
    update pg_database set datistemplate = FALSE where datname = 'template1';
    drop database template1;
    create database template1 with template = template0 encoding = 'UTF8';
    update pg_database set datistemplate = TRUE where datname = 'template1';
    \c template1
    update pg_database set datallowconn = FALSE where datname = 'template0';

    Remember press Ctrl-D to quit from psql.

    I started odoo again and The database could be created without error.

    ResponderEliminar
  4. en donde dice: Instalacion de Wkhtmltopdf:
    Tuve que instalar otro:
    wget https://github.com/wkhtmltopdf/wkhtmltopdf/releases/download/0.12.1/wkhtmltox-0.12.1_linux-wheezy-amd64.deb
    sudo dpkg -i wkhtmltox-0.12.1_linux-wheezy-amd64.deb

    ResponderEliminar
  5. https://downloads.wkhtmltopdf.org/0.12/0.12.5/wkhtmltox_0.12.5-1.xenial_amd64.deb
    enlace actualizado ...
    un saludo

    ResponderEliminar