--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/README.markdown Thu Aug 30 18:33:50 2012 +0200
@@ -0,0 +1,84 @@
+# Repo pour le projet nouvelles ecritures The END
+
+## contenu du projet
+
+### virtualenv
+
+Ce répertoire contient toutes les ressources python utilisées pour construire les environements virtuels ([virtualenv](http://www.virtualenv.org)).
+Il y a à la fois les distributions des librairies utilisées, ainsi que des script de création des environerments virtuels.
+
+### sbin
+
+Contient les script de synchronisation et de publication. Ces script sont des script [Fabric](http://fabfile.org)
+
+### web
+
+Contient le contenu effectif à publier sur le serveur web.
+Il est divisé en 2 partie:
+ - un répertoire "static", contenant les fichiers statiques du site.
+ - un répertoire "theend" contenant la partie dynamique du site.
+
+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.
+
+Nous recommandont l'utilisation de serveur applicatif supprtant WSGI, comme [uWSGI](http://projects.unbit.it/uwsgi/).
+
+
+## Procédure de déploiement:
+
+Le processus de déploiement se base sur la notion de version/tag.
+
+1- creation et activation du virtualenv ce synchronisation
+
+ cd virtualenv/sync
+ python create_python_env.py
+ python project-boot.py <path to venv>
+ source <path to venv>/bin/activate
+
+2- Creation de l'environement virtuel sur le serveur distant
+
+ cd sbin/sync
+ cp config.py.tmpl config.py
+ vi config.py
+ fab create_virtualenv:<Version>
+
+3- Synchronisation des fichiers statiques et dynamiques sur le serveur distant
+ cd sbin/sync
+ fab sync_web:<Version>
+
+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.
+
+4- Sur le serveur distant, édition du fichier de configuration `<remote_web_path>/theend/config.py`.
+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.
+Voici un exemple de fichier de configuration:
+
+ [program:theend]
+ command=<path to virtualenv>/bin/uwsgi --yaml /etc/uwsgi/theend.yml
+ directory=<path to web folder>
+ user=www-data
+ autostart=true
+ autorestart=true
+ redirect_stderr=true
+ stopsignal=QUIT
+
+
+et voici le fichier de configuration uwsgi:
+
+ uwsgi:
+ master: 1
+ socket: /var/run/uwsgi/theend.sock
+ virtualenv: <path to virtualenv>
+ processes: 5
+ logto: /var/log/uwsgi/theend.log
+ chdir: <path to web folder>/theend
+ module: django_wsgi
+ pythonpath: <path to web folder>
+
+On peut remarquer ici qu'on utilise les socket unix pour faire communiquer le serveur web et le serveur uwsgi.
+
+## Procédure de mise à jour
+
+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.
+
+À noter que le commande `update_lib` permet de mettre à jour les packages python individuellement:
+ fab update_lib:<version>,<package>
+où package est l'un des intitulé de package contenu dans le fichier `virtualenv/web/res/res_create_env.py`.