MesoNET / gramc-meso

GNU Affero General Public License v3.0
0 stars 0 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 (voir ci-dessous)

Installer le code de gramc-meso:

git clone https://github.com/MesoNET/gramc-meso
cd gramc-meso

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:

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 mesonet).

Couleurs:

Vous devez copier le fichier 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 .env:

cp .env.dist .env

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
chmod 400 .env

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

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

cd reprise
sudo -u www-data ./reload-db gramc-meso.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 gramc-meso 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/gramc-meso/public gramc-meso

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-meso ?

gramc-meso 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 gramc-meso

    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-meso, 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 gramc-meso, et documentation-dev.odt est quant à lui centré sur la structure du code, à des fins de développement