README.md 3.35 KB
Newer Older
1
## Installation
Nicolas Joyard committed
2

3
### Prérequis
Nicolas Joyard committed
4

5
* Python 3 + headers (ie. python3-dev)
Nicolas Joyard committed
6
* virtualenvwrapper
7 8
* PostgreSQL (postgresql-server-dev-all) avec l'extension unaccent
* pdftotext
Nicolas Joyard committed
9

10
### Nouvelle Installation
Nicolas Joyard committed
11 12 13 14 15 16

```sh
$ git clone https://git.regardscitoyens.org/regardscitoyens/irfm.git
$ cd irfm
$ mkvirtualenv --python=$(which python3) irfm
$ pip install -e .
17 18
$ sudo -u postgres psql -c "create user irfm with password 'irfm';"
$ sudo -u postgres psql -c "create database irfm with owner irfm;"
19
$ sudo -u postgres psql irfm -c "create extension unaccent;"
Nicolas Joyard committed
20
$ irfm db upgrade
21
$ irfm import_nd
22
$ irfm import_adresses
23 24
```

25
### Mise à jour
Nicolas Joyard committed
26 27 28 29 30

```sh
$ cd /path/to/irfm
$ workon irfm
$ git pull
31
$ pip install -e .
Nicolas Joyard committed
32
$ irfm db upgrade
33 34
$ irfm import_nd
$ irfm import_adresses
35
$ irfm clear_cache
Nicolas Joyard committed
36 37
```

Nicolas Joyard committed
38 39 40 41
### Déploiement

`irfm.irfm:app` est une application WSGI qui peut être servie avec n'importe quel serveur compatible (comme gunicorn).

42 43
#### Configuration

Nicolas Joyard committed
44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
L'application peut être configurée avec des variables d'environnement:

* `IRFM_CONFIG`: `irfm.config.EnvironmentConfig` (sauf si vous voulez utiliser votre propre module de configuration)
* `IRFM_DB_URL`: URL de connexion base de données, par défaut `postgresql://irfm:irfm@localhost:5432/irfm`
* `IRFM_DATA_DIR`: chemin vers un dossier où l'utilisateur exécutant l'application a les droits de lecture/écriture. Les uploads, fichiers générés et la clé secrète de l'application y seront stockés. **Ne pas laisser ce répertoire accessible au public.**
* `IRFM_PIWIK_HOST` et `IRFM_PIWIK_ID`: si définies, le code de tracking Piwik correspondant sera ajouté aux pages.
* `IRFM_ADMIN_EMAIL`: adresse e-mail d'expéditeur pour les mails envoyés
* `IRFM_ADMIN_PASSWORD`: mot de passe administrateur (nick `!rc`), voir ci-dessous pour le générer.
* Configuration mail:
    * `IRFM_MAIL_SERVER`, `IRFM_MAIL_PORT`: serveur SMTP, localhost:25 par défaut
    * `IRFM_MAIL_USERNAME`, `IRFM_MAIL_PASSWORD`, identifiants pour le serveur SMTP
    * `IRFM_MAIL_USE_TLS`, `IRFM_MAIL_USE_SSL`: options de sécurité, `False` par défaut
    * `IRFM_MAIL_SUPPRESS_SEND`: permet de désactivé totalement l'envoi de mails si positionné à `True`

Pour générer le mot de passe administrateur, exécuter `irfm password` dans le virtualenv de l'application puis saisir le mot de passe souhaité.  Attention, `IRFM_DATA_DIR` doit avoir la même valeur que lors de l'exécution de l'application WSGI, car la clé secrète qui y est stockée est utilisée pour hasher le mot de passe.

60 61 62 63 64 65 66 67 68 69
#### Fichiers statiques

Les répertoires suivants peuvent être servis directement par le serveur web frontal le cas échéant:

* `irfm/static` (depuis la racine du dépôt) sur `/static`
* `$IRFM_DATA_DIR/files` sur `/files`
* `$IRFM_DATA_DIR/uploads` sur `/uploads`

**ATTENTION:** ne pas servir directement le répertoire `$IRFM_DATA_DIR`. Il contient la clé secrète permettant de chiffrer les cookies.

Nicolas Joyard committed
70 71
## Développement

72 73 74 75 76 77 78 79 80 81 82 83
### Exécution locale

```bash
$ cd /path/to/irfm
$ workon irfm
$ export IRFM_CONFIG=irfm.config.EnvironmentConfig
$ export IRFM_DEBUG=True
$ export IRFM_DEBUG_SQL=True
$ export IRFM_DB_URL=postgresql://irfm:irfm@localhost:5432/irfm
$ irfm runserver
```

Nicolas Joyard committed
84 85 86 87 88 89 90 91 92 93 94 95 96 97
### Génération de migrations

Après avoir modifié les modèles Python :

```bash
$ irfm db migrate -m <description>
$ irfm db upgrade
```

### Création de migration vierge

```bash
$ irfm db revision -m <description>
```