3 ## contenu du projet |
3 ## contenu du projet |
4 |
4 |
5 ### virtualenv |
5 ### virtualenv |
6 |
6 |
7 Ce répertoire contient toutes les ressources python utilisées pour construire les environements virtuels ([virtualenv](http://www.virtualenv.org)). |
7 Ce répertoire contient toutes les ressources python utilisées pour construire les environements virtuels ([virtualenv](http://www.virtualenv.org)). |
8 Il y a à la fois les distributions des librairies utilisées, ainsi que des script de création des environerments virtuels. |
8 Il y à la fois les distributions des librairies utilisées, ainsi que des scripts de création des environements virtuels. |
9 |
9 |
10 ### sbin |
10 ### sbin |
11 |
11 |
12 Contient les script de synchronisation et de publication. Ces script sont des script [Fabric](http://fabfile.org) |
12 Contient les scripts de synchronisation et de publication. Ces script sont des script [Fabric](http://fabfile.org). |
13 |
13 |
14 ### web |
14 ### web |
15 |
15 |
16 Contient le contenu effectif à publier sur le serveur web. |
16 Contient le contenu effectif à publier sur le serveur web. |
17 Il est divisé en 2 partie: |
17 Il est divisé en 2 partie: |
18 - un répertoire "static", contenant les fichiers statiques du site. |
18 - un répertoire "static", contenant les fichiers statiques du site. |
19 - un répertoire "theend" contenant la partie dynamique du site. |
19 - un répertoire "theend" contenant la partie dynamique du site. |
20 |
20 |
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. |
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. |
22 |
22 |
23 Nous recommandont l'utilisation de serveur applicatif supprtant WSGI, comme [uWSGI](http://projects.unbit.it/uwsgi/). |
23 Nous recommandont l'utilisation de serveur applicatif supportant WSGI, comme [uWSGI](http://projects.unbit.it/uwsgi/). |
24 |
24 |
25 |
25 |
26 ## Procédure de déploiement: |
26 ## Procédure de déploiement: |
27 |
27 |
28 Le processus de déploiement se base sur la notion de version/tag. |
28 Le processus de déploiement se base sur la notion de version/tag. |
43 |
43 |
44 3- Synchronisation des fichiers statiques et dynamiques sur le serveur distant |
44 3- Synchronisation des fichiers statiques et dynamiques sur le serveur distant |
45 cd sbin/sync |
45 cd sbin/sync |
46 fab sync_web:<Version> |
46 fab sync_web:<Version> |
47 |
47 |
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. |
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. |
49 |
49 |
50 4- Sur le serveur distant, édition du fichier de configuration `<remote_web_path>/theend/config.py`. |
50 4- Sur le serveur distant: |
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. |
51 * édition du fichier de configuration `<remote_web_path>/theend/config.py`. |
52 Voici un exemple de fichier de configuration: |
52 * configuration du serveur web |
|
53 * du process uwsgi et de leur communication. |
|
54 |
|
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. |
|
56 Voici un exemple de fichier de configuration `supervisor`: |
53 |
57 |
54 [program:theend] |
58 [program:theend] |
55 command=<path to virtualenv>/bin/uwsgi --yaml /etc/uwsgi/theend.yml |
59 command=<path to virtualenv>/bin/uwsgi --yaml /etc/uwsgi/theend.yml |
56 directory=<path to web folder> |
60 directory=<path to web folder> |
57 user=www-data |
61 user=www-data |
77 |
81 |
78 ## Procédure de mise à jour |
82 ## Procédure de mise à jour |
79 |
83 |
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. |
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. |
81 |
85 |
82 À noter que le commande `update_lib` permet de mettre à jour les packages python individuellement: |
86 À noter que la commande `update_lib` permet de mettre à jour les packages python individuellement: |
|
87 |
83 fab update_lib:<version>,<package> |
88 fab update_lib:<version>,<package> |
84 où package est l'un des intitulé de package contenu dans le fichier `virtualenv/web/res/res_create_env.py`. |
89 où package est l'un des intitulés de package contenus dans le fichier `virtualenv/web/res/res_create_env.py`. |