Instalación odoo 8 + etherpad

Vamos a instalar odoo 8, odoo es el nuevo nombre del ERP openerp.

Un ERP es un programa que nos permite gestionar una empresa, otros ERP podrían ser contaplus o los ya mas completitos navision o SAP. OpenERP o Odoo, sería un intermedio entre contaplus y un SAP, pero cada vez mas cercano a SAP gracias a la comunidad de software libre y a sus impulsores. Además odoo te lo puedes instalar sin coste, pero al estar sin coste, no tienes soporte.

Pues empezamos :)

El sistema que vamos a usar va a ser debian wheezy, la actual stable de debian, pero espero que en jessie no vaya a variar demasiado, si es así, se aceptan comentarios!
Además vamos a destinar una maquina entera para odoo.
Antes de empezar se recomienda actualizar el sistema:

root@Aludra-erp:~# apt-get update
root@Aludra-erp:~# apt-get upgrade
root@Aludra-erp:~# apt-get dist-upgrade

A continuación creamos un usuario llamado odoo que es el que va a ejecutar odoo:

root@Aludra-erp:~# adduser --system --home=/opt/odoo --group odoo

Con este comando creamos el usuario pero no le permitimos arrancar la shell, si queremos permitir shell en este usuario modificaremos el fichero /etc/passwd y en la línea del usuario cambiamos /bin/false por /bin/bash

root@Aludra-erp:~# vi /etc/passwd
odoo:x:101:105::/opt/odoo:/bin/bash

Otra opción es pasarle el interprete a ejecutar al ejecutar el sudo

root@Aludra-erp:~# su - odoo -s /bin/bash

Base de datos
Ahora vamos a instalar el servidor de base de datos postgresql, entramos con el usuario posgresql y creamos la base de datos

root@Aludra-erp:~# apt-get install postgresql
root@Aludra-erp:~# su - postgres
postgres@Aludra-erp:~$ createuser --createdb --username postgres --no-createrole --no-superuser --pwprompt odoo
Enter password for new role: ********
Enter it again: ********
postgres@Aludra-erp:~$ exit

Preparación del sistema (dependencias)
Instalamos algunas dependencias que necesitamos para hacer funcionar odoo:

root@Aludra-erp:~# apt-get install python-dateutil python-decorator python-docutils python-feedparser 
python-gdata python-gevent python-imaging python-jinja2 python-ldap python-libxslt1 python-lxml 
python-mako python-mock python-openid python-passlib python-psutil python-psycopg2 python-pybabel 
python-pychart python-pydot python-pyparsing python-pypdf python-reportlab python-requests 
python-simplejson python-tz python-unittest2 python-vatnumber python-vobject python-werkzeug 
python-xlwt python-yaml wkhtmltopdf

Instalar el servidor odoo
Vamos a instalar git y descargar los ficheros fuente de odoo de git.

root@Aludra-erp:~# apt-get install git
root@Aludra-erp:~# su - odoo -s /bin/bash
odoo@Aludra-erp:~$ git clone https://www.github.com/odoo/odoo --depth 1 --branch 8.0 --single-branch .

Con –depth 1 nos descargamos la última versión de cada fichero. Si en algún momento queremos actualizar los paquetes vamos a ejecutar “git pull origin” (se recomienda hacer un backup antes de nada!).

Configurar odoo
En /opt/odoo/debian/openerp-server.conf tenemos el fichero de configuración por defecto, para que funcione nuestra instancia vamos a copiarlo y cambiarle algunos parámetros.

odoo@Aludra-erp:~$ exit
root@Aludra-erp:~# cp /opt/odoo/debian/openerp-server.conf /etc/odoo-server.conf
root@Aludra-erp:~# chown odoo: /etc/odoo-server.conf
root@Aludra-erp:~# chmod 640 /etc/odoo-server.conf

Para poder arrancar el servidor tendremos que cambiar un par de líneas del fichero /etc/odoo-server.conf:

– db_password = False -> con el password que has definido en postgresql.
– addons_path = /usr/lib/python2.7/dist-packages/openerp/addons -> /opt/odoo/addons

Otra línea que nos puede interesar tener en cuenta es:

– logfile = /var/log/odoo/odoo-server.log

A continuación para probar si podemos arrancar el servidor vamos a ejecutar lo siguiente:

root@Aludra-erp:~# su - odoo -s /bin/bash
odoo@Aludra-erp:~$ /opt/odoo/openerp-server

En otra terminal verificamos si se abre el puerto 8069, esto quiere decir que está funcionando.

root@Aludra-erp:~# netstat -lanp |grep 'LISTEN ' |grep 8069
tcp        0      0 0.0.0.0:8069            0.0.0.0:*               LISTEN      2447/python 

Instalar script en /etc/init.d/
Ahora vamos a crear un script para poder arrancar odoo como servicio.

root@Aludra-erp:~# vi /etc/init.d/odoo-server
#!/bin/sh
### BEGIN INIT INFO
# Provides: odoo-server
# 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: Business Applications
# Description: ODOO Business Applications.
### END INIT INFO
PATH=/bin:/sbin:/usr/bin
DAEMON=/opt/odoo/openerp-server
NAME=odoo-server
DESC=odoo-server

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

# Specify an alternate config file (Default: /etc/odoo-servers.conf).
CONFIGFILE="/etc/odoo-servers.conf"

# pidfile
PIDFILE=/var/run/$NAME.pid

# Additional options that are passed to the Daemon.
DAEMON_OPTS="-c $CONFIGFILE"
[ -x $DAEMON ] || exit 0
[ -f $CONFIGFILE ] || exit 0
checkpid() {
[ -f $PIDFILE ] || return 1
pid=`cat $PIDFILE`
[ -d /proc/$pid ] && return 0
return 1
}

case "${1}" in
start)
echo -n "Starting ${DESC}: "
start-stop-daemon --start --quiet --pidfile ${PIDFILE} 
--chuid ${USER} --background --make-pidfile 
--exec ${DAEMON} -- ${DAEMON_OPTS}
echo "${NAME}."
;;
stop)
echo -n "Stopping ${DESC}: "
start-stop-daemon --stop --quiet --pidfile ${PIDFILE} 
--oknodo
echo "${NAME}."
;;

restart|force-reload)
echo -n "Restarting ${DESC}: "
start-stop-daemon --stop --quiet --pidfile ${PIDFILE} 
--oknodo
sleep 1
start-stop-daemon --start --quiet --pidfile ${PIDFILE} 
--chuid ${USER} --background --make-pidfile 
--exec ${DAEMON} -- ${DAEMON_OPTS}
echo "${NAME}."
;;
*)
N=/etc/init.d/${NAME}
echo "Usage: ${NAME} {start|stop|restart|force-reload}" >&2
exit 1
;;

esac
exit 0

Le damos permisos de ejecución

root@Aludra-erp:~# chmod 755 /etc/init.d/odoo-server
root@Aludra-erp:~# chown root: /etc/init.d/odoo-server

Vamos a instalar un pequeño programa que nos ayuda a configurar los servicios a arrancar en cada nivel init, el sysv-rc-conf, lo ejecutamos y activamos odoo-server

root@Aludra-erp:~# apt-get install sysv-rc-conf
root@Aludra-erp:~# sysv-rc-conf

Y probamos de arrancar el servicio y verificamos de nuevo que el puerto está abierto.

root@Aludra-erp:~# /etc/init.d/odoo-server start
root@Aludra-erp:~# netstat -lanp |grep 'LISTEN ' |grep 8069
tcp        0      0 0.0.0.0:8069            0.0.0.0:*               LISTEN      2447/python 

Y ahora entramos por http al servidor para configurar algunas cosas mas.

http://ipdelservidor:8069

Fuestes: theopensourcerer, schenkels.

Instalar etherpad y configurar el módulo etherpad en odoo
Hasta aquí ya tenemos un odoo funcional, podemos empezar a instalar algunos módulos que encontramos en configuración > modulos locales.

Después iremos a ello, pero primero vamos a instalar etherpad-lite en nuestro sistema.

Vamos a instalar algunas dependencias:

root@Aludra-erp:~# apt-get install gzip git-core curl python libssl-dev pkg-config build-essential

Al igual que con odoo vamos a crear un usuario que es el que va a ejecutar etherpad.

root@Aludra-erp:~# adduser --system --home=/opt/etherpad --group etherpad

Entramos con el usuario etherpad y nos descargamos las fuentes de git.

root@Aludra-erp:~# su - etherpad -s /bin/bash
etherpad@Aludra-erp:~$ git clone git://github.com/ether/etherpad-lite.git .

Al igual que con odoo si queremos actualizar etherpad, vamos a entrar al directorio y ejecutar “git pull origin”.

etherpad sobre mysql
A partir de aquí ya podríamos hacer funcionar etherpad entrando con el usuario etherpad y ejecutar bin/run.sh, pero por defecto guarda la información en un fichero en var/dirty.db, para hacerlo un poco mas robusto vamos a guardar la información en una base de datos mysql.
Para ello tenemos que instalar mysql-server y creamos el usuario para etherpad.

root@Aludra-erp:~# apt-get install mysql-server
root@Aludra-erp:~# mysql -uroot -p
mysql> create database etherpad_capa8;
mysql> GRANT ALL ON etherpad_capa8.* TO etherpad_capa8@'localhost' IDENTIFIED BY '*************';
mysql> exit
Bye

Ahora en el fichero de configuración de etherpad vamos a indicarle que vamos a usar mysql, aprovechamos para configurar los usuarios para administrar etherpad

root@Aludra-erp:~# su - etherpad -s /bin/bash
etherpad@Aludra-erp:~$ vi settings.json
[...]
  //The Type of the database. You can choose between dirty, postgres, sqlite and mysql
  //You shouldn't use "dirty" for for anything else than testing or development
  //"dbType" : "dirty",
  //the database specific settings
  /*"dbSettings" : {
                   "filename" : "var/dirty.db"
                 },
  */
  // An Example of MySQL Configuration
   "dbType" : "mysql",
   "dbSettings" : {
                    "user"    : "etherpad_capa8",
                    "host"    : "localhost",
                    "password": "*************",
                    "database": "etherpad_capa8"
                  },
  //
[...]
  /* Users for basic authentication. is_admin = true gives access to /admin.
     If you do not uncomment this, /admin will not be available! */
  //
  "users": {
    "admin": {
      "password": "*****",
      "is_admin": true
    },
    "user": {
      "password": "*****",
      "is_admin": false
    }
  },
  //
[...]
etherpad@Aludra-erp:~$ exit

instalar nodejs para debian
Una de las dependencias para etherpad es nodejs, así que vamos a instalarlo.

root@Aludra-erp:~# apt-get install curl
root@Aludra-erp:~# curl -sL https://deb.nodesource.com/setup | bash -
root@Aludra-erp:~# apt-get install -y nodejs

etherpad como servicio
Ahora al igual que odoo creamos un script de inicio para etherpad

root@Aludra-erp:~# vi /etc/init.d/etherpad
#!/bin/sh

### BEGIN INIT INFO
# Provides:          etherpad-lite
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: starts etherpad lite
# Description:       starts etherpad lite using start-stop-daemon
### END INIT INFO

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/node/bin"
LOGFILE="/var/log/etherpad-lite/etherpad-lite.log"
EPLITE_DIR="/opt/etherpad"
EPLITE_BIN="bin/run.sh"
USER="etherpad"
GROUP="etherpad"
DESC="Etherpad"
NAME="etherpad"

set -e

. /lib/lsb/init-functions

start() {
  echo "Starting $DESC... "

    start-stop-daemon --start --chuid "$USER:$GROUP" --background --make-pidfile --pidfile /var/run/$NAME.pid --exec $EPLITE_DIR/$EPLITE_BIN -- $LOGFILE || true
  echo "done"
}

#We need this function to ensure the whole process tree will be killed
killtree() {
    local _pid=$1
    local _sig=${2-TERM}
    for _child in $(ps -o pid --no-headers --ppid ${_pid}); do
        killtree ${_child} ${_sig}
    done
    kill -${_sig} ${_pid}
}

stop() {
  echo "Stopping $DESC... "
  if test -f /var/run/$NAME.pid; then
    while test -d /proc/$(cat /var/run/$NAME.pid); do
      killtree $(cat /var/run/$NAME.pid) 15
      sleep 0.5
    done
    rm /var/run/$NAME.pid
  fi
  echo "done"
}

status() {
  status_of_proc -p /var/run/$NAME.pid "" "etherpad-lite" && exit 0 || exit $?
}

case "$1" in
  start)
      start
      ;;
  stop)
    stop
      ;;
  restart)
      stop
      start
      ;;
  status)
      status
      ;;
  *)
      echo "Usage: $NAME {start|stop|restart|status}" >&2
      exit 1
      ;;
esac

exit 0

Le damos permisos de ejecución y lo configuramos para que arranque al iniciar el sistema.

root@Aludra-erp:~# chmod 755 /etc/init.d/etherpad
root@Aludra-erp:~# sysv-rc-conf

Para probar que funciona arrancamos el servicio y verificamos que el puerto 9001 esté abierto

root@Aludra-erp:~# /etc/init.d/etherpad start
Starting Etherpad... 
done
root@Aludra-erp:~# netstat -lanp |grep 'LISTEN ' |grep 9001
tcp        0      0 0.0.0.0:9001            0.0.0.0:*               LISTEN      5280/node 

Fuentes: etherpad-lite installation, etherpad as service, nodejs via package manager

Vinculamos etherpad y odoo
Ahora con ambos programas instalados y funcionando vamos a vincularlos.

Lo primero será habilitar algunos módulos en odoo. Vamos a configuración > Modulos locales y activamos:

– CRM
– Notas
– Pad en las tareas

A continuación vamos a configuración > Compañías > editamos compañía > Configuración:

Aquí veremos abajo del todo :

Pads
Servidor pad
Clave de la API del pad

En servidor pad, ponemos la url que usamos para acceder desde cualquier ordenador a etherpad, por ejemplo http://ipservidor:9001.
La clave de la API del pad se genera al arrancar por primera vez etherpad en la raíz donde tenemos instalado etherpad, si habéis seguido bien las instrucciones se halla en:

/opt/etherpad/APIKEY.txt

Guardamos y si vamos a Mensajería > Notas, ahí podemos crear una nota y si todo va bien nos abrirá un pad dentro de odoo! :)

Fuente: Integrar etherpad en openerp

6 Comments

  1. Vaya! Resulta que me lo he instalado en una debian ni hace una semana antes de descubrir este tutorial, en fin, lo he leido y me lo guardo pa otra ocasión, mu currao ;). esa blajol!

    Respon
  2. Hola, antetodo muy buen artículo!!! =)

    Pero tengo un problema en el paso ‘Instalar script en /etc/init.d/’, para hacer que el servicio se ejecute automáticamente al iniciar la máquina.

    Lo que he hecho es:

    nano /etc/init.d/odoo-server –> He copiado el contenido del fichero
    chmod 755 /etc/init.d/odoo-server
    chown root: /etc/init.d/odoo-server

    Modificamos las rutas para utilizar nuestra configuración:
    nano /etc/init.d/odoo-server –> La única que he tenido que modificar es la de ‘DAEMON=/opt/odoo/se/openerp-server’

    Sabes que me puede estar sucediendo?

    Muchas gracias de antemano y un saludo!

    =)

    Respon
  3. Buenas,
    Me gustaria saber como desinstalar todo odoo 8 de mi ubuntu 14.0 ya que me da problemas con inciar el server y quiero probar por la ruta larga la instalación para así poder arreglar el desaguisado.
    Un saludo.

    Respon

Deixa un comentari

L'adreça electrònica no es publicarà. Els camps necessaris estan marcats amb *

Aquest lloc utilitza Akismet per reduir els comentaris brossa. Apreneu com es processen les dades dels comentaris.