Merge branch 'reorganize_files' of git.ndn.cx:cavote
[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 Installation (production)
38 -------------------------
39
40 Les étapes pour l'installation en mode production sont les
41 mêmes qu'en mode développement, jusqu'à l'étape de lancement
42 du serveur.
43
44 NDN a choisi d'utiliser gunicorn pour mettre en production
45 son instance de cavote.
46
47 Pour celà, installez gunicorn (dépendant de votre distribution).
48
49 Dans le répertoire de cavote, tappez :
50 `gunicorn -w 4 -b 192.168.122.104:8000 main:app -D`
51
52 - -w 4 signifie que gunicorn lancera 4 "workers", ce qui devrait amplement suffir
53 - remplacez l'adresse IP et le port par votre configuration. L'adresse IP doit
54 correspondre à qu'appellera votre serveur web en frontend (nous utiliserons nginx dans l'exemple).
55 Si ce frontend est situé sur la même machine que cavote, l'adresse IP sera 127.0.0.1.
56 - De même, changez de port si vous souhaitez en utiliser un autre
57 - -D signifie que gunicorn sera lancé en daemon.
58 - Enlever vous permettrait de tester et pouvoir fermer le serveur en tappant Ctrl+C
59 - En mode daemon, un `pkill gunicorn` killera vos workers gunicorn
60
61
62 Configurez nginx (`/etc/nginx/sites-enabled` ou `/etc/nginx/nginx.conf` ou
63 autre selon votre système)
64
65 server {
66 listen <votre-ip>:80;
67 server_name <votre-url-cavote>;
68 rewrite ^(.*) https://<votre-url-cavote>$1 permanent;
69 }
70
71 #
72 # FIXME: specify correct value(s) for `server_name` directive and
73 # `ssl_certificate` + `ssl_certificate_key` directives below
74 #
75 server {
76 listen <votre-ip>:443;
77 server_name <votre-url-cavote>;
78 ## make sure you change location if you did clone into /usr/local/app
79
80 ssl on;
81 ssl_certificate /path/to/<votre_certificat_ssl>.crt;
82 ssl_certificate_key /path/to/<votre_certificat_ssl>.key;
83 # enable better ssl security if you like to mitigate BEAST and other exploits
84 #ssl_session_cache shared:SSL:10m;
85 #ssl_session_timeout 5m;
86 ssl_protocols SSLv3 TLSv1;
87 ssl_ciphers ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM;
88 ssl_prefer_server_ciphers on;
89 #add_header Strict-Transport-Security max-age=500;
90 #ssl_ecdh_curve secp521r1;
91
92
93 #
94 # FIXME: modify the `rewrite` directive below to point to proper S3 bucket
95 # and path or comment out if you will store images on local file system
96 #
97 location / {
98 proxy_pass http://192.168.122.104:8000;
99 proxy_set_header X-Real-IP $remote_addr;
100 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
101 proxy_set_header Host $http_host;
102 proxy_set_header X-Forwarded-Proto https;
103 proxy_redirect off;
104 client_max_body_size 4M;
105 client_body_buffer_size 128K;
106 }
107
108 error_page 500 502 503 504 /50x.html;
109 location = /50x.html {
110 root html;
111 }
112 }
113
114
115 Modifiez les valeurs correspondant a la configuration de votre installation.
116 Dans l'exemple ci dessus, cavote sera disponible automatiquement et uniquement
117 en HTTPS.
118
119 Licence
120 -------
121
122 La licence appliquée est la GNU/AGPLv3
123
124 Contributeurs
125 -------------
126
127 - Julien Rabier
128 - Guillaume Subiron
129 - Arnaud Delcasse
130 - Pierre 'Rogdham' Pavlidès
131