-
Notifications
You must be signed in to change notification settings - Fork 0
02 ‐ Guide d'installation
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.
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
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
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
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é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.
L'authentification est à paramétrer par le biais de trois fichiers :
-
config/autoload/unicaen-ldap.local.php
paramètrage de l'accés au LDAP -
config/autoload/unicaen-authentification.local.php
paramètrage des mode d'authentification -
config/autoload/unicaen-app.local.php
paramètrage complémentaire (et parfois redondant qui sera améliorée dans les prochaines versions)
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
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
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
.
Ici l'on retrouve le paramètrage du LDAP (à nouveau)
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"
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.
Contient toutes les tables associées aux bibliothèques utilisées par EMC2/MesFormations.
Contient toutes les tables associées aux carrières
Contient toutes les tables associées aux métiers
Contient toutes les tables associées aux applications et compétences
Contient toutes les tables associées aux missions principales ou spécifiques
Contient toutes les tables associées aux fiches métiers
Pas encore stabilisé
Contient toutes les tables associées aux structures
009 - Les éléments décrivant les agents -- PARTIE 2 -- [documentation/SQL/009_AGENT_PART2.sql]
Pas encore stabilisé
Contient toutes les tables associées aux fiches de poste et les éléments liés. À savoir :
- États ;
- Validations ;
- Macros et templates ;
- Privilèges.
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.
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.
013 - Configuration en ligne d'élément [documentation/SQL/013_CONFIGURATION.sql]
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"
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"
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
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