Installation de Crème CRM 1.5 sous Linux
#1
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 inutile 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.

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-dev
    python-dev
    libxslt1-dev
    graphviz
    graphviz-dev

Une fois que tout est installé on va pouvoir créer le Virtualenv pour Crème.

Il reste pourtant 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. Je vais partir du principe que vous voulez installer la version de dev. Mais la suite de ce tutoriel fonctionne également avec la version 1.2 (qui sortira courant avril 2012).

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.5

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

Une fois l'installation des dépendances finies et avant de passer au déploiement de Crème proprement dit, on va devoir configurer la base de données.

Je vais partir du principe que vous utilisez MySQL comme serveur de base de données. Pour pouvoir utiliser Crème, 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.

Vous pouvez aussi le faire en console. Logguez vous dans MySQL avec la commande suivante :
Code :
mysql -uroot -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 :
INSERT INTO user(host,user,password) VALUES ('localhost','cremeuser',PASSWORD('34jkfue1dioaA'));

Il ne vous reste plus alors qu'à créer la base de données
create database bdcremecrm ;
et à donner à votre utilisateurs les bonnes permissions.
Code :
GRANT SELECT ,
INSERT ,
UPDATE ,
DELETE ,
CREATE ,
DROP ,
INDEX ,
ALTER ,
CREATE TEMPORARY TABLES ,
CREATE VIEW ,
EVENT,
TRIGGER,
SHOW VIEW ,
CREATE ROUTINE,
ALTER ROUTINE,
EXECUTE ON `bdcremecrm` . * TO 'cremeuser'@'localhost';

On peut passer à la dernière phase du déploiement de Crème. Rendez-vous dans le répertoire creme. Il va vous falloir créer un fichier de configuration propre à votre machine.

Ce fichier doit s'appeler local_settings.py

Il doit contenir les lignes suivantes (vous devrez si nécessaire remplacer les noms de la table, de l'utilisateur et son mot de passe par les valeurs que vous avez défini précédemment) :
Code :
from os.path import dirname, join, abspath
CREME_ROOT = dirname(abspath(__file__))

DEBUG = False

DATABASES = {
    'default': {
        'ENGINE':   'django.db.backends.mysql', # 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME':     'bdcremecrm',                 # Or path to database file if using sqlite3.
        'USER':     'cremeuser',                    # Not used with sqlite3.
        'PASSWORD': '34jkfue1dioaA',                    # Not used with sqlite3.
        'HOST':     '',                         # Set to empty string for localhost. Not used with sqlite3.
        'PORT':     '',                         # Set to empty string for default. Not used with sqlite3.
        'OPTIONS':   {'init_command': 'SET storage_engine=INNODB' },                         # Extra parameters for database connection. Consult backend module's document for available keywords.
    },
}

Ensuite, vous devez revenir dans le repertoire cremecrm (et ne pas rester dans le repertoire creme).
il vous suffit de taper :
Code :
cd ..

Vous pouvez alors continuer l'installation de Crème, avec la commande
Code :
python manage.py syncdb

Syncdb vous demandera de configurer un utilisateur, faites le, ce sera votre premier utilisateur Crème
puis
Code :
python manage.py migrate --all
puis
Code :
python manage.py creme_populate

et enfin :
Code :
python manage.py generatemedia

Ici , vous pouvez avoir des messages d'erreur parlant d'images non trouvées (voir ci dessous ). Ce n'est pas grave du tout, les choses ont tout de même fonctionné.
Code :
/usr/lib/python2.7/pkgutil.py:186: ImportWarning: Not importing directory '/usr/local/lib/python2.7/dist-packages/virtualenvwrapper': missing __init__.py
  file, filename, etc = imp.find_module(subname, path)
Generating l10n.js with variation {'language': 'en'}
Generating l10n.js with variation {'language': 'fr'}
Generating main.js with variation {}
Generating icecreammain.css with variation {}
2015-07-24 11:17:32 [ERROR] - root : URL not found: icecream/images/expandme.gif
2015-07-24 11:17:32 [ERROR] - root : URL not found: icecream/images/expanded.gif


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. 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. (une suite expliquant comment mettre en prod (en utilisant une des multiples façons possibles de mettre en production du django) sera développée dans un prochain billet.
  Répondre
#2
J'ai une installation de crème-crm 1.3 alpha sous django 1.3.7 qui tourne sur un serveur local avec les caractéristiques suivantes:
- debian 7.8
- kernel 3.2.0-4-686-pae
- php 5.4.39-0
- mysql 14.14 Distrib 5.5.41

Je voudrais bien faire une mise à jour vers crème-crm 1.5 soit sur le même serveur soit sur un autre serveur local avec les caractéristiques suivantes:
- debian 8.0
- kernel 3.16.0-4-686-pae
- mysql  14.14 Distrib 5.5.42
- php 5.6.6-2

J'ai bien compris qu'il faut effectuer la mise à jour étape par étape (1.3 > 1.4 > 1.5) mais je voudrais garder l'installation existante (1.3) en opération jusqu'à ce que la nouvelle installation (1.5) fonctionne correctement. Est-ce que vous voyez une procédure à suivre pour effectuer la mise à jour de cette façon?
  Répondre
#3
Bonsoir,

un point important avant de répondre précisément à votre question :
Imaginons que vous allez commencer votre migration demain matin.
Vous allez commencer par cloner votre base de données pour pouvoir l'utiliser en temps que base de données de migration. Et vous allez faire votre migration, entre demain et mardi soir. La migration sera donc totalement fini mercredi 23 juin au matin.

Pendant ce temps, vous avez gardé votre crème 1.3 en l'état. Tout au lond du mardi 22 juin, il va donc y avoir des ajouts dans votre base. Nouveaux contacts créés, nouvelles organisations ou opportunités, modification de certaines valeurs de champs, etc ...

La base de données de votre nouveau Crème 1.5 sera elle la base que vous avez cloné mardi matin. Donc elle ne contiendra pas toutes les modifications faites pendant la journée du 22.

Ce que vous pouvez faire c'est :
- cloner votre base existante pour avoir une base de données de travail.
- créer un virtualenv different de celui de production qui contiendra l'environnement python pour votre creme 1.5
- récupérer le code source de creme 1.4 (dans un répertoire différent de celui de votre creme de production)
- faire toute la migration, vérifier que tout est ok.
- récupérer le code source de creme 1.5 (dans un répertoire différent de celui de votre creme de production)
- faire toute la migration, vérifier que tout est ok.


Ensuite à ce moment là, il vous faudra faire les choses 'pour de vrai'. Donc :
- vous arrêtez votre Crème de prod
- vous sauvez sa base
- vous allez dans le répertoire qui contient le code source creme 1.4, vous modifier les settings pour que ce crème travaille avec votre base de prod (toujours en creme 1.3)
- vous refaite la migration (votre base de prod est maintenant en 1.4)
- vous allez dans le répertoire qui contient le code source creme 1.5, vous modifier les settings pour que ce crème travaille avec votre base de prod (maintenant en creme 1.4)
- vous refaite la migration (votre base de prod est maintenant en 1.5)
- vous modifiez la config de votre serveur web pour que celui-ci utilise le code 1.5
- vous réouvrez l'accès à Crème.

Une précision, faire la migration correspond au différentes étapes des fichiers readme et pas seulement le migrate commande base de données.
  Répondre
#4
Merci pour votre réponse rapide et détaillée.
Je reviendrai vers vous en cas de problème ou de succès !
  Répondre
#5
Bonjour,

je suis intéressé par votre prochain tutoriel sur l'installation de Crème CRM en production avec serveur Apache.

Mais en attendant ce prochain tutoriel, savez-vous où je peux trouver de la documentation pour faire fonctionner Crème CRM avec Apache ?

Merci.
Crème CRM 2.4.2 sur Debian GNU/Linux 11 Bullseye avec Apache2 + WSGI
  Répondre
#6
Je vais essayer de profiter du 14 juillet pour mettre en place le tutoriel en question.

Sinon, Crème étant un projet django comme un autre, il faut regarder du coté des tutoriaux pour faire tourner des projets Django avec apache.
  Répondre
#7
Voila la première partie d'explication pour faire tourner Crème avec Apache est en ligne ici.
  Répondre
#8
Bonjour,

Merci pour ce tutoriel très clair, ainsi que pour les indications pour paramétrer le serveur Apache.
J'aurais une question concernant les mises à jour.
Actuellement, voilà comment je m'y prends : je recrée un nouvel environnement virtuel, creme_5 et le répertoire Envs_5 par exemple pour la version 1.5, et j'installe la nouvelle version à partir de là.
Est-ce la bonne méthode (en tout cas ça a l'air de bien fonctionner) ?
Par sécurité je garde les anciennes dossiers Envs_4, Envs_3, etc., ainsi que les dossiers creme_crm-1.4...
La question est : comment puis-je supprimer correctement les anciens environnements virtuels ? Simplement en supprimant les dossiers Envs_(n-1) et creme_crm-1.(n-1), ou bien faut-il faire quelque chose de spécial ?
Merci

René
  Répondre
#9
Bonjour,

Si vous utilisez virtualenvwrapper (ce que je conseille) vous avez une commande rmvirtualenv qui permet de donner un nom de virtualenv et il fait tout correctement.

Sinon supprimer le répertoire du virtualenv suffit également.
  Répondre
#10
Merci !
  Répondre


Atteindre :


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