calmip / gramc3

GNU General Public License v3.0
0 stars 2 forks source link

INSTALLATION sur une Debian ou dérivés

Note - Cette documentation est validée sur Debian 10 Buster et Debian 11 Bullseye

Installations de paquets

Configuration du mail:

Le serveur doit être capable d'envoyer des mails:

Configurer le mail pour une version de développement:

Avec une version de développement vous ne voudrez pas que l'application envoie des notifications à de vrais utilisateurs. C'est surtout vrai si vous avez chargé la version de dev avec une vraie base de données. Pour éviter cela, n'oubliez pas la variable MAILER_RECIPIENT du fichier .env.local (voir ci-dessous)

Installer le code de gramc3:

git clone https://github.com/calmip/gramc3
cd gramc3

Répertoire data:

C'est dans ce répertoire que vont se retrouver:

tar xfz data-dist.tar.gz

Le répertoire data:

Répertoire var

C'est dans ce répertoire que vont se trouver:

  mkdir var
  chown www-data.www-data var

Configuration, personnalisation:

Répertoire altermeso:

Créer un lien symbolique vers calmip ou criann.

ln -s mesocentres/calmip altermeso

Charte graphique:

Vous pouvez modifier les couleurs ainsi que les logos afin de les faire coller à votre charte graphique.

Logos:

Il faut générer trois fichiers png:

Des fichiers .dist sont fournis, ils peuvent servir d'exemple (à ne pas prendre pour une installation qui ne dépendrait pas de calmip).

Couleurs:

Vous devez copier le fichier altermeso/public/css/colors.css.dist sur colors.css et l'éditer afin de faire correspondre les couleurs de l'application à celles de votre charte graphique:

Fichier parameters.yaml:

cd config
cp parameters.yaml.dist parameters.yaml

Editer le fichier et paramétrer l'application:

Fichier index.php:

cd public
cp index.php.dist index.php

Editez ce fichier et éventuellement commentez ou décommentez quelques lignes suivant que vous êtes derrière un reverse proxy ou pas.

Fichier adresses.txt:

Ce fichier est propre à gramc3, il est utilisé uniquement en mode "développement". Il répertorie les adresses IP à partir desquelles il est possible d'utiliser gramc3.

cd config
cp adresses.txt.dist adresses.txt

Editer le fichier et introduire les adresses IP de vos postes de développement

Fichier env.local:

cp .env.local.dist .env.local

Editer le fichier et inscrivez les paramètres demandés (identifiants de connexion à la base de données notamment). N'oubliez pas de remplacer serverVersion=mariadb-10.3.29 par la version correcte qui se trouve sur votre serveur

ATTENTION - tout doit être renseigné dans ce fichier

ATTENTION: Ce fichier contient des informations sensibles, il doit être protégé:

Les deux premières lignes sont importantes:

APP_ENV=dev On a la barre symfony en bas de l'écran, très utile pour développer ou déboguer APP_DEV=prod On n'a plus la basse symfony, utile pour la prod Il est à noter que certaines configurations sont différentes selon qu'on est en dev ou en prod (cf. config/packages), certains objets n'ont pas le même type, etc: il est donc important de tester avec ce paramètre sur prod avant de mettre en production une nouvelle version

APP_DEBUG=1 On peut se connecter en mode debug, c'est-à-dire SANS AUTHENTIFICATION, il faudra donc protéger l'installation par ailleurs (par adresses IP par exemple) Les mails sont envoyés uniquement à l'adresse se trouvant dans la variable MAILER_RECIPIENT, utile pour tester sans importuner les utilisateurs APP_DEBUG=0 A UTILISER EN PRODUCTION (sinon n'importe qui peut se connecter !)

chown www-data .env.local
chmod 400 .env.local

Installation de symfony:

Installer composer depuis https://getcomposer.org/

Appeler composer avec les droits www-data:

mkdir vendor && chown www-data.www-data vendor
./secu-off.bash
sudo -u www-data php composer.phar --no-scripts install
./secu-on.bash

Base de données:

Création d'une base de données et d'un utilisateur

Si vous utilisez mariadb, vous pouvez créer l'utilisateur et la base comme indiqué ici: https://www.security-helpzone.com/2016/05/15/developpement-sql-mysql-creer-un-utilisateur-et-lui-attribuer-des-droits/

Configuration du mail:

Si vous avez un sendmail qui sait envoyer les mails, la config de .env.local est sans doute OK pour vous N'oubliez pas de renseigner MAILER_RECIPIENT pour ne pas envoyer des mails à n'importe qui lors des tests ATTENTION - Cela ne fonctionne QUE si APP_DEBUG=1 dans .env.local !

Pour tester la configuration:

sudo -u www-data bin/console app:send-a-mail titi@toto.fr

Si APP_DEBUG vaut zéro le mail sera envoyé à titi@toto.fr Si APP_DEBUG vaut 1 le mail sera envoyé à MAILER_RECIPIENT

Installation d'une base de donnees déjà en exploitation sur une instance de développement:

cd reprise
sudo -u www-data ./reload-db un-dump-de-la-bd.sql

ATTENTION: Si votre dump provient d'une version 3.5 ou 3.6 de gramc3, il est nécessaire d'initaliser certains champs. Cela se fait année par année:

bin/console app:InitTypeVersion 2022

A exécuter pour chaque année se trouvant dans votre base de données.

Installation d'une base de données vide sur une instance de développement:

cd reprise
sudo -u www-data ./reload-db gramc3.sql.dist

La commande reload-db va effacer la base existante, recharger la base à partir du fichier sql, la mettre à niveau si besoin puis appliquer les "fixtures", ci-besoin.

Ensuite, un mail sera envoyé à l'adresse toto@exemple.com: cela permet de vérifier que le mail est bien envoyé à l'adresse $MAILER_RECIPIENT et de s'assurer que les utilisateurs ne recevront pas de mails lors des essais...

Vérification:

Pour vérifier que tout est correctement configuré, vous pouvez utiliser la commande ci-dessous, elle doit se dérouler correctement et envoyer un mail à MAILER_RECIPIENT:

bin/console app:send-a-mail toto@titi.fr

Remplissage initial du cache:

sudo -u www-data bin/console cache:clear
sudo -u www-data bin/console cache:warm

Il ne doit pas y avoir de warning ou de message d'erreur. S'il y a des messages, c'est probableme dû à une variable non configurée dans .env.local !

configuration apache2:

Il est important que gramc3 ne ne soit pas à l'URL /, sinon on aura du mal à configurer shibboleth. Le plus simple est alors de:

cd /var/www/html
ln -s chemin/vers/gramc3/public gramc3

Sécuriser l'installation:

Le script secu-on.bash passe l'essentiel des fichiers en readonly

./secu-on.bash

Revenir en mode "mise à jour"

Pour mettre à jour Symfony ou pour d'autres opérations de maintenance, il faut repasser tous les fichiers en rw:

./secu-off.bash

Fin de la configuration:

En cas de problème:

Premier démarrage:

Il reste maintenant à:

Configuration de Shibboleth:

Où est le code de gramc ?

gramc3 est une application symfony, il repose sur le patron de conception MVC. Les principaux répertoires sont les suivants:

    src                   Le code php de l'application
    src/Controller        Tous les contrôleurs (les points d'entrée de chaque requête)
    src/Entity            Les objets permettant de communiquer avec la base de données en utilisant l'ORM Doctrine (un objet par table, un membre par champ)
    src/Form              Les formulaires (correspondent aux entités)
    src/Repository        quelques fonctions non standards d'accès à la base de données
    src/GramcServices     L'essentiel du code, implémenté en "services symfony" cf. https://symfony.com/doc/current/service_container.html
    src/GramcServices/Workflow  Les workflows de l'application (changement d'états des objets Projet, Version, Rallonge)
    src/Utils             Des trucs bien utiles
    src/XXX               Le code php "extérieur" utilisé par gramc3

    templates             Les vues, c'est-à-dire tous les affichages, écrits en html/twig
    templates/default     Les vues de la page d'accueil, de l'aide, etc., et les bouts de code utilisés partout (base.html.twig etc)
    templates/xxx         Les vues correspondant aux principaux écrans - Voir dans les controleurs pour savoir quelle vue est utilisée à quel moment

    public                Accessible directement par apache2
    web/icones            Les icones (png)
    web/js                Le code javascript
    web/rm                Les modèles de rapports d'activité à télécharger

    var                   le cache, les sessions php, les fichiers log
                          Il faut **SUPPRIMER** le cache lors des mises à jour, sinon la mise à jour n'est pas correcte !

    vendor                Le code de symfony
    bin/console           L'application ligne de commande de symfony, utile lors des mises à jour ou des rechargements de base de donnée

    reprise               Le code permettant de recharger la base de données, soit pour initialiser gramc, soit pour installer une copie de la production (pour test et debug par exemple)

Comment modifier le code ?

Editer dans:

Comment modifier le formulaire principal ?

Pour modifier le formulaire principal (par exemple ajouter un champ) il faut intervenir dans les fichiers suivants:

Après avoir modifié l'entité Version il convient de mettre à jour la base de données par: bin/console/doctrine:schema:update

Pour aller plus loin....

Le fichier documentation.odt contient toute la documentation de gramc3, et documentation-dev.odt est quant à lui centré sur la structure du code, à des fins de développement