|
1 # Repo pour le projet nouvelles ecritures The END |
|
2 |
|
3 ## contenu du projet |
|
4 |
|
5 ### virtualenv |
|
6 |
|
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. |
|
9 |
|
10 ### sbin |
|
11 |
|
12 Contient les script de synchronisation et de publication. Ces script sont des script [Fabric](http://fabfile.org) |
|
13 |
|
14 ### web |
|
15 |
|
16 Contient le contenu effectif à publier sur le serveur web. |
|
17 Il est divisé en 2 partie: |
|
18 - un répertoire "static", contenant les fichiers statiques du site. |
|
19 - un répertoire "theend" contenant la partie dynamique du site. |
|
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. |
|
22 |
|
23 Nous recommandont l'utilisation de serveur applicatif supprtant WSGI, comme [uWSGI](http://projects.unbit.it/uwsgi/). |
|
24 |
|
25 |
|
26 ## Procédure de déploiement: |
|
27 |
|
28 Le processus de déploiement se base sur la notion de version/tag. |
|
29 |
|
30 1- creation et activation du virtualenv ce synchronisation |
|
31 |
|
32 cd virtualenv/sync |
|
33 python create_python_env.py |
|
34 python project-boot.py <path to venv> |
|
35 source <path to venv>/bin/activate |
|
36 |
|
37 2- Creation de l'environement virtuel sur le serveur distant |
|
38 |
|
39 cd sbin/sync |
|
40 cp config.py.tmpl config.py |
|
41 vi config.py |
|
42 fab create_virtualenv:<Version> |
|
43 |
|
44 3- Synchronisation des fichiers statiques et dynamiques sur le serveur distant |
|
45 cd sbin/sync |
|
46 fab sync_web:<Version> |
|
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. |
|
49 |
|
50 4- Sur le serveur distant, édition du fichier de configuration `<remote_web_path>/theend/config.py`. |
|
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. |
|
52 Voici un exemple de fichier de configuration: |
|
53 |
|
54 [program:theend] |
|
55 command=<path to virtualenv>/bin/uwsgi --yaml /etc/uwsgi/theend.yml |
|
56 directory=<path to web folder> |
|
57 user=www-data |
|
58 autostart=true |
|
59 autorestart=true |
|
60 redirect_stderr=true |
|
61 stopsignal=QUIT |
|
62 |
|
63 |
|
64 et voici le fichier de configuration uwsgi: |
|
65 |
|
66 uwsgi: |
|
67 master: 1 |
|
68 socket: /var/run/uwsgi/theend.sock |
|
69 virtualenv: <path to virtualenv> |
|
70 processes: 5 |
|
71 logto: /var/log/uwsgi/theend.log |
|
72 chdir: <path to web folder>/theend |
|
73 module: django_wsgi |
|
74 pythonpath: <path to web folder> |
|
75 |
|
76 On peut remarquer ici qu'on utilise les socket unix pour faire communiquer le serveur web et le serveur uwsgi. |
|
77 |
|
78 ## Procédure de mise à jour |
|
79 |
|
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. |
|
81 |
|
82 À noter que le commande `update_lib` permet de mettre à jour les packages python individuellement: |
|
83 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`. |