Instalación de OpenERP en Ubunto o Debian

OpenERP es una de las soluciones empresariales más populares dentro del software libre. Con una enorme escalabilidad, nos permite modificarlo para crear módulos específicos para las necesidades de una empresa determinada. Utiliza PostgreSQL como SGBD y está programado en Python, por lo que el conocimiento de este lenguaje será clave para la realización de módulos, aunque si ya has trabajado con C, Java o C# la sorpresa será mínima, incluso para programadores PHP (programadores, no diseñadores gráficos que hacen webs a base de Dreamweaver y módulos prefabricados). Pero el desarrollo de módulos puede que lo toquemos más adelante, hoy vamos con la instalación del servidor web de OpenERP 6.0 sobre Ubuntu o sobre Debian. Mayormente es una traducción de este artículo en inglés… bueno, una adaptación explicada con mis palabras.

Vamos al principio, first step, preparar el equipo para toda la instalación: instalar un servidor, crear el usuario, instalar Postgres… Ya sabes, por partes te lo pongo en el siguiente ejemplo:

#Preparar el servidor
apt-get install openssh-server denyhosts
apt-get update
apt-get dist-upgrade

#Crear el usuario
adduser –system –home=/opt/openerp –group openerp passwd openerp

#Instalamos PostgreSQL, creamos la base de datos y el usuario
apt-get install postgresql
su – postgres
createuser –createdb –username postgres –no-createrole –pwprompt openerp
exit

#Instalamos los paquetes y librerías de Python, que falta nos van a hacer (tochazo del 15)

apt-get install python python-psycopg2 python-reportlab python-egenix-mxdatetime python-tz python-pychart python-mako python-pydot python-lxml python-vobject python-yaml python-dateutil python-pychart python-pydot python-webdav

apt-get install python-cherrypy3 python-formencode python-pybabel python-simplejson python-pyparsing

Ahí estamos, todo el equipo listo para instalar OpenERP. La cuestión es descargar el server y el cliente web, descomprimir todo, dar permisos… En el ejemplo lo tenéis todo:


#Descargamos ambos paquetes
wget http://www.openerp.com/download/stable/source/openerp-server-6.0.3.tar.gz
wget http://www.openerp.com/download/stable/source/openerp-web-6.0.3.tar.gz

#Descomprimir, cambiar permisos... etc:
cd /opt/openerp
tar xvf ~/openerp-server-6.0.3.tar.gz
tar xvf ~/openerp-web-6.0.3.tar.gz
chown -R openerp: *
cp -a openerp-server-6.0.3 server
cp -a openerp-web-6.0.3 web

Ahora toca tocar el archivo de configuración del servidor, cambiando el password de la base de datos. En la carpeta /etc/ le metéis mano a openerp-server.conf con el editor Nano. Busca la línea db_password y allí añade la contraseña buena.

Tras esto, toca cambiar al propietario:

sudo chown openerp:root /etc/openerp-server.conf
sudo chmod 640 /etc/openerp-server.conf

Ahora toca crear, o modificar, el script para que arranque con el sistema, modificando /etc/initd.d/openerp-server, tal que así:

#!/bin/sh

### BEGIN INIT INFO
# Provides:             openerp-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:    Enterprise Resource Management software
# Description:          Open ERP is a complete ERP and CRM software.
### END INIT INFO

PATH=/bin:/sbin:/usr/bin
DAEMON=/opt/openerp/server/bin/openerp-server.py
NAME=openerp-server
DESC=openerp-server

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

# Specify an alternate config file (Default: /etc/openerp-server.conf).
CONFIGFILE="/etc/openerp-server.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

Tras eso cambiamos los permisos a root:

chmod 755 /etc/init.d/openerp-server
chown root: /etc/init.d/openerp-server

#Con el directorio de logs hay que hacer lo mismo
mkdir /var/log/openerp
chown openerp:root /var/log/openerp

#Y finalmente añadimos el servicio para que se inicie con el sistema:
update-rc.d openerp-server defaults

Ahora podéis probar a arrancar y ver si todo furrula: sudo /etc/init.d/openerp-server start y si la cosa va bien, en el puerto 8080 debería haber una página de prueba.

Pero claro, ahora toca el cliente web. El proceso es similar, tenéis que meterle mano a cd /etc/openerp-web.conf.

server.environment = "development"

# Some server parameters that you may want to tweak
server.socket_host = "0.0.0.0"
server.socket_port = 8080

# Sets the number of threads the server uses
server.thread_pool = 10

tools.sessions.on = True
tools.sessions.persistent = False

# Simple code profiling
server.profile_on = False
server.profile_dir = "profile"

# if this is part of a larger site, you can set the path
# to the TurboGears instance here
#server.webpath = ""

# Set to True if you are deploying your App behind a proxy
# e.g. Apache using mod_proxy
#tools.proxy.on = True

# If your proxy does not add the X-Forwarded-Host header, set
# the following to the *public* host url.
#tools.proxy.base = 'http://mydomain.com'

# logging
#log.access_file = "/var/log/openerp-web/access.log"
log.error_file = "/var/log/openerp/openerp-web-error.log"
log.access_level = "INFO"
log.error_level = "INFO"

# Set to false to disable CSRF checks
tools.csrf.on = True

# replace builtin traceback tools by cgitb
tools.log_tracebacks.on: False
tools.cgitb.on: True
# a default install can probably avoid logging those via cgitb as they're
# available in the server log
tools.cgitb.ignore=(
    openobject.errors.Concurrency,
    openobject.errors.TinyException)

# OpenERP Server
openerp.server.host = 'localhost'
openerp.server.port = '8070'
openerp.server.protocol = 'socket'
openerp.server.timeout = 450

# Web client settings
[openerp-web]
# filter dblists based on url pattern?
# NONE: No Filter
# EXACT: Exact Hostname
# UNDERSCORE: Hostname_
# BOTH: Exact Hostname or Hostname_

dblist.filter = 'NONE'

# whether to show Databases button on Login screen or not
dbbutton.visible = True

# will be applied on company logo
company.url = ''

Tras esto, de nuevo toca cambiar propietarios:

chown openerp:root /etc/openerp-web.conf
chmod 640 /etc/openerp-web.conf

Tras esto tocará automatizar el cliente web también, tocando /etc/init.d/nano openerp-web y dejando la cosa tal como en el ejemplo:

#!/bin/sh

### BEGIN INIT INFO
# Provides:             openerp-web
# 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:    OpenERP Web - the Web Client of the OpenERP
# Description:          Open ERP is a complete ERP and CRM software.
### END INIT INFO

PATH="/sbin:/bin:/usr/sbin:/usr/bin"
DAEMON="/opt/openerp/web/openerp-web.py"
NAME="openerp-web"
DESC="openerp-web"

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

# Specify an alternate config file (Default: /etc/openerp-web.conf).
CONFIGFILE="/etc/openerp-web.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

En fin, de nuevo sólo nos queda cambiar los permisos de propietario e incluir el script en el inicio, para que todo vaya como la seda:

chmod 755 /etc/init.d/openerp-web
chown root: /etc/init.d/openerp-web

update-rc.d openerp-web defaults

Y con todo esto, el servidor y el cliente web ya están listos para trastear con OpenERP en vuestro equipo.

Instalar PostgreSQL en Ubuntu / Debian / Linux Mint

PostgreSQL mola por muchos motivos: es libre (licencia BSD), es estable, puede usarse en aplicaciones comerciales, es muy escalable y tiene un elefante como logo (y todo el mundo que no es Borbón ama a los elefantes).

La instalación de PostgreSQL en tu linux (ya sea Debian, Ubuntu o Mint) es sencillita. Empezaré con Ubuntu/Mint, y tras esto, Debian.

Empezamos con el clásico:

sudo apt-get install postgresql  libpq-dev

En Debian la cosa sería prácticamente igual pero con aptitude en lugar de apt-get.

Luego toca lanzar una instancia del servidor de bases de datos y cambiar la

su -n postgres

psql -d postgres -U 

##ahora estaréis en la una instancia de Postgres, ya.
postgres=#
postgres=# alter user postgres with password 'El que toque' 
postgres=# q

Obviamente en vez de ‘El que toque» ponéis un password decente, uno que creáis seguro (nunca menos de 12 dígitos, con letras, número y símbolos)

Y tras esto sólo os queda instalar el entorno gráfico del servidor de la base de datos. Para esto basta un simple:

sudo apt-get install pgadmin3

PostgresAdmin es un cómodo y liviano entorno gráfico que os facilitará mucho la vida.

Ok ¿y en Debian? Similar y sencillito. Ya no explico los pasos, porque son los mismos, lo meto todo en un mismo bloque de texto:

aptitude install postgresql

##Cambiamos la contraseña

su postgres

psql

alter user postgres with password 'nuevopassword';

##Instalamos PostgresAdmin

aptitude install pgadmin3

Ya lo ves, clavadico en Debian.

En fin, es tarde y mañana tengo un examen de certificación de Oracle así que os dejo con esto. Estos días estoy menos activo porque he estado chapando para estas cosas y administrando y gestionando la página de WP del festival Pardiñas Rock.

Instalar LAPP en Debian (Apache/PHP/Postgres)

En fin, con esto ya está instalado el servidor y el PHP, y además iniciado el servicio de Apache para que puedas testear el funcionamiento de la instalación. El siguiente paso será la instalación de PostgreSQL 9.1 que, de momento, no está incluída en los repositorios oficiales de Debian (donde todavía está la 8.4), por lo que habrá que tirar del repositorio Debiak-Backports, donde tienen las últimas de versiones de software para Debian. Basta con añadir la línea deb squeeze-backports main en el fichero /etc/apt/sources.list y listo, ya tienes el repositorio disponible. Con esto ya sólo tenemos que actualizar repositorios e instalar tal que así:

$sudo apt-get update
$sudo apt-get -t squeeze-backports install postgresql-9.13.1

Ahora será el momento de configurar la contraseña de Postgres. Primero hemos de asumir la identidad del usuario postgres. A continuación, accedemos al cliente de linea de ordenes de PostgreSQL.Una vez dentro, cambiamos el password. Todo esto como en el ejemplo de código:

$sudo su postgres
$psql
postgres=# alter user postgres with password ‘passwd’;

El sistema debe responder con un:ALTER ROLE postgres=# Salimos del cliente de linea de ordenes con la orden:postgres=#\q Y salimos de la cuenta en el sistema del usuario postgres con un simple:$exit

Por defecto, PostgreSQL sólo atiende peticiones provenientes de la máquina local. Si estamos configurando un servidor remoto, deberemos habilitar el acceso desde otras IPs. Debemos editar el fichero /etc/postgresql/9.1/main/postgresql.conf. Busca la línea #listen-address = ‘localhost’ la copiala debajo, la descoméntala y modifícala. Si queremos poermitir el acceso de todas las IP habría que poner listen-address = ‘*’ mientras que si queremos utilizar varias IP concretas sólo tenemos que pasarle las direcciones, separadas por comas tipo listen-address = ‘192.168.0.6,192.168.0.8’

Tras esto lo primero que hay que hacer es dar ciertos permisos locales, dado que Postgres es muy restrictivo en esto en su instalación por defecto. Hay que editar el fichero /etc/postgresql/9.1/main/pg_hba.conf. Busca la línea local all postgres peer y cámbiala por local all postgres md5 con lo que permitimos al usuario postgres conectarse desde la maquina local, usando una contraseña encriptada con md5.Lo siguiente es acceso a cualquier cuenta de usuario desde la maquina local siempre que se especifique una contraseña encriptada mediante md5.Busca la línea cuyo contenido es:local all all peer y cámbialo por local all all md5, con lo que ya estará.

Finalmente debemos configurar los permisos de acceso remoto. Se trata de tratar las siguientes cuestiones:¿Qué usuarios tienen permiso para conectarse?¿Desde qué IPs lo pueden hacer?¿A qué bases de datos?¿Qué método de auteticación usarán?. Eso ya lo dejo en tus manos y tienes varios tutoriales sobre cómo hacerlo por la red adelante. También puedes probar siriviéndote de la ayuda del sistema, el fichero donde se dan los permisos es /etc/postgresql/9.1/main/pg_hba.conf

Para permitir el subir y bajar archivos de forma remota, finalmente, debemos instalar un servidor FTP, en este caso ProFTP. Requiere un poco de configuración tras la instalación:

$sudo apt-get install proftpd

Durante la instalación nos preguntará qué modo de funcionamiento queremos elegir, en este caso standalone. Luego habrá que configurar el servidor para que el directorio raíz del servidor FTP sea el mismo que el directorio raíz del servidor web, permitiendo de esa forma subir y bajar los archivos publicados en Apache. Hay que modificar el fichero /etc/proftpd.conf y añadir

<global>
  DefaultRoot /var/www
   var/www >
     All> AllowAll
   </directory>
</global>

Finalmente reiniciamos el servidor para que todos los servicios estén arrancados, y ya podemos probar todo el funcionamiento.