Monter une instance Odoo depuis les sources

Principales étapes pour mettre en place Odoo et ajouter une nouvelle base de données
par Fabien George, mis à jour le 07/05/2018

Vous souhaitez tester le fonctionnement d'Odoo sans perdre vos données comme cela peut être le cas avec les runbots ?

Vous êtes développeur et souhaitez une instance Odoo en local sur votre machine pour contribuer et / ou créer et tester de nouveaux modules avant de les diffuser ?

Dans ce cas voici un petit tour des étapes essentielles pour pouvoir commencer à travailler sur Odoo(1).

 

Odoo peut s'installer de diverses manières, la plus basique étant la simple création d'une instance SAAS, dans ce cas rien à installer chez vous, tout est géré par Odoo S.A. Petit bémol, cette solution ne vous permettra pas de modifier le code, donc pas de modules custom, ni de contribution aux modules. Vous pourrez seulement customiser ce qui peut l'être par l'interface.

Vous pouvez également installer l'ERP open source via les packages mis à disposition pour votre système d'exploitation. Toutefois vous aurez une installation relativement rigide bien que customisable, vous ne pourrez pas avoir plusieurs instances sur une machine par exemple. Des images Docker sont aussi disponibles pour faciliter l'installation et le déploiement.

La méthode la plus souple et offrant sans doute le plus d'avantages est celle que nous allons évoquer ici : l'utilisation des sources. Il ne s'agit pas à proprement parler d'une installation, puisque vous allez lancer le logiciel directement depuis les fichiers qui le constituent. Ainsi, vous aurez accès à l'intégralité des composants, et pourrez modifier / ajouter autant de modules que vous le souhaitez.

Un autre avantage non négligeable de cette méthode est le fait de pouvoir avoir plusieurs instances d'Odoo sur une même machine. Vous pourrez travailler sur plusieurs projets en parallèle, ou bien tester des configurations totalement différentes si c'est plutôt la partie fonctionnelle qui vous intéresse.

Là encore diverses options s'offrent à vous : simple installation non isolée de votre système (non recommandé), utilisation de zc.buildout pour faciliter le déploiement d'une instance pré-paramétrée grâce à la recipe Anybox, ou bien cloisonnement des instances via des environnements virtuels Python. Nous allons présenter cette dernière option, car elle présente un bon compromis entre simplicité de mise en oeuvre et modularité.


Création d'un environnement virtuel Python avec virtualenv

 


La première étape consiste à mettre en place votre environnement virtuel Python, ce qui vous permettra d'avoir des versions spécifiques de packages Python pour chaque instance Odoo. Après avoir installé python-virtualenv sur votre système, placez-vous dans le répertoire qui contiendra votre instance et lancez la commande :

 

virtualenv sandbox

 

Vous pouvez spécifier la version de Python qui sera utilisée au sein de l'environnement :

 

virtualenv -p /usr/bin/pythonX.x sandbox

 

A partir de la version 11 d'Odoo, préférez python 3.5 (la compatibilité avec python 2 n'est pas garantie sur le long terme), dans les autres cas une version 2.7 sera requise.

 

Vous pouvez ensuite activer votre environnement virtuel pour éviter d'avoir à préciser le chemin vers sandbox/bin pour lancer vos commandes :

 

source sandbox/bin/activate

 

Puis depuis n'importe où :

 

deactivate

 

pour quitter l'environnement.

 

Récupération des sources

 


Il vous faudra ensuite récupérer les fichiers sources d'Odoo. Pour cela vous pouvez télécharger le .ZIP depuis la page officielle, ou bien, et c'est plutôt cette option que nous préconisons, utiliser le dépôt GIT :

 

git clone https://github.com/odoo/odoo.git

 

L'utilisation de GIT vous permettra de mettre à jour votre instance simplement, et de switcher entre les différentes versions (2) qui constituent les branches du dépôt.

 

Installation des dépendances Python

 


Dans les sources que vous venez de récupérer, vous trouverez un fichier "requirements.txt", listant tous les packages Python qui sont nécessaires au bon fonctionnement d'Odoo. Après avoir activé votre environnement virtuel, vous pouvez tous les installer dedans en une seule ligne de commande :

 

pip install -r requirements.txt -e .

 

L'option -e . permet d'installer Odoo au sein de votre environnement virtuel tout en vous laissant la possibilité d'éditer le code.

Installation de PostgreSQL

 


Si ce n'est pas déjà fait, vous aurez besoin d'installer le SGBD PostgreSQL, sur lequel repose Odoo. Chaque instance peut en effet avoir une ou plusieurs bases de données : ces dernières vont contenir toutes les définitions du modèle de données, ainsi que les données saisies ou calculées. Sur une même instance comprenant les mêmes modules, vous pouvez donc avoir des jeux de données distincts, ce qui peut s'avérer très pratique par exemple pour tester un paramétrage avec des données de démo.

 

Création d'une base de données

 


Il vous faut donc créer à minima une base de données pour Odoo (nous allons voir par la suite comment créer d'autres bases de données depuis le front Odoo), pour cela rien de plus simple :

 

createdb odoo_db


Démarrage du serveur Odoo

 

 

Pour lancer le serveur Odoo depuis un terminal, placez-vous dans le répertoire des sources, puis : 

 

python odoo-bin -d odoo_db

 

L'option -d permet de spécifier sur quelle base de données le serveur doit démarrer.

Vous pourrez alors accéder à l'interface depuis votre navigateur via l'URL : http://localhost:8069

8069 est le port utilisé par défaut par Odoo. Vous pouvez en spécifier un autre si vous le souhaitez (voir la liste des options disponibles sur la documentation Odoo).

Il vous suffit ensuite de vous logguer avec les identifiants par défaut (login: admin / mot de passe: admin) pour commencer à utiliser Odoo.

 

A ce stade vous avez une instance de la suite Odoo opérationnelle sur votre machine, et vous pouvez commencer à travailler dessus en installant les modules fournis ou des modules de l'OCA (Odoo Community Association), voire en ajoutant vos propres modules si vous êtes développeur.

 

Ajout d'une base de données

 


À présent voyons comment créer une nouvelle base de données. Une possibilité serait de créer une 2ème base de données avec la commande createdb de PostgreSQL que nous venons de voir. Mais il y a encore plus simple : il est possible d'administrer les bases directement depuis l'interface Odoo. Voyons cela de plus près avec une vidéo pour commencer (ici sur une V9) :

 

 

  

Retour sur les étapes principales (avec une V11 cette fois, comme vous pourrez le voir l'ajout d'une base est très similaire) :

 

Lorsque vous êtes sur l'écran de connexion, un lien "manage databases" se présente à vous :

 

odoo-instance-1.png

 

En cliquant dessus, vous accédez à la liste des bases de données visibles par Odoo, et vous pouvez réaliser des opérations dessus (création, suppression, duplication, etc) :

 

odoo-instance-2.png

 

En cliquant sur "Create Database", une nouvelle fenêtre s'ouvre et vous permet de définir le nom de la nouvelle base à créer, les identifiants de connexion à cette base et les paramètres régionnaux.

Vous avez également la possibilité de charger les données de démo via une case à cocher. Ceci peut être utile si vous souhaitez tester le fonctionnel de la suite.

Notez que vous devrez saisir le mot de passe "master" si ce dernier a été défini pour pouvoir alterer les bases de données.

 

odoo-instance-3.png

  

Une fois la base créée, vous serez connectés sur la nouvelle base et vous arriverez sur la page de gestion des applications de cette dernière.

 

odoo-instance-4.png

 

En vous déconnectant pour revenir sur la page de login vous constaterez qu'un nouveau champ vous permettant de sélectionner la base à utiliser pour la session a été ajouté sur la page de login. Il vous suffit de sélectionner la base souhaitée puis de renseigner les identifiants propres à cette base pour vous connecter dessus et utiliser Odoo.

 

odoo-instance-5.png

 

odoo-instance-6.png 

 

odoo-instance-7.png

  

Attention, l'option "-d odoo_db" force le serveur à utiliser la base que vous précisez en argument, si vous avez plusieurs bases il vaut mieux privilégier "--db-filter=.*" pour que toutes vos bases PostgreSQL soient disponibles, ou bien par exemple "--db-filter=odoo*" pour avoir toutes les bases dont le nom commence par "odoo". Dans le cas contraire les autres bases ne seront pas visibles par Odoo et vous ne pourrez donc pas les sélectionner.

  

En espérant que cet article vous aura été utile, n'hésitez pas à nous contacter si vous êtes intéressé par une thématique en particulier, nous ne manquerons pas d'étudier votre demande !

 

Note: Pour aller plus loin, sachez qu'il est désormais possible d'installer des modules Odoo avec pip depuis le PyPI, et même de construire vos propres modules, grâce aux packages python odoo-autodiscover et setuptools-odoo.

 

 

(1) Cet article suppose que vous utilisez Linux. Sous d'autres OS, certains paramétrages peuvent différer.

(2) En fonction de la version d'Odoo utilisée, certains visuels peuvent différer, mais les fondements restent les mêmes. J'ai utilisé ici la V11, sur la vidéo nous présentons la V9.