README.md 4.65 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
Système de vote pour associations
=================================

Développé pour et par des membres de la Fédération FDN (http://ffdn.org)

Installation (développement)
----------------------------

Dépendances :

 - python (testé avec python 2.7
 - python-openid
 - sqlite3
 - Flask
 - Flask-OpenID

loconox's avatar
loconox committed
17 18 19 20
Installation des dépendances :

    $ pip install -r requirements.txt

21
Installation de la base de données :
loconox's avatar
loconox committed
22 23 24 25 26
    
    $ sqlite3 cavote.db
    > .read schema.sql
    > .read schema_0.1.X_to_0.2.X.sql
    > .read schema_0.2.X_to_0.3.X.sql
27
 
Julien Rabier's avatar
Julien Rabier committed
28
Modifiez les paramètres de settings.py pour qu'ils correspondent à votre installation.
29

loconox's avatar
loconox committed
30 31 32
    $ cp settings.py.example settings.py
    $ vim settings.py

33
Lancez le serveur en mode développement :
loconox's avatar
loconox committed
34 35
    
    $ python main.py
36 37 38 39 40 41 42 43 44

Dans un navigateur, vous pourrez à cavote à l'adresse
<http://localhost:5000/>.

L'utilisateur par défaut peut être activé à l'adresse
<http://localhost:5000/login/1/victory>. Modifiez en les
identifiants de connection lors du premier accès.


45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
Traduction
----------

Génération du template de chaînes à traduire :
    
    pybabel extract -F babel.cfg -o messages.pot .

Génération du catalogue d'une langue en particulier :

    pybabel init -i messages.pot -d translations -l fr

Une fois la traduction effectuée :
    
    pybabel compile -d translations

Si les chaînes changent :

    pybabel extract -F babel.cfg -o messages.pot .
    pybabel update -i messages.pot -d translations


66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88
Installation (production)
-------------------------

Les étapes pour l'installation en mode production sont les
mêmes qu'en mode développement, jusqu'à l'étape de lancement
du serveur.

NDN a choisi d'utiliser gunicorn pour mettre en production
son instance de cavote.

Pour celà, installez gunicorn (dépendant de votre distribution).

Dans le répertoire de cavote, tappez :
`gunicorn -w 4 -b 192.168.122.104:8000 main:app -D`

 - -w 4 signifie que gunicorn lancera 4 "workers", ce qui devrait amplement suffir
 - remplacez l'adresse IP et le port par votre configuration. L'adresse IP doit
 correspondre à qu'appellera votre serveur web en frontend (nous utiliserons nginx dans l'exemple).
 Si ce frontend est situé sur la même machine que cavote, l'adresse IP sera 127.0.0.1.
 - De même, changez de port si vous souhaitez en utiliser un autre
 - -D signifie que gunicorn sera lancé en daemon. 
   - Enlever vous permettrait de tester et pouvoir fermer le serveur en tappant Ctrl+C 
   - En mode daemon, un `pkill gunicorn` killera vos workers gunicorn
89 90

Pour activer les notifications par mail, mettez en place une tache cron appelant le script `reminder.py`.
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161

Configurez nginx (`/etc/nginx/sites-enabled` ou `/etc/nginx/nginx.conf` ou
autre selon votre système)

		server {
		  listen       <votre-ip>:80;
		  server_name  <votre-url-cavote>;
		  rewrite      ^(.*) https://<votre-url-cavote>$1 permanent;
		}
		
		#
		# FIXME: specify correct value(s) for `server_name` directive and
		#        `ssl_certificate` + `ssl_certificate_key` directives below
		#
		server {
		  listen       <votre-ip>:443;
		  server_name  <votre-url-cavote>;
		  ## make sure you change location if you did clone into /usr/local/app
		
		  ssl on;
		  ssl_certificate      /path/to/<votre_certificat_ssl>.crt;
		  ssl_certificate_key  /path/to/<votre_certificat_ssl>.key;
		  # enable better ssl security if you like to mitigate BEAST and other exploits
		  #ssl_session_cache       shared:SSL:10m;
		  #ssl_session_timeout     5m;
		  ssl_protocols           SSLv3 TLSv1;
		  ssl_ciphers             ECDHE-RSA-AES256-SHA384:AES256-SHA256:RC4:HIGH:!MD5:!aNULL:!EDH:!AESGCM;
		  ssl_prefer_server_ciphers on;
		  #add_header              Strict-Transport-Security max-age=500;
		  #ssl_ecdh_curve          secp521r1;
		
		
		#
		# FIXME: modify the `rewrite` directive below to point to proper S3 bucket
		#        and path or comment out if you will store images on local file system
		#
		location / {
		  proxy_pass        http://192.168.122.104:8000;
		  proxy_set_header  X-Real-IP  $remote_addr;
		  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
		  proxy_set_header Host $http_host;
		  proxy_set_header X-Forwarded-Proto https;
		  proxy_redirect off;
		  client_max_body_size 4M;
		  client_body_buffer_size 128K;
		}
		
		  error_page 500 502 503 504 /50x.html;
		  location = /50x.html {
		  root html;
		  }
		}


Modifiez les valeurs correspondant a la configuration de votre installation.
Dans l'exemple ci dessus, cavote sera disponible automatiquement et uniquement
en HTTPS.

Licence
-------

La licence appliquée est la GNU/AGPLv3

Contributeurs
-------------

 - Julien Rabier
 - Guillaume Subiron
 - Arnaud Delcasse
 - Pierre 'Rogdham' Pavlidès