15-06-2015, 00:34
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 :
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 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 :
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 repertoire cremecrm (et ne pas rester dans le repertoire creme).
il vous suffit de taper :
Vous pouvez alors continuer l'installation de Crème, avec la commande
Syncdb vous demandera de configurer un utilisateur, faites le, ce sera votre premier utilisateur Crème
puis
puis
et enfin :
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. (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.
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
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
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
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.