installation.md
- Documentation pour l'installation et la configuration du projet
- Présupposition
- Système d'exploitation
- Moteur web et PHP
- Supposition sur le système
- Base de données interne
- Installation de PHP8, des modules/extensions utiles et autres choses utiles
- Récupération du dépôt et des bibliothèques associées
- Création des répertoires nécessaires
- Configuration
- Configuration des BDD et de BDDADMIN
- Configuration de l'envoi des courriers électroniques
- Paramétrage de l'authentification
- Tout d'abord renommé les fichiers dist
- Paramétrage dans le fichier config/autoload/unicaen-ldap.local.php
- Paramétrage dans le fichier config/autoload/unicaen-authentification.local.php
- Paramétrer le comportement des messages d'erreur config/autoload/local.php
- Paramétrer les liens externes de l'application
- Installation du modèle de données et données de base
- Synchronisation des données de votre SIRH
- Paramètrages
- Les paramètres de l'application
- Les templates
- Troubleshooting
- Aucune résolution de lien
- Configuration des paramètres PHP
Documentation pour l'installation et la configuration du projet
- Présupposition
- Installation
- Configuration
- Installation du modèle de données et données de base
- Synchronisation des données du SIRH
- Paramètrages
- Troubleshooting
Présupposition
Les présuppositions suivantes seront faites ici, mais elles peuvent être contournées.
Système d'exploitation
Le serveur utilise debian comme système d'exploitation.
Une autre distribution linux peut-être utilisée facilement en modifiant légèrement les commandes systèmes utilisées.
Il sera en revanche surement plus complexe de réaliser l'installation sous MacOS ou Windows.
Mes Formations n'a pas été testée sous ces autres systèmes d'exploitations.
Moteur web et PHP
Nous utilisons PHP-FPM et Apache sur les instances de l'Université de Caen Normandie. Il est surement possible d'en utiliser ici d'autres en adaptant les configurations qui seront décrites dans la suite.
Supposition sur le système
Nous supposerons aussi que si le serveur est derrière un proxy alors les variables d'environnement associées sont bien positionnées.
Notamment les variables http_proxy et https_proxy.
Nous supposerons que Mes Formations sera installée dans le répertoire /var/www/html du serveur.
Ceci est facilement contournable en modifiant les configurations du serveur web.
Base de données interne
**La base de données de Mes Formations est une base de données pgsql avec l'extension unaccent (qu'il faut penser à installer et s'assurer que l'application/usager pourra utiliser).
Installation de PHP8, des modules/extensions utiles et autres choses utiles
L'installation de PHP8 et des modules/extensions se fait directement avec le gestionnaire de paquet de la distribution utilisée ; dans le cas de debian il s'agit de apt.
user@serveur:/var/www/html$ apt install php-fpm
user@serveur:/var/www/html$ apt install php8.2-bcmath php8.2-intl php8.2-ldap php8.2-xml php8.2-mbstring php8.2-gd php8.2-curl php8.2-pgsql
On aura besoin de l'application git pour la récupération du dépôt et les futures mises à jour
user@serveur:~$ apt install git
On aura besoin de composer (en version 2.x) pour la récupération des bibliothèques php.
user@serveur:~$ apt install composer
Récupération du dépôt et des bibliothèques associées
La prochaine étape consiste à cloner le dépôt.
user@serveur:~$ cd /var/www
user@serveur:/var/www$ git clone https://git.unicaen.fr/open-source/mes-formations.git html
Le fichier composer.json contient la liste des bibliothèques nécessaires.
Elle s'installe grâce à composer.
user@serveur:/var/www$ cd html
user@serveur:/var/www/html$ composer install
Création des répertoires nécessaires
Créez les répertoires suivants si ce n'est pas déjà fait :
user@serveur:/var/www/html$ mkdir -p ./data/DoctrineORMModule/Proxy
user@serveur:/var/www/html$ mkdir -p ./upload
Assurez-vous que ces répertoires ont les permissions appropriées.
Configuration
La configuration à la charge de l'établissement est contenue dans les fichiers local.dist contenus dans le répertoire ./config/autoload.
Ces configurations doivent être adaptées aux besoins spécifiques de l'établissement, et l'extension .dist doit être retirée.
Liste des fichiers distants :
database-app.local.php.distdatabase-sirh.local.php.distlocal.php.distsynchro.local.php.distunicaen-app.local.php.distunicaen-authentification.local.php.distunicaen-evenement.local.php.distunicaen-fichier.local.php.distunicaen-ldap.local.php.distunicaen-mail.local.php.dist
Configuration des BDD et de BDDADMIN
La configuration de l'envoi des courriers électroniques passe par le fichier database-app.local.php et database-sirh.local.php.
Il est nécessaire de récupérer la configuration et d'adapter celle-ci.
user@serveur:/var/www/html$ cp config/autoload/database-app.local.php.dist config/autoload/database-app.local.php
user@serveur:/var/www/html$ cp config/autoload/database-sirh.local.php.dist config/autoload/database-sirh.local.php
Il y a deux connexions à paramétrer :
- la connexion à la base de données de Mes Formations
orm_default - la connexion à la base de données du concentrateur de données ou SIRH
orm_sirhPour la configuration, il est nécessaire de préciser le serveur, la base, l'utilisateur et le mot de passe dans les clefs correspondantes.
Pour simplifier le paramétrage, les déclarations des secrets liés aux bases de données passent par des constantes.
Configuration de l'envoi des courriers électroniques
La configuration de l'envoi des courriers électroniques passe par le fichier unicaen-mail.local.php. Il est nécessaire de récupérer la configuration et d'adapter celle-ci.
user@serveur:/var/www/html$ cp vendor/unicaen/mail/config/unicaen-mail.local.php.dist config/autoload/unicaen-mail.local.php
Dans ce fichier, on retrouve :
- le paramètrage sur SMTP ;
- le paramètrage du comportement de l'envoi des courriers électronique.
La configuration du SMTP passe par la clef transport_options
'transport_options' => [
'host' => 'smtp.mon-etablissement.fr',
'port' => 25,
],
La configuration du comportement passe par la déclaration des clefs suivantes :
-
do_not_sendsi àtrueaucun courrier n'est envoyé ; -
redirectsi àtruealors les courriers seront tous redirigés vers les adresses de la clefredirect_to; -
redirect_toest un tableau d'adresse électronique vers qui les courriers seront redirigés (la virgule est le séparateur) ; -
subject_prefixest le préfixe des sujets des courriers (si la valeur est 'MesFormations' alors les sujets seront "[MesFormations] Mon sujet de courrier" ; -
from_nameest le nom de l'expéditeur -
from_emailest l'adresse électronique de l'expéditeur -
reply_toest l'adresse fournit pour la réponse à un courrier expédié par l'application
N.B. :
Attention Mes Formations peut envoyer beaucoup de mail.
Il est nécessaire de white-lister l'adresse électronique d'expédition des courriers électroniques et/ou d'utiliser une adresse noreply et de bien paramètrer la clef reply_to.
Paramétrage de l'authentification
L'authentification est à paramétrer par le biais de deux fichiers :
-
config/autoload/unicaen-ldap.local.phpparamètrage de l'accés au LDAP -
config/autoload/unicaen-authentification.local.phpparamètrage des modes d'authentification
Tout d'abord renommé les fichiers dist
user@serveur:/var/www/html$ mv config/autoload/unicaen-ldap.local.php.dist config/autoload/unicaen-ldap.local.php
user@serveur:/var/www/html$ mv config/autoload/unicaen-authentification.local.php.dist config/autoload/unicaen-authentification.local.php
Paramétrage dans le fichier config/autoload/unicaen-ldap.local.php
Ce paramètrage est assez immédiat ici, il s'agit de paramètrer l'accés au ldap pour la récupération d'information sur les utilisateurs connectés.
Attention en fonction des identifiants de l'établissement à décommenter la bonne ligne à propos de accountFilterFormat.
**N.B: **
- Pour Caen, il s'agit du
supannEmpId - Pour Aix-Marseille et Rouen, il s'agit de l'
uid
Paramétrage dans le fichier config/autoload/unicaen-authentification.local.php
Dans ce fichier, il est question de paramètrer le mode d'authentification parmi : CAS, LDAP (et compte local), et shibboleth (pas de test réalisé ici pour le moment).
L'activation de CAS passe par la déclaration du serveur à contact
'cas' => [
// laisser vide si pas de cas
'connection' => [
'default' => [
'params' => [
'hostname' => 'cas.XXXX.fr',
'port' => XXX,
'version' => "2.0",
'uri' => "",
'debug' => false,
],
],
],
'form_skip' => true,
],
N.B. : form_skip permet d'éviter le formulaire d'identification si l'utilisateur a déjà un jeton d'identification valide
L'activation de LDAP passe par le fait de positionner la variable enable à true de même pour les comptes locaux db.
'local' => [
'order' => 2,
'enabled' => true,
'description' => "Utilisez ce formulaire si vous possédez un compte LDAP établissement ou un compte local dédié à l'application.",
'db' => [
// doit être activé pour que l'usurpation fonctionne (cf. Authentication/Storage/Db::read()) :-/
'enabled' => true,
],
'ldap' => [
'enabled' => true,
'username' => XXX,
],
],
Paramétrer le comportement des messages d'erreur config/autoload/local.php
Ce fichier permet de paramètrer l'affichage des différents messages d'erreur.
user@serveur:/var/www/html$ mv config/autoload/local.php.dist config/autoload/local.php
Paramétrer les liens externes de l'application
Ce fichier permet de paramètrer les liens externes notamment du pied de page
user@serveur:/var/www/html$ mv config/autoload/unicaen-app.local.php.dist config/autoload/unicaen-app.local.php
Installation du modèle de données et données de base
Lancez la commande suivante pour exécuter le processus d'installation :
user@serveur:/var/www/html$ ./vendor/bin/laminas bddadmin:install
Après l'installation, vérifiez que les données ont été correctement insérées par la mise à jour.
Synchronisation des données de votre SIRH
Configurez le fichier de synchronisation selon les besoins du projet et les fichiers de base de données sources comme décrit dans la documentation sur les connecteurs.
Pour lancer la synchronisation, suivez lancer la commande suivante :
user@serveur:/var/www/html$ ./vendor/bin/laminas synchroniser
N.B. : Il est possible de réaliser la synchronisation d'une table individuellement via la commande
user@serveur:/var/www/html$ ./vendor/bin/laminas synchroniser SYNCHO_NAME
N.B. : Une bonne pratique est de paramètrer la synchronisation dans un cron. Par exemple
0 7 * * 1-5 /var/www/html/vendor/bin/laminas synchroniser
Paramètrages
Les paramètres de l'application
Les paramètres de l'application sont déclarés et modifiable directement en back office dans la partie Administration > Paramètres
Les templates
Les templates de l'application sont déclarés et modifiable directement en back office dans la partie Administration > Template
Troubleshooting
Aucune résolution de lien
Pensez à vérifier que dans la déclaration du VirtualHost la close suivante soit bien déclarée :
RewriteEngine On
Configuration des paramètres PHP
Vérifiez que les paramètres suivants dans PHP sont correctement configurés à 0 :
session.cookie_lifetime
session.gc_maxlifetime
Pour vérifier, consultez la configuration PHP :
php -i | grep session.cookie_lifetime php -i | grep session.gc_maxlifetime
Modification des paramètres
Si les valeurs ne sont pas correctes, modifiez le fichier /etc/php/8.2/fpm/php.ini et assurez-vous que les lignes suivantes sont définies :
session.cookie_lifetime = 0 session.gc_maxlifetime = 0
Redémarrez le service PHP-FPM pour appliquer les modifications :
systemctl restart php-fpm