README.markdown
author ymh <ymh.work@gmail.com>
Mon, 11 Feb 2013 11:42:36 +0100
changeset 131 dc236500a75c
parent 22 9f8db096d8f7
permissions -rw-r--r--
Added tag V01.24 for changeset 1403b7d2f405
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10
c2c1a3b30a17 add git repository
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
# Repo pour le projet nouvelles ecritures The END
c2c1a3b30a17 add git repository
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
11
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
     3
## contenu du projet
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
     4
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
     5
### virtualenv
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
     6
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
     7
Ce répertoire contient toutes les ressources python utilisées pour construire les environements virtuels ([virtualenv](http://www.virtualenv.org)).
13
cd3db02046b1 petite correction orthographique
ymh <ymh.work@gmail.com>
parents: 12
diff changeset
     8
Il y à la fois les distributions des librairies utilisées, ainsi que des scripts de création des environements virtuels.
11
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
     9
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    10
### sbin
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    11
13
cd3db02046b1 petite correction orthographique
ymh <ymh.work@gmail.com>
parents: 12
diff changeset
    12
Contient les scripts de synchronisation et de publication. Ces script sont des script [Fabric](http://fabfile.org).
11
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    13
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    14
### web
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    15
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    16
Contient le contenu effectif à publier sur le serveur web.
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    17
Il est divisé en 2 partie:
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    18
  - un répertoire "static", contenant les fichiers statiques du site.
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    19
  - un répertoire "theend" contenant la partie dynamique du site.
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    20
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    21
Le répertoire statique doit être servi par un serveur web classique (apache, nginx,...). Le répertoire dynamique doit être servi par un serveur applicatif python.
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    22
13
cd3db02046b1 petite correction orthographique
ymh <ymh.work@gmail.com>
parents: 12
diff changeset
    23
Nous recommandont l'utilisation de serveur applicatif supportant WSGI, comme [uWSGI](http://projects.unbit.it/uwsgi/).
11
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    24
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    25
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    26
## Procédure de déploiement:
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    27
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    28
Le processus de déploiement se base sur la notion de version/tag.
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    29
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    30
1- creation et activation du virtualenv ce synchronisation
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    31
    
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    32
    cd virtualenv/sync
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    33
    python create_python_env.py
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    34
    python project-boot.py <path to venv>
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    35
    source <path to venv>/bin/activate
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    36
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    37
2- Creation de l'environement virtuel sur le serveur distant
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    38
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    39
    cd sbin/sync
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    40
    cp config.py.tmpl config.py
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    41
    vi config.py
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    42
    fab create_virtualenv:<Version>
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    43
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    44
3- Synchronisation des fichiers statiques et dynamiques sur le serveur distant
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    45
    cd sbin/sync
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    46
    fab sync_web:<Version>
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    47
13
cd3db02046b1 petite correction orthographique
ymh <ymh.work@gmail.com>
parents: 12
diff changeset
    48
Cette commande va créer un fichier de configuration minimal sur le serveur web à partir des informations renseignées dans le fichier config.py de l'étape précédente.
11
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
13
cd3db02046b1 petite correction orthographique
ymh <ymh.work@gmail.com>
parents: 12
diff changeset
    50
4- Sur le serveur distant:
22
9f8db096d8f7 update config with src file
ymh <ymh.work@gmail.com>
parents: 13
diff changeset
    51
* édition du fichier de configuration `<remote_src_path>/theend/config.py`.
13
cd3db02046b1 petite correction orthographique
ymh <ymh.work@gmail.com>
parents: 12
diff changeset
    52
* configuration du serveur web
cd3db02046b1 petite correction orthographique
ymh <ymh.work@gmail.com>
parents: 12
diff changeset
    53
* du process uwsgi et de leur communication.
cd3db02046b1 petite correction orthographique
ymh <ymh.work@gmail.com>
parents: 12
diff changeset
    54
cd3db02046b1 petite correction orthographique
ymh <ymh.work@gmail.com>
parents: 12
diff changeset
    55
Il est recommandé d'avoir un outil de monitoring pour surveiller l'instance uwsgi. [supervisor](http://supervisord.org/) est un bon candidat pour ce role.
cd3db02046b1 petite correction orthographique
ymh <ymh.work@gmail.com>
parents: 12
diff changeset
    56
Voici un exemple de fichier de configuration `supervisor`:
11
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
    [program:theend]
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
    command=<path to virtualenv>/bin/uwsgi --yaml /etc/uwsgi/theend.yml
22
9f8db096d8f7 update config with src file
ymh <ymh.work@gmail.com>
parents: 13
diff changeset
    60
    directory=<path to src folder>
11
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
    user=www-data
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
    autostart=true
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
    autorestart=true
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
    redirect_stderr=true
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
    stopsignal=QUIT
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
et voici le fichier de configuration uwsgi:
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
    uwsgi:
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
      master: 1
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
      socket: /var/run/uwsgi/theend.sock
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
      virtualenv: <path to virtualenv>
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
      processes: 5
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
      logto: /var/log/uwsgi/theend.log
22
9f8db096d8f7 update config with src file
ymh <ymh.work@gmail.com>
parents: 13
diff changeset
    76
      chdir: <path to src folder>/theend
11
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    77
      module: django_wsgi
22
9f8db096d8f7 update config with src file
ymh <ymh.work@gmail.com>
parents: 13
diff changeset
    78
      pythonpath: <path to src folder>
11
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    79
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    80
On peut remarquer ici qu'on utilise les socket unix pour faire communiquer le serveur web et le serveur uwsgi.
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    81
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
## Procédure de mise à jour
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
La mise à jour du site se fait ensuite par la commande `sync_web` du script de synchronisation pour des changement dans la partie web et `create_virtualenv` pour les changements de resource python.
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    85
13
cd3db02046b1 petite correction orthographique
ymh <ymh.work@gmail.com>
parents: 12
diff changeset
    86
À noter que la commande `update_lib` permet de mettre à jour les packages python individuellement:
cd3db02046b1 petite correction orthographique
ymh <ymh.work@gmail.com>
parents: 12
diff changeset
    87
11
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    88
    fab update_lib:<version>,<package>
13
cd3db02046b1 petite correction orthographique
ymh <ymh.work@gmail.com>
parents: 12
diff changeset
    89
où package est l'un des intitulés de package contenus dans le fichier `virtualenv/web/res/res_create_env.py`.