14 agosto 2010

Instal·lant un servidor OpenERP

En aquesta entrada descriuré el procediment que he seguit per instal·lar un servidor d'OpenERP en una Ubuntu 10.04 Server de 64 bits

1.- Instal·lació del servidor de bases de dades: PostgreSQL.

1.1.- Instal·lació.

Primer de tot instal·lar el servidor linux. En el cas de l'exemple s'ha instal·lat un Ubuntu 10.04 Server mínim amb el servidor de bases de dades PostgreSQL (sense entorn gràfic ni cap altre servidor dels proposats automàticament en el moment de la instal·lació).

Una vegada finalitzada la instal·lació del servidor linux, instal·lar el servidor i el client de la base de dades PostgreSQL.

# aptitude install postgresql postgresql-client

Per defecte, a la versió d'Ubuntu 10.04 Server, s'instal·la la versió 8.4 de PostgreSQL. Les ordres per arrencar, aturar, reiniciar i conèixer l'estat del dimoni del servidor postgresql són, respectivament:

$ sudo /etc/init.d/postgres-8.4 start
$ sudo /etc/init.d/postgres-8.4 stop
$ sudo /etc/init.d/postgres-8.4 restart
$ sudo /etc/init.d/postgres-8.4 status

1.2.- Configuració.

A continuació cal editar l'arxiu /etc/postgresql/8.4/main/pg_hba.conf per a permetre connexions locals amb usuaris de PostgreSQL diferents dels usuaris de linux:

$ sudo nano /etc/postgresql/8.4/main/pg_hba.conf

Substituir la línia:

local all all ident

per la línia

local all all md5

Finalment reiniciar el servidor de PostgreSQL per a que els canvis siguin efectius:

$ sudo /etc/init.d/postgresql-8.4 restart

1.3.- Creació d'un usuari de PostgreSQL.

Ara s'ha de crear l'usuari de PostgreSQL amb la seva contrasenya i els privilegis per crear bases de dades.

$ sudo su postgres
$ createuser –pwpromtp usuari

Introduir dues vegades la contrasenya i respondre que l'usuari no serà superusuari [n], sí podrà crear bases de dades [y], i no podrà crear nous usuaris [n].

Sortir del shell de l'usuari postgres amb:

$ exit

1.4.-Modificació de la contrasenya de l'usuari postgres.

Per defecte, l'usuari postgres no té configurada cap contrasenya. Per establir contrasenyes, tant d'usuari Unix, com d'usuari Postgres, cal seguir els següents passos (figura 1). Executar el següent comandament:

$ sudo passwd postgres

Que ens demanarà que introduïm la contrasenya d'Unix dues vegades. A continuació ens identifiquem com usuari postgres, entrem en una consola psql i executem les següents ordres:

$ su postgres
$ psql
postgres=# \password postgres

I introduïm novament dues contrasenyes que ens identificaran en l'entorn del servidor PostgreSQL. Per sortir només cal executar els següents comandaments:

postgres=# \q
$ exit

Figura 1. Modificació de la contrasenya de l'usuari postgres

2.- Instal·lació de llibreries de Python i XML

Instal·lar les següents llibreries de Python i XML, necessàries per a la execució del servidor OpenERP amb les seves dependències:

$ sudo aptitude install python python-libxml2 python-libxslt1 python-lxml python-psycopg2 python-imaging python-reportlab python-pyparsing python-pydot graphviz python-matplotlib python-numpy python-tz gs-gpl python-pychart python-egenix-mxdatetime python-vobject

Si s'han de poder enviar emails mitjançant SSL, s'ha d'instal·lar també aquest altre paquet:

$ sudo aptitude install python-openssl

Si en la mateixa màquina s'han d'executar el servidor i el client d'OpenERP, s'ha d'instal·lar també el següent paquet:

$ sudo aptitude install python-hippocanvas

Finalment, per poder instal·lar el mòdul PowerMail, s'ha d'instal·lar python-mako

$ sudo aptitude install python-mako

3.- Instal·lació del servidor OpenERP

3.1.- Descàrrega i instal·lació del paquet.

De la pàgina d'OpenERP, descarregar el paquet de la darrera versió del servidor (en el moment de fer aquest petit manual és la 5.0.12):

$ wget http://www.openerp.com/download/stable/source/openerp-server-5.0.12.tar.gz

Per instal·lar aquest programa, únicament cal descomprimir-lo i desempaquetar-lo al directori /opt. Per fer-ho, primer crearem el directori OpenERP:

$ sudo mkdir /opt/OpenERP

A continució descomprimir i desempaquetar el fitxer amb:

$ sudo tar -xzf openerp-server-5.0.12.tar.gz -C /opt/OpenERP/

Comprovar que el servidor arrenca correctament:

$ /opt/OpenERP/openerp-server-5.0.12/bin/openerp-server.py

El resultat ha de ser més o menys el que es mostra a la figura 2.

Es a dir, ens ha d'informar sobre la versió que estem executant, ens ha d'indicar el directori on s'instal·laran els mòduls, ens informarà del hostname, el port i l'usuari amb que es connecta a la base de dades, i les tres darreres línies ens informen dels ports per on estaran escoltant els protocols XML-RPC i NET-RPC, així com que el servidor s'està executant i està esperant connexions.

Per interrompre l'execució del servidor prémer la combinació de tecles Ctrl + C*.

Figura 2: Execució del servidor OpenERP

* Nota: Si en matar el procés del servidor OpenERP amb Ctrl + C no acaba de morir, s'ha d'obrir un altre terminal virtual (Ctrl + Alt + F2) i s'ha de matar el procés manualment amb:

$ kill -9 `ps xa|grep openerp-server.py|grep python|awk '{print $1}'`

3.2.-Connexió del servidor OpenERP amb la base de dades PostgreSQL.

Per connectar el servidor OpenERP amb la base de dades, s'han d'incloure els següents paràmetres en el comandament d'arrencada: el host, el port i l'usuari i la contrasenya de PostgreSQL. Per defecte s'assumeix que el host és localhost (els servidors OpenERP i PostgreSQL estan a la mateixa màquina), i el port de PostgreSQL és el 5432. Per tant, per connectar amb l'usuari que es va crear anteriorment s'ha d'executar el següent comandament:

$ /opt/OpenERP/openerp-server-5.0.12/bin/openerp-server.py -r usuari -w contrasenya

Si hi hagués instal·lat cap client d'escriptori, ja es podria executar i connectar al servidor OpenERP situat a localhost, pels ports 8069 o 8070 per crear la base de dades inicial i finalitzar de configurar l'aplicació.

3.3.- Arxiu de configuració del servidor OpenERP.

Per crear l'arxiu de configuració automàticament cal executar el mateix comandament d'arrencada del servidor, aquesta vegada però, amb l'opció -s:

$ /opt/OpenERP/openerp-server-5.0.12/bin/openerp-server.py -r usuari -w contrasenya -s

En aquesta ocasió arrencarà el servidor, i a la mateixa vegada crearà l'arxiu .openerp_serverrc a la carpeta de l'usuari.

Caldrà moure aquest arxiu al directori /etc/OpenERP/openerp-server-5.0.12. Per fer-ho, primer s'han de crear els directoris corresponents:

$ sudo mkdir /etc/OpenERP
$ sudo mkdir /etc/OpenERP/openerp-server-5.0.12
$ sudo mv ~/.openerp_serverrc /etc/OpenERP/open-server-5.0.12/.openerp_serverrc

I a continuació s'han de restringir els permisos de lectura d'aquest arxiu per evitar que qualsevol usuari tingui accés a les contrasenyes que emmagatzema. Per fer-ho primer s'ha d'assignar a l'administrador del sistema com propietari del mateix, a continuació cal assegurar-se que només el propietari té permisos de lectura, i finalment s'ha de comprovar el que s'ha fet (figura 3):

$ sudo chown root:root /etc/OpenERP/openerp-server-5.0.12/.openerp_serverrc
$ sudo chmod 600 /etc/OpenERP/openerp-server-5.0.12/.openerp_serverrc
$ ls -la /etc/OpenERP/open-server-5.0.12
Figura 3: Canviant el propietari i els permisos de l'arxiu de configuració.

3.4.- Executant més d'un procés de servidor OpenERP a la mateixa màquina.

Amb la finalitat de poder executar més d'un procés de servidor OpenERP a la mateixa màquina, es poden crear copies de l'arxiu de configuració dintre del mateix directori amb diferents noms, que es poden llegir en el moment d'arrencada del servidor mitjançant l'opció --config. Això permet configurar diferents processos que escolten per ports diferents i que estan connectats a bases de dades distintes.

$ cd /etc/OpenERP/openerp-server-5.0.12/
$ sudo cp .open_serverrc .open_serverrc_empresaA
$ sudo cp .open_serverrc .open_serverrc_empresaB

A continuació caldria editar els arxius creats i modificar-los d'acord a les necessitats de cada empresa.

3.5.- Crear el guió d'arrencada, aturada, re-inici del servidor OpenERP.

Es aconsellable crear un guió que permeti aturar, arrencar, re-iniciar i conèixer l'estat dels processos dels diferents servidors OpenERP.




#!/bin/sh

### BEGIN INIT INFO
# Provides: openerp-server
# Required-Start: $syslog
# Required-Stop: $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=/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/bin/openerp-server
NAME=openerp-server
DESC=openerp-server

# Assign order (start, stop, restart|force-reload, status)to $ORDER
ORDER="${1}"
shift

# Specify the user name (Default: openerp).
#USER=openerp
if [ -z $1 ]; then
USER="jmartin"
else
USER="$1"
shift
fi

NAME=${NAME}_${USER}

# Specify an alternate config file (Default: ~/.openerp_serverrc).
# CONFIGFILE="~/.openerp_serverrc"
CONFIGFILE="~/.openerp_serverrc"

# Additional options that are passed to the Daemon.
PARAM=""
if [ $# -ge 1 ]; then
while [ ! -z "${1}" ]; do
PARAM="${PARAM} ${1}"
shift
done
fi
DAEMON_OPTS="--config=${CONFIGFILE} ${PARAM}"

# pidfile
PIDFILE="/var/run/${NAME}.pid"

test -x ${DAEMON} || exit 0

set -e

case "${ORDER}" in
start)
if [ -f ${PIDFILE} ]; then
echo "${NAME} already running: `cat ${PIDFILE}`"
exit 1
fi

echo -n "Starting ${DESC}: "
start-stop-daemon --start --quiet --pidfile /var/run/${NAME}.pid \
--chuid ${USER} --background --make-pidfile \
--exec ${DAEMON} -- ${DAEMON_OPTS}
echo "`cat ${PIDFILE}` running."
echo "${NAME}."
;;

stop)
if [ ! -f ${PIDFILE} ]; then
echo "${NAME} not running"
exit 1
fi

echo -n "Stopping ${DESC}: "

start-stop-daemon --stop --quiet --pidfile /var/run/${NAME}.pid \
--oknodo
echo "${NAME} `cat ${PIDFILE}`: stopped."
rm -f ${PIDFILE} # remove pidfile
;;

restart|force-reload)
echo -n "Restarting ${DESC}: "

start-stop-daemon --stop --quiet --pidfile /var/run/${NAME}.pid \
--oknodo

sleep 1

start-stop-daemon --start --quiet --pidfile /var/run/${NAME}.pid \
--chuid ${USER} --background --make-pidfile \
--exec ${DAEMON} -- ${DAEMON_OPTS}

echo "`cat ${PIDFILE}` restarted."
echo "${NAME}."
;;

status)
echo -n "Checking ${DESC}: "
if [ -f ${PIDFILE} ]; then
echo "`cat ${PIDFILE}` running."
else
echo "stopped."
fi
;;

*)
N=/etc/init.d/${NAME}
echo "Usage: ${NAME} {start|stop|restart|force-reload|status}" >&2
exit 1
;;
esac

exit 0

Aquest guió s'ha de desar al directori /etc/init.d/ i permet arrencar, re-arrencar, aturar i conèixer l'estat dels diferents processos del servidor OpenERP, amb els següents comandaments:

$ sudo /etc/init.d/openerp-server start
$ sudo /etc/init.d/openerp-server restart
$ sudo /etc/init.d/openerp-server stop
$ sudo /etc/init.d/openerp-server status

3.6.- Automatitzar l'arrencada del servidor OpenERP.

Per automatitzar l'arrencada del servidor OpenERP cal executar la següent ordre:

$ sudo update-rc.d openerp-server defaults 98

Els missatges del servidor no apareixen per pantalla doncs el servidor s'ha executat amb el comandament nohup, i en conseqüència, els desa a l'arxiu nohup.out de la carpeta bin del directori d'instal·lació. Per veure'ls en temps real i poder fer depuracions, executar:

$ sudo tail -f /opt/OpenERP/openerp-server-5.0.12/bin/nohup.out

A la següent entrada explicaré com instal·lar un servidor OpenERP des de cero amb l'ajuda d'un guió


Font original: http://www.aulaerp.com/