update fichier readme.
authorymh <ymh.work@gmail.com>
Thu, 30 Aug 2012 18:33:50 +0200
changeset 11 1f90796f6106
parent 9 d6befe351997
child 12 142528c37705
update fichier readme.
.hgignore
README.markdown
--- a/.hgignore	Thu Aug 30 14:58:26 2012 +0200
+++ b/.hgignore	Thu Aug 30 18:33:50 2012 +0200
@@ -20,4 +20,6 @@
 syntax: regexp
 ^sbin/sync/config\.py$
 syntax: regexp
-^virtualenv/sync/project-boot\.py$
\ No newline at end of file
+^virtualenv/sync/project-boot\.py$
+syntax: regexp
+^\.gitignore$
\ No newline at end of file
--- /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`.