fix after pybabel compile
[cavote.git] / README.md
1 Système de vote pour associations
2 =================================
3
4 Développé pour et par des membres de la Fédération FDN (http://ffdn.org)
5
6 Installation (développement)
7 ----------------------------
8
9 Dépendances :
10
11 - python (testé avec python 2.7
12 - python-openid
13 - sqlite3
14 - Flask
15 - Flask-OpenID
16
17 Récupérer la dernière version de développement :
18 `$ git clone git@git.ndn.cx:cavote.git`
19
20 Installation de la base de données :
21 `$ sqlite3 /path/to/cavote.db
22 > .read schema.sql`
23
24 Modifiez les paramètres de settings.py pour qu'ils correspondent à votre installation
25
26 Lancez le serveur en mode développement :
27 `$ python main.py`
28
29 Dans un navigateur, vous pourrez à cavote à l'adresse
30 <http://localhost:5000/>.
31
32 L'utilisateur par défaut peut être activé à l'adresse
33 <http://localhost:5000/login/1/victory>. Modifiez en les
34 identifiants de connection lors du premier accès.
35
36
37 Traduction
38 ----------
39
40 Génération du template de chaînes à traduire :
41
42 pybabel extract -F babel.cfg -o messages.pot .
43
44 Génération du catalogue d'une langue en particulier :
45
46 pybabel init -i messages.pot -d translations -l fr
47
48 Une fois la traduction effectuée :
49
50 pybabel compile -d translations
51
52 Si les chaînes changent :
53
54 pybabel extract -F babel.cfg -o messages.pot .
55 pybabel update -i messages.pot -d translations
56
57
58 Installation (production)
59 -------------------------
60
61 Les étapes pour l'installation en mode production sont les
62 mêmes qu'en mode développement, jusqu'à l'étape de lancement
63 du serveur.
64
65 NDN a choisi d'utiliser gunicorn pour mettre en production
66 son instance de cavote.
67
68 Pour celà, installez gunicorn (dépendant de votre distribution).
69
70 Dans le répertoire de cavote, tappez :
71 `gunicorn -w 4 -b 192.168.122.104:8000 main:app -D`
72
73 - -w 4 signifie que gunicorn lancera 4 "workers", ce qui devrait amplement suffir
74 - remplacez l'adresse IP et le port par votre configuration. L'adresse IP doit
75 correspondre à qu'appellera votre serveur web en frontend (nous utiliserons nginx dans l'exemple).
76 Si ce frontend est situé sur la même machine que cavote, l'adresse IP sera 127.0.0.1.
77 - De même, changez de port si vous souhaitez en utiliser un autre
78 - -D signifie que gunicorn sera lancé en daemon.
79 - Enlever vous permettrait de tester et pouvoir fermer le serveur en tappant Ctrl+C
80 - En mode daemon, un `pkill gunicorn` killera vos workers gunicorn
81
82 Pour activer les notifications par mail, mettez en place une tache cron appelant le script `reminder.py`.
83
84 Configurez nginx (`/etc/nginx/sites-enabled` ou `/etc/nginx/nginx.conf` ou
85 autre selon votre système)
86
87 server {
88 listen <votre-ip>:80;
89 server_name <votre-url-cavote>;
90 rewrite ^(.*) https://<votre-url-cavote>$1 permanent;
91 }
92
93 #
94 # FIXME: specify correct value(s) for `server_name` directive and
95 # `ssl_certificate` + `ssl_certificate_key` directives below
96 #
97 server {
98 listen <votre-ip>:443;
99 server_name <votre-url-cavote>;
100 ## make sure you change location if you did clone into /usr/local/app
101
102 ssl on;
103 ssl_certificate /path/to/<votre_certificat_ssl>.crt;
104 ssl_certificate_key /path/to/<votre_certificat_ssl>.key;
105 # enable better ssl security if you like to mitigate BEAST and other exploits
106 #ssl_session_cache shared:SSL:10m;
107 #ssl_session_timeout 5m;
108 ssl_protocols SSLv3 TLSv1;
109 ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM;
110 ssl_prefer_server_ciphers on;
111 #add_header Strict-Transport-Security max-age=500;
112 #ssl_ecdh_curve secp521r1;
113
114
115 #
116 # FIXME: modify the `rewrite` directive below to point to proper S3 bucket
117 # and path or comment out if you will store images on local file system
118 #
119 location / {
120 proxy_pass http://192.168.122.104:8000;
121 proxy_set_header X-Real-IP $remote_addr;
122 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
123 proxy_set_header Host $http_host;
124 proxy_set_header X-Forwarded-Proto https;
125 proxy_redirect off;
126 client_max_body_size 4M;
127 client_body_buffer_size 128K;
128 }
129
130 error_page 500 502 503 504 /50x.html;
131 location = /50x.html {
132 root html;
133 }
134 }
135
136
137 Modifiez les valeurs correspondant a la configuration de votre installation.
138 Dans l'exemple ci dessus, cavote sera disponible automatiquement et uniquement
139 en HTTPS.
140
141 Licence
142 -------
143
144 La licence appliquée est la GNU/AGPLv3
145
146 Contributeurs
147 -------------
148
149 - Julien Rabier
150 - Guillaume Subiron
151 - Arnaud Delcasse
152 - Pierre 'Rogdham' Pavlidès
153