Skip to content

02 ‐ Guide d'installation

Jean-PhilippeMetivier edited this page Apr 2, 2024 · 1 revision

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

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

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

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 :

  1. le paramètrage sur SMTP ;
  2. 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:

  1. la clef default qui régit le comportement par défaut (et de la partie EMC2)
  2. 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 clef redirect_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éditeur
  • from_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 :

  1. config/autoload/unicaen-ldap.local.php paramètrage de l'accés au LDAP
  2. config/autoload/unicaen-authentification.local.php paramètrage des mode d'authentification
  3. config/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
user@serveur:/var/www/html$ mv config/autoload/unicaen-app.local.php.dist config/autoload/unicaen-app.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é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.

Paramétrage dans le fichier config/autoload/unicaen-app.local.php

Ici l'on retrouve le paramètrage du LDAP (à nouveau)

Paramétrer le comportement des message 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

Pour le moment ce fichier ne contient que les paramètrages liés aux exceptions et aux "not found"

Construire et pré-remplir le schéma de la base de données

Le répertoire documentation/SQL stocke les scripts de créations de la base de données de EMC2/MesFormations. Il est important de les exécuter dans l'ordre alphabétique.

Ces scripts créent les tables et réalisent des insertions à minima dans les tables.

Il est à noter que dans la mesure du possible un export dot et png seront réalisés afin de pouvoir visualiser le modèle de données.

001 - Les bibliothèques UniCaen [documentation/SQL/001_BIBLIOTHEQUE_UNICAEN.sql]

Contient toutes les tables associées aux bibliothèques utilisées par EMC2/MesFormations. 001_BIBLIOTHEQUE_UNICAEN

002 - Les éléments décrivant les carrières [documentation/SQL/002_CARRIERE.sql]

Contient toutes les tables associées aux carrières 002_CARRIERE

003 - Les éléments décrivant les métiers [documentation/SQL/003_METIER.sql]

Contient toutes les tables associées aux métiers 003_METIER

004 - Les éléments décrivant les métiers [documentation/SQL/004_ELEMENT.sql]

Contient toutes les tables associées aux applications et compétences 004_ELEMENT

005 - Les éléments décrivant les missions [documentation/SQL/005_MISSION.sql]

Contient toutes les tables associées aux missions principales ou spécifiques 005_MISSION

006 - Les éléments décrivant les fiches métiers [documentation/SQL/006_FICHE_METIER.sql]

Contient toutes les tables associées aux fiches métiers 006_FICHEMETIER

007 - Les éléments décrivant les agents -- PARTIE 1 -- [documentation/SQL/007_AGENT_PART1.sql]

Pas encore stabilisé

008 - Les éléments décrivant les structures [documentation/SQL/008_STRUCTURE.sql]

Contient toutes les tables associées aux structures 008_STRUCTURE

009 - Les éléments décrivant les agents -- PARTIE 2 -- [documentation/SQL/009_AGENT_PART2.sql]

Pas encore stabilisé 009_AGENT_PART2

010 - Les éléments décrivant les fiches de postes [documentation/SQL/010_FICHEPOSTE.sql]

Contient toutes les tables associées aux fiches de poste et les éléments liés. À savoir :

  • États ;
  • Validations ;
  • Macros et templates ;
  • Privilèges.

010_FICHEPOSTE

011 - Les éléments décrivant les entretiens professionnels [documentation/SQL/011_ENTRETIENPROFESSIONNEL.sql]

Dans le script l'on retrouve les tables mais également les éléments liés aux entretien professionnel et campagne. À savoir :

  • États ;
  • Validations ;
  • Paramètres ;
  • Formulaires ;
  • Macros et templates ;
  • Privilèges ;
  • Événements.

Ici un modèle des tables associées à cette partie de l'application. 011_ENTRETIENPROFESSIONNEL

012 - Les éléments liés aux formations [documentation/SQL/012_FORMATION.sql]

Dans le script l'on retrouve les tables mais également les éléments liés aux formations. À savoir :

  • Rôles ;
  • Paramètres ;
  • Macros et templates ;
  • États ;
  • Validations ;
  • Événements ;
  • Privilèges.

012_FORMATION

013 - Configuration en ligne d'élément [documentation/SQL/013_CONFIGURATION.sql] 013_CONFIGURATION

Bootstrapping

Donner tous les privilèges à l'administrateur technique

TRUNCATE TABLE unicaen_privilege_privilege_role_linker;
INSERT INTO unicaen_privilege_privilege_role_linker (privilege_id, role_id)
WITH d(privilege_id) AS (
    SELECT id FROM unicaen_privilege_privilege
)
SELECT d.privilege_id, cp.id
FROM d
JOIN unicaen_utilisateur_role cp ON cp.role_id = 'Administrateur·trice technique'
;

Pour les autres rôles et affiner les privilèges, il est recommander ensuite de passer par l'interface graphique "Administrion > Privilèges"

Ajouter hors de l'interface un utilisateur, le nommer administrateur technio

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 Capture d’écran de 2023-11-29 18-26-33

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

Clone this wiki locally