|
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 |
|
|
|
8 |
options de déployement |
|
|
9 |
====================== |
|
|
10 |
|
|
|
11 |
De nombreuses options de déploiement existe. Les plus populaires sont décrite sur le site Django à l'adresse suivante : https://docs.djangoproject.com/en/1.5/howto/deployment/. |
|
|
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 |
|
|
|
16 |
installation des prérequis |
|
|
17 |
========================== |
|
|
18 |
|
|
|
19 |
Liste des prérequis |
|
|
20 |
- python 2.7 |
|
|
21 |
- apache |
|
|
22 |
- modwsgi |
|
|
23 |
- postgresql |
|
|
24 |
- elasticsearch |
|
|
25 |
- build tools |
|
|
26 |
|
|
|
27 |
Le reste des dépendances est fourni dans les sources. |
|
|
28 |
Toute les commandes ci dessous doivent se faire entant que ``root``, typiquement en prefixant toute les commandes avec ``sudo``. |
|
|
29 |
|
|
|
30 |
|
|
|
31 |
Python 2.7 |
|
|
32 |
---------- |
|
|
33 |
|
|
|
34 |
C'est la version par défaut de la distribution debian 7. Si python n'est pas déjà installé:: |
|
|
35 |
|
|
|
36 |
apt-get install python |
|
|
37 |
|
|
|
38 |
|
|
|
39 |
Apache et mod-wsgi |
|
|
40 |
------------------ |
|
|
41 |
|
|
|
42 |
On utilise les versions distribuée avec la debian 7. |
|
|
43 |
:: |
|
|
44 |
|
|
|
45 |
apt-get install apache2 |
|
|
46 |
apt-get install libapache2-mod-wsgi |
|
|
47 |
|
|
|
48 |
|
|
|
49 |
Postgresql |
|
|
50 |
---------- |
|
|
51 |
|
|
|
52 |
La aussi nous utilisons la version distribuée avec la debian 7, c'est à dire la 9.1. |
|
|
53 |
:: |
|
|
54 |
|
|
|
55 |
apt-get install postgresql |
|
|
56 |
|
|
|
57 |
|
|
|
58 |
Elasticsearch |
|
|
59 |
------------- |
|
|
60 |
|
|
|
61 |
Elasticsearh a Java pour prérequis. Cette étape n'est pas décrite ici. |
|
|
62 |
Télécharger le paquet debian (deb) à l'adresse suivante : https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-0.90.5.deb . |
|
|
63 |
:: |
|
|
64 |
|
|
|
65 |
dpkg -i elasticsearch-0.90.5.deb |
|
|
66 |
|
|
|
67 |
|
|
|
68 |
Build tools |
|
|
69 |
----------- |
|
|
70 |
|
|
|
71 |
La création de l'environement virtuel nécessite l'installation des outils de base de compilation. :: |
|
|
72 |
|
|
|
73 |
apt-get install build-essential |
|
|
74 |
|
|
|
75 |
|
|
|
76 |
Etapes de déploiement |
|
|
77 |
===================== |
|
|
78 |
|
|
|
79 |
L'ensemble des commandes suivantes ne nécessite pas d'être exécutées comme utilisateur prilivégié. |
|
|
80 |
|
|
|
81 |
Organisation des sources / commandes Django |
|
|
82 |
------------------------------------------- |
|
|
83 |
|
|
|
84 |
Les fichiers du projets peuvent être organisés en 4 groupes correspondant à des sous-répertoires |
|
|
85 |
- ``src`` : contient l'ensemble du code, template et resources statiques |
|
|
86 |
- ``virtualenv`` : script de création de l'environement virtuel et dépendances python |
|
|
87 |
- ``web`` : répertoire de publication des resources statiques |
|
|
88 |
- ``run`` : répertoire contenant les logs de l'application |
|
|
89 |
|
|
|
90 |
Django fournit un utilitaire en ligne de commande permettant l'execution de tâche d'administration. La documentation se trouve à l'adresse suivante : https://docs.djangoproject.com/en/1.5/ref/django-admin/ . |
|
|
91 |
cet |
|
|
92 |
|
|
|
93 |
|
|
|
94 |
Virtualenv |
|
|
95 |
---------- |
|
|
96 |
|
|
|
97 |
L'environement d'execution python est isolé de l'environement du système par l'utilisation d'un environement virtuel ou ``virtualenv``. |
|
|
98 |
Une documentation d'utilisation se trouve à l'adresse suivante : http://www.virtualenv.org/en/latest/ . |
|
|
99 |
Il faut en particulier noter la procédure d'activation de l'environement virtuel. Dans la suite, les commandes d'administration django devront être lancées après cette activation. |
|
|
100 |
|
|
|
101 |
Un script permettant la création de l'environement virtuel et de l'installation de toutes les dépendances "python" est fourni dans le répertoire ``virtualenv``. |
|
|
102 |
|
|
|
103 |
.. code-block :: sh |
|
|
104 |
|
|
|
105 |
cd virtualenv/web/ |
|
|
106 |
python create_python_env.py |
|
|
107 |
python project-boot.py <chemin de l'environement virtuel> |
|
|
108 |
|
|
|
109 |
|
|
|
110 |
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'environement virtuel. |
|
|
111 |
Si la version de python est mise à jour, l'environement virtuel devra lui aussi être mis à jour. |
|
|
112 |
|
|
|
113 |
Configuration |
|
|
114 |
------------- |
|
|
115 |
|
|
|
116 |
La configuration du système se fait dans le fichier ``src/config.py``. Ce fichier doit être créé à partir du fichier ``src/config.py.tmpl``. |
|
|
117 |
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/ |
|
|
118 |
|
|
|
119 |
|
|
|
120 |
Création de la base |
|
|
121 |
------------------- |
|
|
122 |
|
|
|
123 |
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. |
|
|
124 |
|
|
|
125 |
.. code-block :: postgresql |
|
|
126 |
|
|
|
127 |
CREATE DATABASE p4l |
|
|
128 |
WITH ENCODING='UTF8' |
|
|
129 |
OWNER=iri |
|
|
130 |
TEMPLATE=template0 |
|
|
131 |
LC_COLLATE='en_US.UTF-8' |
|
|
132 |
LC_CTYPE='en_US.UTF-8' |
|
|
133 |
CONNECTION LIMIT=-1; |
|
|
134 |
|
|
|
135 |
Tout autre méthode est correcte. Attention cependant d'utiliser un encoding "utf-8". |
|
|
136 |
|
|
|
137 |
Le schema de la base est créé avec la commande django suivante (penser à préalablement activer l'environement virtuel):: |
|
|
138 |
|
|
|
139 |
python manage.py syncdb --migrate |
|
|
140 |
|
|
|
141 |
Enfin on crée un "super" utilisateur pouvant accéder à l'admininistration du site.:: |
|
|
142 |
|
|
|
143 |
python manage.py createsuperuser |
|
|
144 |
|
|
|
145 |
|
|
|
146 |
deployement des resources statiques |
|
|
147 |
----------------------------------- |
|
|
148 |
|
|
|
149 |
Le déploiement des resources statiques du site se font à l'aide de la commande suivante: |
|
|
150 |
:: |
|
|
151 |
|
|
|
152 |
python manage.py collecststatic |
|
|
153 |
|
|
|
154 |
|
|
|
155 |
configuration web |
|
|
156 |
----------------- |
|
|
157 |
|
|
|
158 |
La configuration web (apache) est documentée à l'adresse suivante : https://docs.djangoproject.com/en/1.5/howto/deployment/wsgi/modwsgi/ . |
|
|
159 |
Comme cette configuration dépend de l'environement propre au serveur, nous n'en détaillerons pas les étapes. |
|
|
160 |
|
|
|
161 |
Cependant, voici une liste des points notables: |
|
|
162 |
|
|
|
163 |
- Bien faire la séparation entre la partie dynamique servie par modwsgi, et la partie statique servie par apache. |
|
|
164 |
- le système utilise un environement virtuel. Pensez bien à renseigner le chemin du répertoire ``site-packages`` dans la directive ``WSGIPythonPath`` |
|
|
165 |
- L'utilisation de ``mod_wsgi`` en mode démon (``daemon mode``) est fortement recommandée. |
|
|
166 |
|