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

3
### Prérequis
Nicolas Joyard's avatar
Nicolas Joyard committed
4

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

10
### Nouvelle Installation
Nicolas Joyard's avatar
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's avatar
Nicolas Joyard committed
20
$ irfm db upgrade
Nicolas Joyard's avatar
Nicolas Joyard committed
21
$ irfm import_nd
22
$ irfm import_adresses
Nicolas Joyard's avatar
Nicolas Joyard committed
23 24
```

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

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

Nicolas Joyard's avatar
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).

Nicolas Joyard's avatar
Nicolas Joyard committed
42 43
#### Configuration

Nicolas Joyard's avatar
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.

Nicolas Joyard's avatar
Nicolas Joyard committed
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's avatar
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's avatar
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>
```