lunes, 9 de junio de 2014

Instalar Odoo 8 (OpenERP 8.0) en Ubuntu y Debian desde cero.


Como muchos saben OpenERP ha decido cambiar su nombre por ODOO, realizar varios cambios internos y agregar muchas nuevas funcionalidades que hacen de este ERP único, entre ellas las más destacadas son la creación de tu página web y la integración de un e-commerce nativo, lo cual deja de lado las complicaciones que se tenían al integrar OpenERP con Magento por ejemplo.

Otro cambio interesante es que se migro de repositorio, antes Launchpad por medio de Bazaar y ahora el conocido y de moda Github, en realidad fue un buen cambio, Launchpad se quedó en el pasado con su interfaz y con algunas funciones.


Recomendaciones generales para cualquier instalación en Linux:


  • Instalar el sistema operativo limpio, es por este motivo que no se recomienda usar Ubuntu o cualquier sabor derivado de él para montar servicios en producción ya que instala demasiados paquetes que no se utilizarán en un servidor de aplicaciones. Yo recomiendo ampliamente utilizar Debian.
  • Si se planea montar un servidor para utilizarlo en producción recomiendo realizarlo en un servidor en la nube, actualmente los costos son muy accesibles y se evitarán muchos dolores de cabeza. Si requieren asesoría al respecto contáctenme y con gusto lo realizamos.

Instalación de ODOO.

Esta instalación ha sido probada en Debian 7.x pero funcionaría perfectamente en cualquier otro sistema basado en Debian. 

1. Instalación de todas las dependencias de Odoo necesarias y otros paquetes requeridos, suponemos que estamos firmados a nuestro servidor con el usuario "root", para instalar los paquetes simplemente ejecutamos en nuestra terminal el siguiente comando:

#
apt-get  -y update && apt-get -y upgrade && apt-get -y install bzr bzrtools python python-egenix-mxdatetime python-dateutil python-pybabel python-openid python-feedparser python-lxml python-libxml2 python-libxslt1 python-psycopg2 python-libxml2 python-libxslt1 python-imaging python-gdata python-ldap python-reportlab python-pyparsing python-simplejson python-pydot python-webdav graphviz python-werkzeug python-matplotlib python-vatnumber python-numpy python-pychart python-vobject python-zsi python-xlwt python-hippocanvas python-profiler python-dev python-setuptools postgresql postgresql-client-common python-yaml python-mako gcc mc python-babel python-feedparser python-reportlab-accel python-zsi python-openssl python-jinja2 python-unittest2 python-mock  python-docutils lptools make python-psutil python-paramiko poppler-utils python-pdftools antiword python-jinja2 python-requests git-core sudo python-decorator python-pypdf python-passlib xsltproc xmlstarlet python-soappy python-qrencode python-suds python-pip python-soappy python-m2crypto openssl xsltproc openssl xmlstarlet python-xmltodict python-xlrd && pip install pillow qrcode

2. Creación de un usuario para ejecutar Odoo satisfactoriamente. Creamos un usuario para correr Odoo desde él, por seguridad Odoo no corre sobre el usuario "root".

# adduser admin

# adduser admin sudo

3. Ahora necesitamos configurar los archivos de la base de datos. Configuramos el acceso a la base de datos desde cualquier IP y los permisos necesarios para hacerlo.


2.1 Editaremos el archivo postgresql


Ubuntu 10.04 y Debian 6

# nano /etc/postgresql/8.4/main/postgresql.conf
Ubuntu 11.10 / 12.04 / 13.04 / 14 y Debian 7
# nano /etc/postgresql/9.1/main/postgresql.conf
Ubuntu 14 y Debian 8
# nano /etc/postgresql/9.4/main/postgresql.conf

Dependiendo de la versión de postgresl solo cambiará esta en la ruta como pueden ver: 8.4, 9.1, 9.3, 9.4 etc.

2.2 Cambiamos la siguiente linea en el archivo: listen_addresses = 'localhost' por esta: listen_addresses = '*'

2.3 Ahora modificamos el archivo, pg_hba.conf encontrado en la misma ruta anterior

Ubuntu 10.04 y Debian 6
# nano /etc/postgresql/8.4/main/pg_hba.conf

Ubuntu 11.10 / 12.04 / 13.04 y Debian 7

# nano /etc/postgresql/9.1/main/pg_hba.conf

Ubuntu 14 y Debian 8

# nano /etc/postgresql/9.4/main/pg_hba.conf

2.4 Eliminamos todo el contenido de ese archivo y pegamos esto:


####################################################################

# "local" is for Unix domain socket connections only
local   all         all                               trust
host    all         all         127.0.0.1/32          trust
# IPv4 remote connections:
host    all         all         0.0.0.0/0        md5
# IPv6 remote connections:
host    all         all         ::1/128               reject
####################################################################

2.5 Reiniciando postgres


Ubuntu 10.04 y Debian 6.0

# /etc/init.d/postgresql-8.4 restart

Ubuntu 11.10 / 12.04 / 13.04 / 14 y Debian 7.0 / 8.1

# /etc/init.d/postgresql restart

También podemos reiniciarlo como un servicio

# service postgresql restart

4. Configurar un usuario en Postgres para acceder por medio de él a las bases de datos, por seguridad no es recomendable realizarlo con el usuario postgres que crea la base de datos por default.

4.1 Entraremos con el usuario postgresq para poder crear un usuario que pueda acceder a las bases de datos

# su - postgres

4.2 Creamos un usuario llamado "odoo8" para acceder a la base de datos de Postgres.

# createuser --createdb --no-createrole --pwprompt odoo8

Introducen  un password para el usuario, en este ejemplo utilizaré "odoo8" también de password y cuando les pregunte si este rol es super usuario deben decir que si.

4.3 Ahora debemos salir del usuario postgres de linux

# exit

Esto nos regresará al prompt de nuestro usuario, root si estamos en Ubuntu Server o Debian

5. Descargar las fuentes de Odoo de git.

5.1 Primero nos firmamos con el usuario que correrá Odoo para que las carpetas que se creen al descargar las fuentes tengan los permisos correctos.


# su - admin


5.2 Descargamos las fuentes con el siguiente comando.


git clone -b 8.0 https://github.com/odoo/odoo.git odoo8


Lo anterior nos descargará el servidor, los addons y la parte web creando una carpeta llamada: odoo8 en la carpeta home del usuario admin. Mucho más fácil que con Launchpad :)



6. Creando el archivo de configuración

6.1 Entramos a la carpeta de odoo.

# cd odoo

6.1 Creamos un archivo de configuración base para poder modificarlo

# python openerp-server -s -c erp.conf


6.2 Lo anterior nos levanta Odoo creando un archivo erp.conf, para salir de Odoo tecleamos dos veces CTRL+C.

6.3 Editando el archivo .conf creado

# nano erp.conf

6.4 Buscamos las siguientes lineas en el archivo que se abrió y les ponemos el usuario y password creado en el paso 4.2

db_password = odoo8
db_user = odoo8

7. Arrancando Odoo

7.1 Para arrancar el servidor simplemente tecleamos 

# python openerp-server -c erp.conf

Ahora el servidor debe estar corriendo a la perfección

7.2 Para comprobar que el servidor de OpenERP esta funcionando debemos abrir un navegador, de preferencia Google Chrome o Firefox y teclear en la barra de dirección: http://localhost:8069 o la dirección IP que tengamos en nuestro servidor y nos debe mostrar la pantalla de login de Odoo.

8. Dejando Odoo corriendo en segundo plano e iniciándolo cuando arranque el sistema.

8.1 Detenemos el servidor presionando dos veces CTRL + C

8.2 Debemos indicar a Odoo que el LOG no lo muestre en pantalla si no que lo envíe a un archivo, para ello editamos nuevamente el archivo .conf como lo hicimos en el paso 6.3 

# nano erp.conf

Y buscamos la linea (logfile = False) cambiándola por esta:

logfile = openerp80.log

Donde openerp80.log será el archivo donde se almacenarán el registro de Odoo en lugar de enviarlo a la pantalla.

8.3 Configurar ODOO para que corra al inicio del sistema, para ello editamos el archivo rc.local.

# sudo nano /etc/rc.local

8.4 Agregamos la siguiente línea al archivo, lo guardamos y cerramos.

# sudo -u admin python /home/admin/odoo/openerp-server -c /home/admin/odoo/erp.conf

8.5 Le damos permisos de ejecución a ese archivo.

# sudo chmod +x /etc/rc.local

8.6 Levantamos Odoo para que quede corriendo en esta instancia en segundo plano

# python openerp-server -c erp.conf &

Felicidades, Odoo está corriendo en segundo plano y somo pseudo servicio (es decir que cada que se inicia el servidor se levanta automáticamente)

Saludos.

PD. He recibido algunos comentarios por correo solicitando ayuda personalizada, sé que aveces es complicado sobre todo si no se tiene el suficiente conocimiento en Linux por lo tanto me pongo a sus órdenes para instalación de OpenERP u ODOO o soporte del mismo a un costo razonable, a veces es mejor enfocarse en lo que se requiere hacer y no batallar con cosas que solo se harán una vez.

De igual manera ofrezco servidores muy estables a muy bajo costo para su Odoo, dedicados y compartidos.

15 comentarios:

  1. como prodria reiniciar el servicio gracias

    ResponderEliminar
  2. en el paso 1 falta el paquete python-decorator.
    Saludos.

    ResponderEliminar
  3. Como cuanto costaria instalar Odoo en mi servidor y cuanto en el tuyo?

    ResponderEliminar
  4. Cuales son los costos de tu servicios como te contacto

    ResponderEliminar
  5. Cuando realizo
    # python openerp-server -s -c erp.conf

    Y me sale este error
    File "/usr/local/lib/python2.7/dist-packages/unittest2-1.0.1-py2.7.egg/unittest2/result.py", line 7, in
    import traceback2 as traceback

    ResponderEliminar
  6. Estoy de acuerdo contigo en lo que dices en PD, tengo que realizar una instalación en la nube, quiero contactar.
    Saludo

    ResponderEliminar
    Respuestas
    1. Hola que tal, claro me puedes contactar por correo a eric.hernandez@experts.com.mx o por medio de nuestra página: https:\\www.experts.com.mx

      Eliminar
  7. Configuré el arranque como servicio automático pero de inicio falla y da error: la conexión SSL se ha cerrado inesperadamente
    Luego tengo que inciar el servicio manualmente con start

    ResponderEliminar
    Respuestas
    1. ¿Como lo configuraste como servicio? Creaste un archivo y lo pusiste en /etc/init.d/ ??

      Dame mas información para poderte ayudar.

      Saludos

      Eliminar
  8. Buenas tendras alguna información de como configurar ubuntu server y postgresql para odoo en modo produccion?.
    agradecido de antemano

    ResponderEliminar
  9. Este tutorial funciona prefecto en producción con la mayoría de servidores, si tienes mucha RAMy quieres aprovecharla si tendrías que modificar parámetros de Postgres, te dejo aquí unas ligas útiles para este fin.


    http://www.unixmen.com/shmmax-share-linux-memory/
    http://www.juancarlosmoral.es/postgresql-hardware-tunning
    http://www.linuxinsight.com/optimize_postgresql_database_size.html

    Saludos

    ResponderEliminar
    Respuestas
    1. Perfecto, intentare seguir los pasos de este tutorial, y sacare lo provechoso de los links que me indicas.

      Tambien tengo entendido luego de esto debo configurar un proxy inverso para colgar el proyecto en la web, tendras la información tambien ?

      Muchas gracias Eric, y disculpa el fastidio.

      Eliminar
    2. Esto depende mucho de tu situación, que modem tienes, quien es tu proveedor de Internet, si tienes algún equipo que controle tu red, etc etc etc. Lo recomendable para un entorno de producción es que rentes un servidor en la nube, esto por las velocidades que se requieren para trabajar de forma correcta. Saludos

      Eliminar