# Katao Plateforme du réseau de distribution porté par la Coop du Tilleul ## Sommaire * [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) * [Accès bash aux containers](#accès-bash-aux-containers) * [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) ## Rapporter un bug https://agora.tera.coop/gogs/tera.coop/katao-coop-tilleul/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` ### Accès bash aux containers Pour diverses raisons, on peut avoir besoin d'avoir un accès bash sur nos containers (lancer des commandes symfony ou explorer la bdd). ```bash $ docker exec -it $(docker ps -f name=apache-php -q) bash ``` ou pour la bdd : ```bash $ docker exec -it $(docker ps -f name=db_1 -q) bash ``` ### 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)