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