diff -r d6befe351997 -r 1f90796f6106 README.markdown --- /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 + source /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: + +3- Synchronisation des fichiers statiques et dynamiques sur le serveur distant + cd sbin/sync + fab sync_web: + +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 `/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=/bin/uwsgi --yaml /etc/uwsgi/theend.yml + directory= + 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: + processes: 5 + logto: /var/log/uwsgi/theend.log + chdir: /theend + module: django_wsgi + pythonpath: + +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:, +où package est l'un des intitulé de package contenu dans le fichier `virtualenv/web/res/res_create_env.py`.