README.markdown
author ymh <ymh.work@gmail.com>
Thu, 30 Aug 2012 18:33:50 +0200
changeset 11 1f90796f6106
child 12 142528c37705
permissions -rw-r--r--
update fichier readme.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
11
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
     1
# Repo pour le projet nouvelles ecritures The END
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
     2
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)).
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
     8
Il y a à la fois les distributions des librairies utilisées, ainsi que des script de création des environerments virtuels.
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
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    12
Contient les script de synchronisation et de publication. Ces script sont des script [Fabric](http://fabfile.org)
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
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    23
Nous recommandont l'utilisation de serveur applicatif supprtant WSGI, comme [uWSGI](http://projects.unbit.it/uwsgi/).
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
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    48
Cette commande va créer une fichier de configuration minimal sur le serveur web à partir des informations renseigné dans le fichier config.py de l'étape précédente.
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    49
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    50
4- Sur le serveur distant, édition du fichier de configuration `<remote_web_path>/theend/config.py`.
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    51
configuration du serveur web, du process uwsgi et de leur communication. Il est recommander d'avoir un outils de monitoring pour surveiller l'instance uwsgi. [supervisor](http://supervisord.org/) est un bon candidat pour ce role.
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    52
Voici un exemple de fichier de configuration:
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    53
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    54
    [program:theend]
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    55
    command=<path to virtualenv>/bin/uwsgi --yaml /etc/uwsgi/theend.yml
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    56
    directory=<path to web folder>
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    57
    user=www-data
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    58
    autostart=true
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    59
    autorestart=true
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    60
    redirect_stderr=true
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    61
    stopsignal=QUIT
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    62
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    63
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    64
et voici le fichier de configuration uwsgi:
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    65
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    66
    uwsgi:
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    67
      master: 1
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    68
      socket: /var/run/uwsgi/theend.sock
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    69
      virtualenv: <path to virtualenv>
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    70
      processes: 5
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    71
      logto: /var/log/uwsgi/theend.log
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    72
      chdir: <path to web folder>/theend
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    73
      module: django_wsgi
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    74
      pythonpath: <path to web folder>
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    75
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    76
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
    77
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    78
## Procédure de mise à jour
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
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
    81
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    82
À noter que le commande `update_lib` permet de mettre à jour les packages python individuellement:
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    83
    fab update_lib:<version>,<package>
1f90796f6106 update fichier readme.
ymh <ymh.work@gmail.com>
parents:
diff changeset
    84
où package est l'un des intitulé de package contenu dans le fichier `virtualenv/web/res/res_create_env.py`.