# Katao

Plateforme du réseau de distribution porté par la Coop du Tilleul

## Sommaire

<!-- vim-markdown-toc GFM -->

* [Rapporter un bug](#rapporter-un-bug)
* [Informations préalables](#informations-préalables)
* [Installation (avec Docker)](#installation-avec-docker)
    * [Récupération des sources et build](#récupération-des-sources-et-build)
    * [Gestion des droits d'accès](#gestion-des-droits-daccès)
    * [Déclaration de notre domaine local](#déclaration-de-notre-domaine-local)
    * [Import d'un dump de la base de données](#import-dun-dump-de-la-base-de-données)
    * [Accéder au site](#accéder-au-site)
    * [Consulter les logs](#consulter-les-logs)
    * [Quelques explications](#quelques-explications)
* [Tests](#tests)
* [Mise en production](#mise-en-production)
    * [Base de données](#base-de-données)
    * [Configuration prod](#configuration-prod)
    * [Nom de domaine](#nom-de-domaine)

<!-- vim-markdown-toc -->


## Rapporter un bug

https://taiga.tera.coop/project/katao/issues

## Informations préalables
Cette application utilise **Symfony 1.1.9** !
Il faut donc un environnement avec php5.


## Installation (avec Docker)

### Récupération des sources et build
Tout d'abord, clôner ce dépôt :
```bash
$ git clone https://agora.tera.coop/gogs/tera.coop/katao-coop-tilleul.git
```
```bash
$ cd katao-coop-tilleul 
```
On construit les différentes images pour Docker : 
```bash
$ docker-compose build
```
Puis on lance le bouzin : 
```bash
$ docker-compose up
```
On peut vérifier que tout tourne correctement (tout doit être à "up") :
```bash
$ docker-compose ps
```

### Gestion des droits d'accès
La gestions des droits d'accès avec Docker et les volumes n'est pas simple, voici une solution :
1. Créer les répertoires cache et uploads :

```bash
$ mkdir cache web/uploads
```
2. On donne tous les droits sur les répertoires dans lesquels l'appli peut écrire :

```bash
$ sudo chmod -R 777 cache log logs web/uploads
```

### Déclaration de notre domaine local
On modifie le fichier `/etc/hosts` pour faire pointer `katao.local` et `admin.katao.local` sur notre container nouvellement créé :
```bash
$ echo "$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -f name=apache-php -q)) katao.local" | sudo tee --append /etc/hosts
$ echo "$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' $(docker ps -f name=apache-php -q)) admin.katao.local" | sudo tee --append /etc/hosts
```

### Import d'un dump de la base de données
Remplacer `[DUMP]` par le nom de votre dump :
```bash
$ docker exec -i $(docker ps -f name=db_1 -q) mysql -ukatao -pkatao katao < [DUMP].sql
```
### Accéder au site
Normalement, vous devriez avoir un site fonctionnel en tapant `katao.local` dans votre navigateur web.

### Consulter les logs
Vous pouvez accéder aux logs symfony et nginx via les fichiers suivants :
* `logs/nginx`
* `logs/symfony`

### Quelques explications
Nous créeons 2 containers (voir le fichier `docker-compose.yml`)
* `db` : C'est le container Mysql
* `apache-php` : C'est le container qui contient lees sources de l'application (via un volume qui est monté à l'intérieur)

Le container `apache-php` est spécifique (contrairement à `db` qui utilise directement l'image `mariadb`), et est défini dans le fichier `docker/apache-php/Dockerfile`. 

Pour éviter des problèmes lors du lancement d'apache, on passe par l'exécution d'un script `start-apache.sh`.

## Tests

Pour lancer les tests, taper :
```bash
$ php symfony test:all
```

## Mise en production

### Base de données
* Créer un utilisateur `katao` pour la base de données 
* Modifier la section `prod` du fichier suivant pour mettre à jour les informations de connexion à la BDD :
  * `config/databases.yml`

### Configuration prod
Changer la configuration de `dev` en `prod` dans les fichiers suivants :
* `web/admin.php`
* `web/api.php`
* `web/index.php`

### Nom de domaine
Modifier la section `prod` du fichier `config/app.yml` (attention à http / https)
