Ceci est une ancienne révision du document !
OpenERP (anciennement TinyERP)
OpenERP est un progiciel de gestion intégrée libre, anciennement appelé TinyERP.
Les modules fonctionnels sont :
- CRM & SRM ; gestion de la relation client
- Comptabilité analytique et financière
- Gestion des stocks
- Gestion de production (GPAO)
- Gestion de projets et des activités de service
- Norme qualité : ISO 9001 version 2000
- Gestion des ventes
- Gestion des achats
- Marketing
- Logistique
- Ressources Humaines
Certains modules sont propres à des besoins spécifiques :
- Network : Gestion d'un parc informatique
- Auction : Spécificités pour salles de ventes publiques
Les fonctionnalités techniques :
- serveur/client, serveur distribué
- workflows éditables,
- une base de données orientée objet
- une interface éditable
- rapports personnalisables
- interface XML-RPC.
Installation
OpenERP est divisé en trois partie : un serveur, un client lourd (GTK) et un serveur Web permettant d'accéder à OpenERP à partir d'un navigateur Web.
L'installation d'OpenERP peut être effectuée de deux manière différentes :
- Par les paquets
- A la main
Installation par les paquets
Installer le client : Installez openerp-client.
Installer le serveur : installer : openerp-server qui va installer les dépendances nécessaires et notamment PostgreSQL s'il ne l'était pas.
Pour le serveur Web : se référer à la partie installation à la main
Installation à la main
Pré-requis
Pour être sûr que l'installation fonctionne, il faut installer les dépendances requises par OpenERP :
sudo apt-get update sudo apt-get install python python-psycopg2 python-reportlab python-egenix-mxdatetime python-xml python-tz python-pychart python-pydot python-lxml python-libxslt1 python-vobject python-imaging python-profiler python-setuptools python-yaml
Pour commencer, il faut récupérer les sources d'OpenERP (client + serveur + serveur Web)
Deux manières de récupérer les sources :
- Les versions stables sur le site d'OpenERP
La procédure d'installation est la même, que vous ayez la version stable ou la version en développenent.
Installation du serveur
Si vous avez télécharger les sources stables depuis le site officiel, il faut commencer par extraire les fichiers de l'archive :
tar -xvzf openerp-server-X-Y.tar.gz
Maintenant, pour savoir si le serveur est fonctionnel, il suffit d'aller dans le répertoire bin du serveur puis de lancer cette commande :
python ./openerp-server.py
Si tout s'est bien passé, en tapant openerp-server dans le terminal, vous obtenez ça :
[2009-05-16 19:31:16,607] INFO:server:version - 5.0.0 [2009-05-16 19:31:16,607] INFO:server:addons_path - /usr/lib/openerp-server/addons [2009-05-16 19:31:16,608] INFO:server:database hostname - localhost [2009-05-16 19:31:16,608] INFO:server:database port - 5432 [2009-05-16 19:31:16,609] INFO:server:database user – « votre login » [2009-05-16 19:31:16,609] INFO:objects:initialising distributed objects services [2009-05-16 19:31:18,139] INFO:web-services:starting XML-RPC services, port 8069 [2009-05-16 19:31:18,141] INFO:web-services:starting NET-RPC service, port 8070 [2009-05-16 19:31:18,142] INFO:web-services:the server is running, waiting for connections...
Openerp-server fonctionne.
Installation du client lourd
Si vous avez télécharger les sources stables depuis le site officiel, il faut commencer par extraire les fichiers de l'archive :
tar -xvzf openerp-client-X-Y.tar.gz
Maintenant, pour savoir si le serveur est fonctionnel, il suffit d'aller dans le répertoire bin du client puis de lancer cette commande :
python ./openerp-client.py
Si tout s'est bien passé, une fenêtre GTK devrait s'ouvrir.
Installation du serveur Web
Si vous avez télécharger les sources stables depuis le site officiel, il faut commencer par extraire les fichiers de l'archive :
tar -xvzf openerp-web-X-Y.tar.gz
Maintenant, pour savoir si le serveur est fonctionnel, il suffit d'aller dans le répertoire du serveur Web puis de lancer cette commande :
python ./openerp-web.py
Si tout s'est bien passé, vous devriez avoir ces lignes dans votre terminal :
[11/Nov/2010:18:18:16] CONFIG /home/quentin/Developpement/OpenERP/launchpad_6.0/web/doc/openerp-web.cfg [11/Nov/2010:18:18:16] ENGINE Bus STARTING [11/Nov/2010:18:18:16] ENGINE Started monitor thread '_TimeoutMonitor'. [11/Nov/2010:18:18:16] ENGINE Started monitor thread 'Autoreloader'. [11/Nov/2010:18:18:17] ENGINE Serving on 0.0.0.0:8080 [11/Nov/2010:18:18:17] ENGINE Bus STARTED
Le serveur Web fonctionne. Vous pouvez y accéder en tapant http://localhost:8080 dans la barre d'adresse de votre navigateur.
Configuration
C'est bien beau, OpenERP est installé, cependant, vous ne pouvez pas créer de base de données, ce qui est embêtant.
Il faut donc installer PostgreSQL si ce n'est déjà fait:
sudo apt-get install postgresql
Il faut ensuite créer un utilisateur qui sera l'utilisateur qui lancera OpenERP. En développement, je conseille donc de créer un utilisateur du même nom que votre utilisateur de la machine. En production, je conseille la création d'un compte utilisateur et d'un compte PostgreSQL spécifique à OpenERP.
- En développement :
sudo -u postgres createuser -d -S -R --pwprompt votre_utilisateur
- En production :
Pour qu'OpenERP puisse être lancé avec l'utilisateur openerp, il faut le créer dans le système :
groupadd openerp useradd -d /home/openerp -s /bin/false -m -g openerp openerp
sudo -u postgres createuser -d -S -R --pwprompt openerp
- -u postgres → Lancement de la commande sous le nom d'utilisateur postgres
- createuser → Commande de création d'un utilisateur dans PostgreSQL
- -d → Donne le droit de créer des base de données à l'utilisateur
- -S → L'utilisateur créé ne sera pas super-utilisateur
- -R → L'utilisateur n'aura pas le droit de créer de rôles dans PostgreSQL
- –pwprompt → Affiche un message permettant d'entrer le mot de passe du nouvel utilisateur
Ce n'est évidemment pas sécurisé, mais semble indispensable au début . Vous pourrez changer le mot de passe de cet utilisateur une fois en exploitation.
Si vous lancez alors openerp-client ou http://localhost:8080 dans votre navigateur, vous devriez avoir le message :
Pas de base de données trouvée, vous devez en créer une
Cliquez alors sur Annuler, puis dans le menu sur Fichier > Bases de données > Nouvelle base de données sur le client GTk ou Base de données sur votre navigateur.
Dans le premier champ Mot de passe administrateur, mettez openerp (ou le mot de passe attribué au rôle openerp sur le serveur PostgreSQL) (Si ca ne fonctionne pas, essayez avec "admin".);
Dans le second champ Mot de passe administrateur (quelle idée d'avoir 2 champs ayant le même nom ), vous pouvez mettre le nouveau mot de passe que vous voulez, ce sera le mote de passe de l'utilisateur Administrateur dans la base de données que vous venez de créer. Le compte qui vous permettra de configurer OpenERP aux petits oignons.
Il devrait alors être possible d'ouvrir la base de données crée et de finir sa configuration.
Tout cela demanderait à être confirmé, justifié et peut-être encore simplifié… Voir l'article dans le forum
Environnement de production
Dans un environnement de production, on aimerait qu'OpenERP se lance automatiquement au démarrage de la machine.
Pour cela, il faut donc créer différents scripts de lancement.
Pour commencer, si ce n'est pas déjà fait, nous allons déplacer les sources des différents serveurs (OpenERP et Web) dans le /home/openerp
sudo mv openerp-server-X-Y /home/openerp
sudo mv openerp-web-X-Y /home/openerp
Ensuite, pour faciliter les mises à jour, nous allons créer des liens symboliques. Cela permettra de remplacer les sources sans avoir à modifier les scripts de démarrage.
sudo ln -s /home/openerp/openerp-server-X-Y /home/openerp/server
sudo ln -s /home/openerp/openerp-web-X-Y /home/openerp/web
Nous allons ensuite créer un dossier qui contiendra les logs du serveur OpenERP :
sudo mkdir /var/log/openerp; sudo chown -R openerp /var/log/openerp
Mise en place des différents scripts
Voici les différents fichiers à mettre en place :
- /etc/openerp-server.conf
[options] without_demo = False netport = 8070 secure = False demo = {} syslog = False cache_timeout = 100000 port = 8069 smtp_password = False netinterface = log_level = info admin_passwd = admin smtp_port = 25 smtp_server = localhost db_user = openerp price_accuracy = 2 import_partial = soap = False pidfile = None db_maxconn = 64 reportgz = False xmlrpc = True db_port = False debug_mode = False netrpc = True interface = logfile = None csv_internal_sep = , pg_path = None translate_modules = ['all'] stop_after_init = False root_path = /home/openerp/server/bin smtp_user = False db_password = False db_name = False db_host = False assert_exit_level = warn email_from = False addons_path = /home/openerp/server/bin/addons
- /etc/init.d/openerp-server :
#!/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: OpenERP Web - the Web Client of the OpenERP # Description: OpenERP is a complete ERP and CRM software. ### END INIT INFO PATH=/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/bin/openerp-server CONFIG=/etc/openerp-server.conf NAME=openerp-server DESC=openerp-server # Specify the user name (Default: terp). USER="openerp" # pidfile #mkdir /var/run/openerp #chown tempo:tempo /var/run/openerp #PIDFILE=/var/run/openerp/$NAME.pid PIDFILE=/var/run/$NAME.pid checkpid() { [ -f $PIDFILE ] || return 1 pid=`cat $PIDFILE` [ -d /proc/$pid ] && return 0 return 1 } # Additional options that are passed to the Daemon. DAEMON_OPTS="--logfile=/var/log/openerp/openerp-server.log --config=${CONFIG}" [ -x $DAEMON ] || exit 0 if [ -f /lib/lsb/init-functions ] || [ -f /etc/gentoo-release ] ; then do_start() { start-stop-daemon --start --quiet --pidfile $PIDFILE \ --chuid $USER --background --make-pidfile \ --exec $DAEMON -- $DAEMON_OPTS RETVAL=$? sleep 5 # wait for few seconds return $RETVAL } do_stop() { start-stop-daemon --stop --quiet --pidfile $PIDFILE --oknodo RETVAL=$? sleep 2 # wait for few seconds rm -f $PIDFILE # remove pidfile return $RETVAL } do_restart() { start-stop-daemon --stop --quiet --pidfile $PIDFILE --oknodo sleep 2 # wait for few seconds rm -f $PIDFILE # remove pidfile start-stop-daemon --start --quiet --pidfile $PIDFILE \ --chuid $USER --background --make-pidfile \ --exec $DAEMON -- $DAEMON_OPTS RETVAL=$? sleep 5 # wait for few seconds return $RETVAL } else do_start() { $DAEMON $DAEMON_OPTS > /dev/null 2>&1 & RETVAL=$? sleep 5 # wait for few seconds echo $! > $PIDFILE # create pidfile return $RETVAL } do_stop() { pid=`cat $PIDFILE` kill -15 $pid RETVAL=$? sleep 2 # wait for few seconds rm -f $PIDFILE # remove pidfile return $RETVAL } do_restart() { if [ -f $PIDFILE ]; then do_stop fi do_start return $? } fi start_daemon() { if [ -f $PIDFILE ]; then echo "pidfile already exists: $PIDFILE" exit 1 fi echo -n "Starting $DESC: " do_start checkpid if [ $? -eq 1 ]; then rm -f $PIDFILE echo "failed." exit 1 fi echo "done." } stop_daemon() { checkpid if [ $? -eq 1 ]; then exit 0 fi echo -n "Stopping $DESC: " do_stop if [ $? -eq 1 ]; then echo "failed." exit 1 fi echo "done." } restart_daemon() { echo -n "Reloading $DESC: " do_restart checkpid if [ $? -eq 1 ]; then rm -f $PIDFILE echo "failed." exit 1 fi echo "done." } status_daemon() { echo -n "Checking $DESC: " checkpid if [ $? -eq 1 ]; then echo "stopped." else echo "running." fi } case "$1" in start) start_daemon ;; stop) stop_daemon ;; restart|force-reload) restart_daemon ;; status) status_daemon ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|restart|force-reload|status}" >&2 exit 1 ;; esac exit 0 # vim: sts=4 st=4 et
- /usr/bin/openerp-server :
#!/bin/sh cd /home/openerp/server/bin exec /usr/bin/python ./openerp-server.py $@
- /etc/openerp-web.conf :
[global] # This is where all of your settings go for your production environment. # SERVER # Some server parameters that you may want to tweak # server.socket_host = "127.0.0.1" # server.socket_port = 8080 server.environment="production" # Sets the number of threads the server uses # server.thread_pool = 1 # 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 # base_url_filter.on = False # Set to True if your proxy adds the x_forwarded_host header # base_url_filter.use_x_forwarded_host = True # If your proxy does not add the x_forwarded_host header, set # the following to the *public* host url. # (Note: This will be overridden by the use_x_forwarded_host option # if it is set to True and the proxy adds the header correctly. # base_url_filter.base_url = "http://www.example.com" # Set to True if you'd like to abort execution if a controller gets an # unexpected parameter. False by default # tg.strict_parameters = False # OpenERP SERVER [openerp] host = 'localhost' port = '8070' protocol = 'socket' # Web client settings [openerp-web] # filter dblists based on url pattern? dblist.filter = False # whether to show Databases button on Login screen or not dbbutton.visible = True # will be applied on company logo company.url = '' # LOGGING # Logging configuration generally follows the style of the standard # Python logging module configuration. Note that when specifying # log format messages, you need to use *() for formatting variables. # Deployment independent log configuration is in openerp/config/log.cfg [logging] [[handlers]] [[[access_out]]] # set the filename as the first argument below #args="('server.log',)" args="('/var/log//openerp/openerp-web.log',)" class='FileHandler' level='INFO' formatter='message_only' [[loggers]] [[[openerp]]] level='ERROR' qualname='openerp' handlers=['error_out'] [[[access]]] level='INFO' qualname='turbogears.access' handlers=['access_out'] propagate=0
- /etc/init.d/openerp-web :
#!/bin/sh ### BEGIN INIT INFO # Provides: openerp-web # 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: OpenERP Web - the Web Client of the OpenERP # Description: OpenERP is a complete ERP and CRM software. ### END INIT INFO PATH=/sbin:/bin:/usr/sbin:/usr/bin DAEMON=/usr/bin/openerp-web CONFIG=/etc/openerp-web.conf NAME=openerp-web DESC=openerp-web # Specify the user name (Default: terp). USER="openerp" # pidfile #mkdir /var/run/openerp #chown tempo:tempo /var/run/openerp #PIDFILE=/var/run/openerp/$NAME.pid PIDFILE=/var/run/$NAME.pid checkpid() { [ -f $PIDFILE ] || return 1 pid=`cat $PIDFILE` [ -d /proc/$pid ] && return 0 return 1 } # Additional options that are passed to the Daemon. DAEMON_OPTS="--config=${CONFIG}" [ -x $DAEMON ] || exit 0 if [ -f /lib/lsb/init-functions ] || [ -f /etc/gentoo-release ] ; then do_start() { start-stop-daemon --start --quiet --pidfile $PIDFILE \ --chuid $USER --background --make-pidfile \ --exec $DAEMON -- $DAEMON_OPTS RETVAL=$? sleep 5 # wait for few seconds return $RETVAL } do_stop() { start-stop-daemon --stop --quiet --pidfile $PIDFILE --oknodo RETVAL=$? sleep 2 # wait for few seconds rm -f $PIDFILE # remove pidfile s return $RETVAL } do_restart() { start-stop-daemon --stop --quiet --pidfile $PIDFILE --oknodo sleep 2 # wait for few seconds rm -f $PIDFILE # remove pidfile start-stop-daemon --start --quiet --pidfile $PIDFILE \ --chuid $USER --background --make-pidfile \ --exec $DAEMON -- $DAEMON_OPTS RETVAL=$? sleep 5 # wait for few seconds return $RETVAL } else do_start() { $DAEMON $DAEMON_OPTS > /dev/null 2>&1 & RETVAL=$? sleep 5 # wait for few seconds echo $! > $PIDFILE # create pidfile return $RETVAL } do_stop() { pid=`cat $PIDFILE` kill -15 $pid RETVAL=$? sleep 2 # wait for few seconds rm -f $PIDFILE # remove pidfile return $RETVAL } do_restart() { if [ -f $PIDFILE ]; then do_stop fi do_start return $? } fi start_daemon() { if [ -f $PIDFILE ]; then echo "pidfile already exists: $PIDFILE" exit 1 fi echo -n "Starting $DESC: " do_start checkpid if [ $? -eq 1 ]; then rm -f $PIDFILE echo "failed." exit 1 fi echo "done." } stop_daemon() { checkpid if [ $? -eq 1 ]; then exit 0 fi echo -n "Stopping $DESC: " do_stop if [ $? -eq 1 ]; then echo "failed." exit 1 fi echo "done." } restart_daemon() { echo -n "Reloading $DESC: " do_restart checkpid if [ $? -eq 1 ]; then rm -f $PIDFILE echo "failed." exit 1 fi echo "done." } status_daemon() { echo -n "Checking $DESC: " checkpid if [ $? -eq 1 ]; then echo "stopped." else echo "running." fi } case "$1" in start) start_daemon ;; stop) stop_daemon ;; restart|force-reload) restart_daemon ;; status) status_daemon ;; *) N=/etc/init.d/$NAME echo "Usage: $N {start|stop|restart|force-reload|status}" >&2 exit 1 ;; esac exit 0 # vim: sts=4 st=4 et
- /usr/bin/openerp-web :
#!/bin/sh cd /home/openerp/web exec /usr/bin/python ./openerp-web.py $@
Problèmes connus
Installation du serveur sous ubuntu 9.04 (Jaunty)
Alternativement, il existe un script pour Ubuntu 9.04: http://opensourceconsulting.wordpress.com/2009/06/29/openerp-server-5-0-openerp-web-5-0-1-installation-script-on-ubuntu-9-0-4-sh/
Commencer par installer depuis synaptic : openerp-server et python2.5.
Ensuite, lancer openerp-server depuis un terminal :
'openerp-server'
Vous obtenez ça :
ERROR: Import xpath module ERROR: Try to install the old python-xml package
Openerp5 utilise « python-xml », qui se trouve dans python2.5 (par exemple) et Ubuntu 9.04 utilise Python2.6 qui n'a pas ce fichier « python-xml ».
Depuis un terminal, vous devez :
indiquer à openerp-server d'utiliser « python2.5 » :
sudo gedit /usr/bin/openerp-server
remplacez
exec /usr/bin/python ./openerp-server.py
par
exec /usr/bin/python2.5 ./openerp-server.py
Créer un lien symbolique :
cd /usr/lib/python2.5/site-packages/oldxml/_xmlplus/utils/ sudo ln -s /usr/lib/python2.6/dist-packages/oldxml/_xmlplus//utils/boolean.so boolean.so
Si le dossier _xmlplus/utils n'existe pas, essayez de copier boolean.so au bon endroit :
cp /usr/lib/python2.6/dist-packages/oldxml/_xmlplus/utils/boolean.so /usr/lib/python2.5/site-packages/oldxml/_xmlplus/utils
Si tout s'est bien passé, en tapant openerp-server dans le terminal, vous obtenez ça :
[2009-05-16 19:31:16,607] INFO:server:version - 5.0.0 [2009-05-16 19:31:16,607] INFO:server:addons_path - /usr/lib/openerp-server/addons [2009-05-16 19:31:16,608] INFO:server:database hostname - localhost [2009-05-16 19:31:16,608] INFO:server:database port - 5432 [2009-05-16 19:31:16,609] INFO:server:database user – « votre login » [2009-05-16 19:31:16,609] INFO:objects:initialising distributed objects services [2009-05-16 19:31:18,139] INFO:web-services:starting XML-RPC services, port 8069 [2009-05-16 19:31:18,141] INFO:web-services:starting NET-RPC service, port 8070 [2009-05-16 19:31:18,142] INFO:web-services:the server is running, waiting for connections...
Openerp-server fonctionne.
Bases de données PostgreSQL
Avec une Ubuntu 9.04 française, il y a quelques problèmes d'installation et il n'est pas possible de créer de base openerp.
Il y a ici un bonne procédure concernant les problèmes de compatibilité python : doc opensourceconsulting
Une petite analyse des logs indique un problème de locale du coté de postgressql.
tail -f /var/log/openerp.log /var/log/postgresql/postgresql-8.3-main.log
Pour résoudre ce problème il faut faire passer postgresql en UTF8: (attention ça efface la base de données existante)
/etc/init.d/postgresql-8.3 restart rm -rf /var/lib/postgresql/8.3/main/* su - postgres
Tapez "entrée". L'administration se fait, au départ, avec l'utilisateur postgres, il ne possède pas de mot de passe: postgresql
/usr/lib/postgresql/8.3/bin/initdb --locale=fr_FR.UTF-8 -D /var/lib/postgresql/8.3/main/ cd /var/lib/postgresql/8.3/main ln -s /etc/postgresql-common/root.crt root.crt ln -s /etc/ssl/certs/ssl-cert-snakeoil.pem server.crt ln -s /etc/ssl/private/ssl-cert-snakeoil.key server.key /etc/init.d/postgresql-8.3 restart tail -f /var/log/postgresql/postgresql-8.3-main.log
Vérifiez aussi /etc/default/locale→ remplacer "LANG=fr_FR" par "LANG=fr_FR.UTF-8"
dpkg-reconfigure locales
Effectuez un reboot.
Pour que la connexion du client se fasse, il faut créer un super-utilisateur dans postegresql avec le même nom que votre identifiant sous ubuntu:
sudo su postgres
puis votre MDP
createuser votre_identifiant_ubuntu -P
et un mot de passe (openerp ou autre). A la question
make votre_identifiant_ubuntu as superuser
répondre Y (yes).
Information issue de http://www.openerp.com/forum/topic13328.html?sid=37d92478f947a3abc3493525b3e52a01
Et consultez la doc: Créer un utilisateur PostgreSQL.
: — apparement la partie ci dessous n'est pas nécessaire lors de l'installation —
Éditez ensuite le fichier /etc/default/tinyerp-server pour y mettre le mot de passe de la base de données que vous venez de définir :
# Specify the database password (Default: not set). DATABASE_PASSWORD="votre_mot_de_passe"
Les Modules
Par défaut, OpenERP contient tous les modules requis pour une gestion d'entreprise standard. Vous pouvez télécharger d'autres modules sur Launchpad.
Retours d'expérience
Voir la discussion "OpenERP - Vos réactions / expériences " sur le forum ubuntu-fr.
Voir aussi
- script d'installation automatique (ubuntu 9.04) pour openerp-server et client + webclient. Utilise les paquets officiels + patchs dont quelques passages sont repris dans cette page. En gros, ce script reprend le contenu de HowToforge - openerp - jaunty (mêmes posteurs…).
Contributeurs: Quentin THEURET