| author | ymh <ymh.work@gmail.com> |
| Thu, 06 Nov 2014 02:08:12 +0100 | |
| changeset 176 | a343992c55fd |
| parent 175 | 1ff6533ba75d |
| permissions | -rw-r--r-- |
| 121 | 1 |
*********** |
2 |
Déploiement |
|
3 |
*********** |
|
4 |
||
5 |
La documentation de déploiement suivante est sur la base d'une Debian 7.0 (Wheezy). |
|
6 |
||
7 |
||
| 158 | 8 |
Options de déploiement |
| 121 | 9 |
====================== |
10 |
||
| 158 | 11 |
De nombreuses options de déploiement existent. Les plus populaires sont décrite sur le site Django à l'adresse suivante : https://docs.djangoproject.com/en/1.5/howto/deployment/. |
| 121 | 12 |
|
13 |
Nous décrivons ici l'installation de l'option apache + modwsgi : https://docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi/ |
|
14 |
||
15 |
||
| 158 | 16 |
Installation des prérequis |
| 121 | 17 |
========================== |
18 |
||
19 |
Liste des prérequis |
|
20 |
- python 2.7 |
|
21 |
- apache |
|
22 |
- modwsgi |
|
23 |
- postgresql |
|
24 |
- elasticsearch |
|
25 |
- build tools |
|
|
135
c9f22e2987ea
Add a reminder that the application needs sesame
ymh <ymh.work@gmail.com>
parents:
132
diff
changeset
|
26 |
- sesame |
| 121 | 27 |
|
28 |
Le reste des dépendances est fourni dans les sources. |
|
| 158 | 29 |
Toute les commandes ci dessous doivent se faire entant que ``root``, typiquement en préfixant toute les commandes avec ``sudo``. |
| 121 | 30 |
|
31 |
||
32 |
Python 2.7 |
|
33 |
---------- |
|
34 |
||
35 |
C'est la version par défaut de la distribution debian 7. Si python n'est pas déjà installé:: |
|
36 |
||
| 132 | 37 |
apt-get install python |
38 |
|
|
39 |
Dans tous les cas, il faut installer les outils de développement python:: |
|
40 |
||
41 |
apt-get install python-dev |
|
| 121 | 42 |
|
43 |
||
44 |
Apache et mod-wsgi |
|
45 |
------------------ |
|
46 |
||
| 158 | 47 |
On utilise les versions distribuées avec la debian 7. |
| 121 | 48 |
:: |
49 |
||
50 |
apt-get install apache2 |
|
51 |
apt-get install libapache2-mod-wsgi |
|
52 |
||
53 |
||
54 |
Postgresql |
|
55 |
---------- |
|
56 |
||
57 |
La aussi nous utilisons la version distribuée avec la debian 7, c'est à dire la 9.1. |
|
58 |
:: |
|
59 |
||
60 |
apt-get install postgresql |
|
| 132 | 61 |
apt-get install postgresql-server-dev-9.1 |
| 121 | 62 |
|
63 |
||
64 |
Elasticsearch |
|
65 |
------------- |
|
66 |
||
67 |
Elasticsearh a Java pour prérequis. Cette étape n'est pas décrite ici. |
|
68 |
Télécharger le paquet debian (deb) à l'adresse suivante : https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.5.deb . |
|
69 |
:: |
|
70 |
||
71 |
dpkg -i elasticsearch-0.90.5.deb |
|
72 |
||
73 |
||
74 |
Build tools |
|
75 |
----------- |
|
76 |
||
| 158 | 77 |
La création de l'environnement virtuel nécessite l'installation des outils de base de compilation. :: |
| 121 | 78 |
|
79 |
apt-get install build-essential |
|
80 |
||
|
135
c9f22e2987ea
Add a reminder that the application needs sesame
ymh <ymh.work@gmail.com>
parents:
132
diff
changeset
|
81 |
Sesame |
|
c9f22e2987ea
Add a reminder that the application needs sesame
ymh <ymh.work@gmail.com>
parents:
132
diff
changeset
|
82 |
------ |
|
c9f22e2987ea
Add a reminder that the application needs sesame
ymh <ymh.work@gmail.com>
parents:
132
diff
changeset
|
83 |
|
|
137
bb8bf2688d7e
- Finish and correct documentation
ymh <ymh.work@gmail.com>
parents:
135
diff
changeset
|
84 |
L'application "BO Plan4Learning" nécessite la présence d'un serveur Sesame comprenant l'ensemble des référentiels et thésaurus de l'application. |
|
bb8bf2688d7e
- Finish and correct documentation
ymh <ymh.work@gmail.com>
parents:
135
diff
changeset
|
85 |
|
|
bb8bf2688d7e
- Finish and correct documentation
ymh <ymh.work@gmail.com>
parents:
135
diff
changeset
|
86 |
L'installation d'un tel serveur est hors du scope de cette documentation. |
|
bb8bf2688d7e
- Finish and correct documentation
ymh <ymh.work@gmail.com>
parents:
135
diff
changeset
|
87 |
|
|
bb8bf2688d7e
- Finish and correct documentation
ymh <ymh.work@gmail.com>
parents:
135
diff
changeset
|
88 |
Une partie de l'application accède au serveur Sesame directement en javascript depuis le navigateur de l'utilisateur. |
|
bb8bf2688d7e
- Finish and correct documentation
ymh <ymh.work@gmail.com>
parents:
135
diff
changeset
|
89 |
Si le serveur Sesame est sur un autre domaine que l'application Back-Office (même si seulement le numéro de port change), |
| 158 | 90 |
il est nécessaire qu'il supporte les en-têtes CORS (cf. http://en.wikipedia.org/wiki/Cross-origin_resource_sharing) en autorisant le domaine de l'application Back-Office. |
|
137
bb8bf2688d7e
- Finish and correct documentation
ymh <ymh.work@gmail.com>
parents:
135
diff
changeset
|
91 |
|
|
135
c9f22e2987ea
Add a reminder that the application needs sesame
ymh <ymh.work@gmail.com>
parents:
132
diff
changeset
|
92 |
|
| 121 | 93 |
|
94 |
Etapes de déploiement |
|
95 |
===================== |
|
96 |
||
| 158 | 97 |
L'ensemble des commandes suivantes ne nécessite pas d'être exécutées comme utilisateur privilégié. |
| 121 | 98 |
|
99 |
Organisation des sources / commandes Django |
|
100 |
------------------------------------------- |
|
101 |
||
| 158 | 102 |
Les fichiers du projet peuvent être organisés en 4 groupes correspondant à des sous-répertoires |
103 |
- ``src`` : contient l'ensemble du code, template et ressources statiques |
|
104 |
- ``virtualenv`` : script de création de l'environnement virtuel et dépendances python |
|
105 |
- ``web`` : répertoire de publication des ressources statiques |
|
| 121 | 106 |
- ``run`` : répertoire contenant les logs de l'application |
107 |
||
| 158 | 108 |
Django fournit un utilitaire en ligne de commande permettant l'exécution de tâche d'administration. La documentation se trouve à l'adresse suivante : https://docs.djangoproject.com/en/1.5/ref/django-admin/ . |
| 132 | 109 |
|
| 158 | 110 |
Les ressources statiques sont tous les fichiers additionnels qui constituent un site web : images, javascript, css,... . |
| 121 | 111 |
|
112 |
||
| 132 | 113 |
.. _deployment-virtualenv: |
114 |
||
| 121 | 115 |
Virtualenv |
116 |
---------- |
|
117 |
||
| 158 | 118 |
L'environnement d'exécution python est isolé de l'environnement du système par l'utilisation d'un environnement virtuel ou ``virtualenv``. |
| 121 | 119 |
Une documentation d'utilisation se trouve à l'adresse suivante : http://www.virtualenv.org/en/latest/ . |
| 158 | 120 |
Il faut en particulier noter la procédure d'activation de l'environnement virtuel. Dans la suite, les commandes d'administration django devront être lancées après cette activation. |
| 121 | 121 |
|
| 158 | 122 |
Un script permettant la création de l'environnement virtuel et de l'installation de toutes les dépendances "python" est fourni dans le répertoire ``virtualenv``. |
| 121 | 123 |
|
124 |
.. code-block :: sh |
|
125 |
||
126 |
cd virtualenv/web/ |
|
127 |
python create_python_env.py |
|
| 158 | 128 |
python project-boot.py <chemin de l'environnement virtuel> |
| 121 | 129 |
|
130 |
||
| 158 | 131 |
Au cours de l'exploitation du serveur et en particulier lors des mise à jour du système d'exploitation, il faut être attentif aux mise à jour de la distribution python ayant servie à la création de l'environnement virtuel. |
132 |
Si la version de python est mise à jour, l'environnement virtuel devra lui aussi être mis à jour. |
|
| 121 | 133 |
|
134 |
Configuration |
|
135 |
------------- |
|
136 |
||
|
137
bb8bf2688d7e
- Finish and correct documentation
ymh <ymh.work@gmail.com>
parents:
135
diff
changeset
|
137 |
La configuration du système se fait dans le fichier ``src/p4l/config.py``. Ce fichier doit être créé à partir du fichier ``src/config.py.tmpl``. |
|
bb8bf2688d7e
- Finish and correct documentation
ymh <ymh.work@gmail.com>
parents:
135
diff
changeset
|
138 |
La plupart des configurations sont soit documentées directement dans le fichier, soit documentés à l'adresse suivante : https://docs.djangoproject.com/en/1.5/ref/settings/) |
|
bb8bf2688d7e
- Finish and correct documentation
ymh <ymh.work@gmail.com>
parents:
135
diff
changeset
|
139 |
|
|
bb8bf2688d7e
- Finish and correct documentation
ymh <ymh.work@gmail.com>
parents:
135
diff
changeset
|
140 |
Il existe un autre fichier de configuration : ``src/p4l/settings.py``. C'est en fait le fichier "normal" de configuration de Django (cf. https://docs.djangoproject.com/en/1.5/topics/settings/) . |
|
bb8bf2688d7e
- Finish and correct documentation
ymh <ymh.work@gmail.com>
parents:
135
diff
changeset
|
141 |
Techniquement, les propriétés de ``config.py`` viennent redéfinir une partie de celles de ``settings.py``. Néanmoins lors d'un déploiement, seule le fichier ``config.py`` doit être modifié. |
| 121 | 142 |
|
143 |
||
144 |
Création de la base |
|
145 |
------------------- |
|
146 |
||
147 |
La base est crée en plusieurs étapes. D'abord il faut créer la base de donnée vide. On pourra par exemple utiliser la commande suivante. |
|
148 |
||
149 |
.. code-block :: postgresql |
|
150 |
||
151 |
CREATE DATABASE p4l |
|
152 |
WITH ENCODING='UTF8' |
|
| 132 | 153 |
OWNER=<db user> |
| 121 | 154 |
TEMPLATE=template0 |
155 |
LC_COLLATE='en_US.UTF-8' |
|
156 |
LC_CTYPE='en_US.UTF-8' |
|
157 |
CONNECTION LIMIT=-1; |
|
158 |
||
159 |
Tout autre méthode est correcte. Attention cependant d'utiliser un encoding "utf-8". |
|
160 |
||
| 158 | 161 |
Le schéma de la base est créé avec la commande Django suivante (penser à préalablement activer l'environnement virtuel):: |
| 121 | 162 |
|
163 |
python manage.py syncdb --migrate |
|
164 |
||
|
175
1ff6533ba75d
upgrade documentation on deploiement
ymh <ymh.work@gmail.com>
parents:
158
diff
changeset
|
165 |
Note: Cette commade doit être aussi lancée après toute installation d'une nouvelle version de l'application ou bien de ces dépendances (virtualenv). |
|
1ff6533ba75d
upgrade documentation on deploiement
ymh <ymh.work@gmail.com>
parents:
158
diff
changeset
|
166 |
|
| 158 | 167 |
Enfin on crée un "super" utilisateur pouvant accéder à l'administration du site.:: |
| 121 | 168 |
|
169 |
python manage.py createsuperuser |
|
170 |
||
171 |
||
| 158 | 172 |
Déploiement des ressources statiques |
173 |
------------------------------------ |
|
| 121 | 174 |
|
| 158 | 175 |
Le déploiement des ressources statiques du site se fait à l'aide de la commande suivante: |
| 121 | 176 |
:: |
177 |
||
178 |
python manage.py collecststatic |
|
179 |
||
|
175
1ff6533ba75d
upgrade documentation on deploiement
ymh <ymh.work@gmail.com>
parents:
158
diff
changeset
|
180 |
Note: Cette commade doit être aussi lancée après toute installation d'une nouvelle version de l'application ou bien de ces dépendances (virtualenv). |
| 121 | 181 |
|
| 158 | 182 |
Configuration web |
| 121 | 183 |
----------------- |
184 |
||
185 |
La configuration web (apache) est documentée à l'adresse suivante : https://docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi/ . |
|
| 158 | 186 |
Comme cette configuration dépend de l'environnement propre au serveur, nous n'en détaillerons pas les étapes. |
| 121 | 187 |
|
188 |
Cependant, voici une liste des points notables: |
|
189 |
||
190 |
- Bien faire la séparation entre la partie dynamique servie par modwsgi, et la partie statique servie par apache. |
|
| 158 | 191 |
- le système utilise un environnement virtuel. Pensez bien à renseigner le chemin du répertoire ``site-packages`` dans la directive ``WSGIPythonPath`` |
| 121 | 192 |
- L'utilisation de ``mod_wsgi`` en mode démon (``daemon mode``) est fortement recommandée. |
| 158 | 193 |