README.markdown
changeset 11 1f90796f6106
child 12 142528c37705
equal deleted inserted replaced
9:d6befe351997 11:1f90796f6106
       
     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`.