[obsolète] Installation de Crème CRM 1.8 sous Linux
#1
Introduction

Pour ce tutoriel d'installation de Crème CRM sous Linux on va faire les choses du mieux possible. On va donc installer des choses qui pourraient vous sembler inutiles mais qui à terme permettront d'avoir une installation pérenne et qui ne rentrera pas en collision avec d'autres logiciels que vous pourriez vouloir installer.

Enfin, le tutoriel va être en deux parties, la première partie vous permet d'installer tout le nécessaire pour faire fonctionner Crème avec le serveur de développement intégré dans Django. Le serveur de développement n'est pas une façon pérenne de faire fonctionner une application Django. Mais c'est un moyen simple de vérifier que tout fonctionne et vous pouvez faire quelques tests avec pour vérifier que Crème vous convient.

La deuxième partie du tutoriel vous permettra d'utiliser Apache pour faire tourner votre Crème. Bien que plus compliqué à faire fonctionner, c'est une façon pérenne de faire les choses.

Une remarque très importante : si l'utilisation du serveur de développement est déconseillé pour une utilisation sur du long terme dans le cadre d'une machine personnelle, elle est par contre totalement interdite dans le cadre d'un hébergement sur un serveur. Si vous comptez installer Crème  tout de suite sur un serveur, il ne faut pas, pas une seule seconde, utiliser le serveur de développement. En effet celui-ci est fait pour le test et rien d'autre. Il n'est pas prévu, ni en terme de performance ni en terme de sécurité, pour être utilisé dans un vrai contexte de production.

Installation des bibliothèques "système"

On va donc commencer par installer Virtualenv. Virtualenv vous permet en effet d'avoir plusieurs environnements virtuels Python. L’intérêt est de pouvoir cloisonner les dépendances par projet. Vous êtes ainsi sûr que votre Crème n’arrêtera pas de fonctionner juste parce que vous avez dû mettre à jour une librairie Python pour pouvoir installer un autre logiciel. On ne va pas se contenter d'installer Virtualenv et on va installer aussi Virtualenvwrapper qui est une surcouche à Virtualenv et qui vous simplifiera les choses.

Pour installer tout cela, vous allez devoir commencer par installer python-setuptools et python-pip. Si vous êtes sous Debian ou Ubuntu il vous suffit de faire :
Code :
sudo apt-get install python-setuptools
sudo apt-get install python-pip

Ensuite, vous allez installer Virtualenvwrapper qui installera automatiquement Virtualenv en même temps.
Pour cela il vous suffit de taper :
Code :
sudo pip install virtualenvwrapper

Avant d'aller plus loin, il faut que vous vérifiez que les packages suivants sont bien installés, sinon, installez les :
  • mysql_config libmysqlclient-devpython-devredis-serverlibxslt1-devdefault-jrelibjpeg-dev (et potentiellement les autres bibliothèques de gestion d'images selon vos besoins, comme libpng*-dev)graphvizgraphviz-dev

Installation de l'environnement virtuel

Nous allons va pouvoir créer le Virtualenv pour Crème.

Il reste une dernière petite config à faire, à savoir indiquer où vous allez stocker vos différents Virtualenv. Je vais partir du principe que vous utilisez le répertoire Envs à la racine de votre home. Il va falloir que dans le fichier de configuration de votre shell (.bashrc si vous utilisez le bash) vous configuriez la variable WORKON_HOME. Cela se fait de la manière suivante (pour bash)
Code :
export WORKON_HOME=~/Envs

Une fois cela fait et après avoir rechargé votre configuration, vous pouvez créer votre Virtualenv en tapant la commande :
Code :
mkvirtualenv creme
L'option –no-site-packages permet d'être sûr que votre Virtualenv sera bien isolé de votre système et que vous n'utiliserez pas par inadvertance un package de celui-ci. Il faut d'ailleurs noter que dans les dernières versions de Virtualenvwrapper, cette option est obsolète. En effet, l'isolation des Virtualenv est devenu le comportement par défaut.

Une fois que votre Virtualenv est créé, il faut l'activer pour votre console. Vous allez en effet installer de nouveaux packages Python et faire des commandes Django et tout doit se faire dans votre Virtualenv. L'activation d'un Virtualenv se fait avec la commande workon. Si vous la lancez sans argument elle vous donnera la liste des Virtualenv possibles. Avec un nom de Virtualenv, elle l'active.

Ici, vous devez donc taper
Code :
workon creme

Il y a d'autre commandes intéressantes dans Virtualenvwrapper. Vous les trouverez dans le man. Une commande qui vous sera utile est la commande deactivate qui permet de sortir d'un Virtualenv pour revenir à votre environnement système classique.

Maintenant que vous avez activé votre Virtualenv, il vous faut récupérer Crème. Pour cela il suffit d'utiliser mercurial (que vous devez avoir installé avec votre gestionnaire de package préféré).

Taper simplement à l'endroit où vous voulez déposer le code source de Crème :
Code :
hg clone https://bitbucket.org/hybird/creme_crm-1.8

Vous remarquerez que les sources de Crème contiennent (dans le répertoire 'creme/)' un petit fichier 'requirements.txt'. C'est ce fichier qui va servir à installer de manière automatique les dépendances.

Il vous suffit donc de taper (suivant l'endroit d'où vous vous trouvez)
Code :
pip install -r creme/requirements.txt
ou
Code :
pip install -r requirements.txt

Configuration de la base de données

Django utilise un système de configuration qui utilise un fichier python stockant des valeurs ; ce fichier s'appelle de base 'settings.py' (vous le trouverez dans le répertoire 'creme/'). Mais afin de ne pas modifier un fichier "appartenant " à Creme (ce qui vous obligerez à gérer des conflits lors de mise-à-jour du code de Creme), nous allons mettre la configuration spécifique à votre serveur dans un fichier qui vous appartient.

Rendez-vous dans le répertoire 'creme/' et créez un fichier de configuration propre à votre machine:  local_settings.py
(attention le nom est important, puisque settings.py importe explicitement ce fichier s'il existe).

Pour le moment, Il doit contenir les lignes suivantes (que nous allons compléter par la suite) :

Code :
# -*- coding: utf-8 -*-

DATABASES = {
   'default': {
       'ENGINE':   '',
       'NAME':     '',
       'USER':     '',
       'PASSWORD': '',
       'HOST':     '',    # Une chaîne vide pour le localhost.
       'PORT':     '',    # Une chaîne vide pour le port par défaut.
   },
}

SECRET_KEY = ''

Avant de passer au déploiement de Crème proprement dit, on va devoir configurer la base de données. Creme est testé avec trois systèmes de gestion de base de données: SQLite, MySQL & PostgreSQL. Django permet aussi d'utiliser une base Oracle, mais nous n'avons jamais eu l'occasion de tester une telle configuration (mais pourquoi utiliser un SGBDR propriétaire quand l'offre libre est aussi bonne ?). Il existe aussi des backends pour d'autres SGBDR (firebird, sqlserver ...) qui sont distribués à part de Django ; là encore nous ne les avons pas testé, et ne pouvons garantir leur fonctionnement (mais si vous avez essayé, vos retours sont évidemment les bienvenus, ne serait-ce que par curiosité technique).

SQLite

SQLite est surtout utile si vous êtes un développeur, afin de tester rapidement votre travail. C'est aussi envisageable si vous comptez utiliser Creme
en tant qu'application monoposte et avec peu de données (c'est sûrement une mauvaise idée pour des dizaines de milliers de fiches). Si vous n'êtes pas dans ces 2 cas, nous vous déconseillons vivement une telle configuration.

Si vous choisissez SQLite, la configuration est très simple (pas d'utilisateur ou de mot de passe) ; éditez la variable DATABASES de votre local_settings.py ainsi :

Code :
DATABASES = {
   'default': {
       'ENGINE':   'django.db.backends.sqlite3',
       'NAME':     '/chemin/absolu/vers/un/fichier.db',
       'HOST':     '',
       'PORT':     '',
   },
}

Vous devez évidemment mettre une chemin valide en tant que NAME (le fichier sera créé s'il n'existe pas, mais faites attention que Creme ait bien les permissions d'écrire dans le répertoire choisi).

MySQL

MySQL est un choix classique pour un serveur de production ; il est très répandu et facile à configurer. En revanche, il n'est pas toujours possible de le configurer aussi finement qu'on le voudrait, et a tendance à voir ses performances varier étrangement au grès des versions (la plupart du temps dans le bon sens, mais pas toujours) . C'est donc un bon choix si vous le connaissez déjà, et que vous ne visez pas des volumes importants de données (pour quelques centaines de milliers de fiches ça devrait être satisfaisant -- ça dépend de votre matériel évidemment).

Pour que Crème puisse utiliser MySQL, il faut créer une base de données et un utilisateur qui a les droits sur celle-ci. Vous pouvez bien entendu le faire en graphique grâce à un outil d'administration de BD.

Voici comment le faire en console. Notez qu'en fonction de la version de MySQL les commandes peuvent changer ; les instructions suivantes fonctionnent avec MySQL 5.7 (des Ubuntu LTS 16.04 & 18.04) ; référez vous à la documentation de votre version de MySQL les commandes ne fonctionnent pas.

D'abord logguez vous dans MySQL avec la commande suivante :
Code :
mysql -u root -p

Puis passez sur la base de configuration avec la commande :
Code :
use mysql;

Ajoutez maintenant votre utilisateur (en remplaçant les valeurs d'exemple par vos propres valeurs) avec la commande :
Code :
CREATE USER 'cremeuser'@'localhost' IDENTIFIED BY '34jkfue1dioaA';

Puis nous créons la base de données :
Code :
CREATE DATABASE bdcremecrm;

et enfin nous donnons à votre l'utilisateur toutes les permissions sur la base de données de Creme :
Code :
GRANT ALL PRIVILEGES ON bdcremecrm.* TO 'cremeuser'@'localhost' WITH GRANT OPTION;

Éditez la variable DATABASES de votre local_settings.py ainsi (vous devrez si nécessaire remplacer les noms de la base, de l'utilisateur et son mot de passe par les valeurs que vous avez défini précédemment)  :

Code :
DATABASES = {
   'default': {
       'ENGINE':   'django.db.backends.mysql',
       'NAME':     'bdcremecrm',
       'USER':     'cremeuser',
       'PASSWORD': '34jkfue1dioaA',
       'HOST':     '',    # Une chaîne vide pour le localhost.
       'PORT':     '',    # Une chaîne vide pour le port par défaut.
   },

PostgreSQL

PostgreSQL est sûrement le meilleur choix pour les volumes de données importants ; non seulement ses performances sont excellentes, mais c'est aussi le SGBDR le plus rigoureux en terme de cohérence des données.

Les instructions du début de ce tutoriel étaient plutôt faites pour un déploiement avec MySQL ; aussi il va falloir installer des paquets supplémentaires si vous souhaitez utiliser PostgreSQL.

Du point de vue des bibliothèques systèmes, il vous  évidemment le serveur lui-même ; sous Ubuntu par exemple le paquet "postgresql-client-common" permettra d'installer le nécessaire.
Dans votre virtualenv, il faudra installer le paquet permettant à python de faire ses requêtes à PGSQL:
Code :
pip install psycopg2

Comme pour MySQL, il vous faut maintenant créer un utilisateur dédié à Creme, ainsi qu'une base sur lequel l'utilisateur a tous les droits. Là encore c'est possible en console comme en graphique (en graphique, le programme "pgAdmin III" fait un très bon travail).

Lorsque c'est fait, éditez la variable DATABASES de votre local_settings.py ainsi (vous devrez remplacer les noms de la base de l'utilisateur et son mot de passe par les valeurs que vous avez choisies juste avant)  :

Code :
DATABASES = {
   'default': {
       'ENGINE':   'django.db.backends.postgresql',
       'NAME':     'nom_de_la_base',
       'USER':     'nom_de_l_utilisateur',
       'PASSWORD': 'm0t_de_p4$$',
       'HOST':     '',    # Une chaîne vide pour le localhost.
       'PORT':     '',    # Une chaîne vide pour le port par défaut.
   },

Remplissage de la base de données

Vous devez revenir dans le répertoire 'cremecrm/' (et ne pas rester dans le répertoire 'creme/') ; il vous suffit de taper :
Code :
cd ..

Avec la commande suivante, vous allez générer votre clé secrète ; il faudra mettre la valeur retournée dans votre local_settings.py, dans la variable SECRET_KEY (entre les '' ; exemple: SECRET_KEY = 'abcd123'):
Code :
python manage.py build_secret_key

Avec la commande suivante, on va créer les tables de la base :
Code :
python manage.py migrate

Puis on remplit la base avec les données initiales (utilisateur administrateur, société initiale, configuration par défaut etc…) :
Code :
python manage.py creme_populate
Ne vous inquiétez pas des messages du genre , ils indiquent juste que certaines apps n'ont pas besoin de créer des données initiales.

Génération des bundles d'assets statiques

Il s'agit de créer des fichiers optimisés pour le CSS et le JavaScript, ainsi que des images avec des noms pensés pour être mises en cache intelligemment :
Code :
python manage.py generatemedia

Voici la sortie que vous devriez avoir :
Code :
Generating l10n.js with variation {'language': 'en'}
Generating l10n.js with variation {'language': 'fr'}
Generating lib.js with variation {}
Generating main.js with variation {}
Generating testlib.js with variation {}
Generating testcore.js with variation {}
Generating icecreammain.css with variation {}
Generating chantillymain.css with variation {}

Lancement du serveur

Une fois cela fait il ne nous reste plus qu'à lancer le serveur de test en faisant :
Code :
python manage.py runserver

Vous pouvez maintenant vous connecter sur http://localhost:8000 pour voir que votre Crème fonctionne. La commande 'creme_populate' vous a indiqué qu'elle a créé un utilisateur "root" (mot de passe "root") ; utilisez cet utilisateur pour vous connecter. Vous êtes très vivement encouragé à changer immédiatement le mot de passe  (dans le menu en haut > icône rouage > Utilisateurs).

Mais, et je vais le répéter, ce serveur de développement n'est pas fait pour être utiliser dans un contexte de production. Par exemple, pour mettre en production avec Apache et mod_wsgi, vous pouvez suivre cet autre billet: https://www.cremecrm.com/forum/showthread.php?tid=110

Lancement du gestionnaire de jobs

Depuis Creme1.7 certaines fonctionnalités (import des fichiers CSV/XLS, envoi des campagnes d'e-mails...) sont effectuées par des jobs tournant en parallèle du serveur Web. Ces jobs sont gérés par un gestionnaire qui s'occupent de créer ces processus lorsque c'est nécessaire.

Ce gestionnaire doit être lancé à part, et tourner en permanence  ; si ce n'est pas le cas, la majorité de Creme fonctionnera parfaitement, mais pas les fonctionnalités basées sur les jobs. Si vous allez sur la liste des jobs (menu > Outils > Jobs) un message d'erreur vous indiquera si le gestionnaire est injoignable. Pour lancer le gestionnaire :
Code :
python manage.py creme_job_manager
  Répondre
#2
Bonjour,
L'installation s'est déroulé avec succès.
Malheureusement, je ne parviens pas à me connecter à l'interface web. Que me conseillez-vous ?

Cordialement,
  Répondre
#3
Bonjour.

Quand vous dites que vous n'arrivez à vous connecter :
  • est-ce avec le serveur de développement ou bien avec un serveur de production (Apache, NginX...) ?
  • tentez vous d'y accéder en local (serveur et browser sur la même machine), ou bien est-ce un serveur distant ?

Le plus simple est de commencer en testant, comme le dit le tutoriel, en local avec le serveur de développement, puis en distant, avant de passer à un serveur de production (et dans ce dernier cas de regarder les logs si ça ne fonctionne pas).

Bon courage pour la suite !
  Répondre
#4
Bonjour,
J'ai réglé le problème en faisant une nouvelle installation. Apparement, un problème lors de la commande populate.
Merci de votre retour,
  Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)