02 ‐ Guide d'installation - EsupPortail/esup-emc2 GitHub Wiki
Présupposition
Les présuppositions suivantes seront faites ici mais elles peuvent être contournées.
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.
EMC2 n'a pas été testée sous ces autres systèmes d'exploitations.
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.
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 EMC2 sera installée dans le répertoire /var/www/html
du serveur. Ceci est facilement contournable en modifiant les configuration du serveur web.
**La base de données de EMC2 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 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 pour la récupération des bibliothèques php
user@serveur:~$ apt install composer
user@serveur:~$ composer self-update --2.2
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://github.com/EsupPortail/esup-emc2.git
user@serveur:/var/www$ mv esup-emc2 html
Le fichier composer.json
contient la liste des bibliothèques nécessaire à EMC2.
Elle s'installe grace à composer
.
user@serveur:/var/www$ cd html
user@serveur:/var/www/html$ composer install
Configuration des différentes bibliothèques
Configuration des BDD et de BDDADMIN
La configuration de l'envoi des courriers électroniques passe par le fichier database.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.local.php.dist config/autoload/database.local.php
user@serveur:/var/www/html$ cp config/autoload/unicaen-bdd-admin.local.php.dist config/autoload/unicaen-bdd-admin.local.php
Il y a deux connexions à paramétrer :
- la connexion à la base de données de EMC2
orm_default
- la connexion à la base de données du concentrateur de données ou SIRH
orm_octopus
Pour la configuration, il est nécessaire de préciser le serveur, la base, l'utilisateur et le mot de passe dans les clefs correspondantes.
N.B. : à un moment dans le "futur", orm_octopus
sera renommé orm_sirh
Pour simplifier le paramétrage, les déclarations des secret liée au base de données passe 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 m'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 par la clef module
.
On retrouve deux sous-clefs:
- la clef
default
qui régit le comportement par défaut (et de la partie EMC2) - la clef
Formation
qui régit le comportement de la partie Mes-Formations
Chaque "bloc" de comportement est composé comme suit :
do_not_send
si àtrue
aucun courrier n'est envoyéredirect
si àtrue
alors les courriers seront tous redirigés vers les adresses de la clefredirect_to
redirect_to
est un tableau d'adresse électronique vers qui les courriers seront redirigés (la virgule est le séparateur)subject_prefix
est le préfixe des sujets des courriers (si la valeur est 'EMC2' alors les sujet seront "[EMC2] Mon sujet de courrier"from_name
est le nom de l'expéditeurfrom_email
est l'adresse électronique de l'expéditeur
N.B. : Attention EMC2 peut envoyé beaucoup de mail ; notamment lors des campagne d'entretien professionnel. Il est nécessaire de white-lister l'adresse électronique d'expédition des courriers électroniques.
Paramétrage de l'authentification
L'authentification est à paramétrer par le biais de trois fichiers :
config/autoload/unicaen-ldap.local.php
paramètrage de l'accés au LDAPconfig/autoload/unicaen-authentification.local.php
paramètrage des mode d'authentificationconfig/autoload/unicaen-app.local.php
paramètrage complémentaire (et parfois redondant qui sera améliorée dans les prochaines versions)
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
user@serveur:/var/www/html$ mv config/autoload/unicaen-app.local.php.dist config/autoload/unicaen-app.local.php
config/autoload/unicaen-ldap.local.php
Paramétrage dans le fichier 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
config/autoload/unicaen-authentification.local.php
Paramétrage dans le fichier 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ée 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,
],
],
Pour la partie shibboleth sera décrite plus tard.
Dans ce même fichier il est possible de déclarer les login des personnes ayant accès à l'usurpation dans le tableau usurpation_allowed_usernames
.
config/autoload/unicaen-app.local.php
Paramétrage dans le fichier Ici l'on retrouve le paramètrage du LDAP (à nouveau)
config/autoload/local.php
Paramétrer le comportement des message d'erreur 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
Pour le moment ce fichier ne contient que les paramètrages liés aux exceptions et aux "not found"
Construire le schéma de la base de données
La gestion de la structure de la base de données est maintenant délégué à unicaen/bdd-admin
.
Cette permet de créer et mettre à jour les tables en gérant le nom, le type et les contraintes des différentes colonnes des tables.
Pour mettre à jour votre schéma veut utiliser la commande suivante :
mon_utilisateur@mon_serveur:/var/www/html$ ./vendor/bin/laminas bddadmin:update
Lors de l'exécution de cette commande, vous verez les différentes opérations que réalisera unicaen/bdd-admin
.
Et à la fin de la procédure le message suivant :
Mise à jour de toutes les séquences
[OK] Bdd mise à jour
Après cette opération les tables de la base de données seront créées et vous pourrez les consulter avec un outil de gestion de base (dbeaver, sqldevelopper, ...)
Inserer les données minimales
Les données
Dans le répertoire (documentation/SQL/donnees) vous retrouverez un ensemble de script à lancer dans l'ordre lexicographique. Ces données ajouterons les données associés aux différentes blibliothèques (formulaires, templates, états, ...) déclareront les différents paramètres et privilèges.
Les privilèges
Pour simplifier le paramètrage de votre instance, il est aussi possible de reprendre les affectations des privilèges pour correspondre à une "instance type". Pour cela dans le répertoire (documentation/SQL/privilieges) vous retrouverez une liste de scripts réalisant les affectations.
Remarque :
Ces fichiers peuvent être utilisés pour réinitialiser les privilèges, il faut cependant penser à vider vos précédentes affectations truncate table unicaen_privilege_privilege_role_linker
.
Ajouter hors de l'interface un utilisateur, le nommer administrateur technique
INSERT INTO unicaen_utilisateur_user (username, display_name, email, password, state) VALUES ('login', 'Nom à afficher', '[email protected]', 'ldap', true);
N.B. : Ici ldap est utilisé pour les deux mode d'authentification ldap
et cas
.
INSERT INTO unicaen_utilisateur_role_linker (user_id, role_id)
SELECT u.id AS user_id, r.id AS role_id
FROM unicaen_utilisateur_user u
JOIN unicaen_utilisateur_role r ON true
WHERE u.username='login' AND r.role_id='Administrateur·trice technique';
Pour les autres utilisateurs et administrateurs, il est recommandé de passer par l'interface "Administration > Utilisateur"
N.B. : La plupart des rôles sont automatiques et seront attribués par l'application (par exemple les rôles Agent, Responsable de structure, ...). Le listing et le type des différents rôles peuvent être consulté dans l'interface "Administration > Rôle"
Finalisation et zone d'échanges de fichiers
Deux répertoires d'échanges de données sont nécessaire :
- data/DoctrineORMModule/Proxy qui permettra à Doctrine (ORM) de gérer les données des requètes
- upload qui sera la zone de dépôt des fichiers
## DROIT DES REPERTOIRES D ECHANGE
mkdir -p /var/www/html/data/DoctrineORMModule/Proxy
chmod 777 /var/www/html/data/DoctrineORMModule/Proxy
mkdir /var/www/html/upload
chmod 777 /var/www/html/upload
Vérification des données attendues par EMC2/MesFormations
Vérification de l'installation
Dans le menu Administration > Vérification de l'installation
on retrouve une interface de contrôle qui vérifie si tous (ou presque) les éléments attendu par un module ou une bibliothèque sont bien en base de donnée.
Un rapide parcours de cette page permet de voir si des manques sont présents
Attention: Les parties traitement des fonctions et de profil de recrutement sont in limbo et seront indiquée comme non renseigner. Les discussions du groupe permettront de savoir si on supprimer ces fonctionnalités actuellement abondonnées