Blackhold

Instalación odoo 8 + etherpad

Posted on novembre 9th, 2014 by admin

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

« »

guy fawkes