27-02-2017, 17:29
(ceci est une petite mise-à-jour du tutoriel pour pour Creme1.5 de jmarmand https://www.cremecrm.com/forum/showthread.php?tid=70)
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.
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 :
Ensuite, vous allez installer Virtualenvwrapper qui installera automatiquement Virtualenv en même temps.
Pour cela il vous suffit de taper :
Avant d'aller plus loin, il faut que vous vérifiez que les packages suivants sont bien installés, sinon, installez les :
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)
Une fois cela fait et après avoir rechargé votre configuration, vous pouvez créer votre Virtualenv en tapant la commande :
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
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 1.6 (une version 1.7 sortira durant l'année 2017). 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 :
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)
ou
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 :
Puis passez sur la base de configuration avec la commande :
Ajoutez maintenant votre utilisateur (en remplaçant les valeurs d'exemple par vos propres valeurs) avec la commande :
Il ne vous reste plus alors qu'à créer la base de données
create database bdcremecrm ;
et à donner à votre utilisateurs les bonnes permissions.
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) :
Ensuite, vous devez revenir dans le répertoire 'cremecrm/' (et ne pas rester dans le répertoire 'creme/') ; il vous suffit de taper :
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'):
Vous pouvez alors continuer l'installation de Crème, avec la commande suivante qui va créer les tables de la base :
Puis on remplit la base avec les données initiales (utilisateur administrateur, société initiale, configuration par défaut etc…) :
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.
Enfin on génère les bundles d'assets statiques (CSS et JavaScript) :
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é.
Une fois cela fait il ne nous reste plus qu'à lancer le serveur de test en faisant :
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. 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
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.
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-devlibxslt1-devdefault-jrelibjpeg-dev (et potentiellement les autres bibliothèques de gestion d'images selon vos besoins, comme libpng*-dev)graphvizgraphviz-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
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 1.6 (une version 1.7 sortira durant l'année 2017). 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.6
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
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 :
# -*- coding: utf-8 -*-
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.
},
}
SECRET_KEY = '' # Nous allons bientôt remplir cette valeur
Ensuite, 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
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
Enfin on génère les bundles d'assets statiques (CSS et JavaScript) :
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. 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