Arborescence des pages

Comparaison des versions

Légende

  • Ces lignes ont été ajoutées. Ce mot a été ajouté.
  • Ces lignes ont été supprimées. Ce mot a été supprimé.
  • La mise en forme a été modifiée.
Commentaire: typos


Info

Cette page décrit une l'installation effecutée effectuée à l'université Université de Rouen sur un serveur en Debian 11 (2 CPU, 2 Go RAM). Le serveur comporte une instance de PROD et une de TEST. Le serveur comporte le frontal Apache, les 2 bases de données PostgreSQL ainsi que les deux applications (prod et test)

Sommaire

Prérequis

  • OpenJDK 1.7+
  • Maven 3.6.x+
  • PostgreSQL 13+
  • Apache 2
  • Serveur CAS et/ou IDP Shibboleth
  • LDAP SUPANN
  • Serveur SMTP

...

  • Apogée (pour la synchro/récupération des étudiants en situation de handicap)
  • Esup-signature (pour la signature des aménagements)

Création d'un utilisateur pour compiler et lancer l'application

Bloc de code
languagebash
themeRDark
adduser esup

Récupération des sources

Bloc de code
languagebash
themeRDark
cd /opt/
git clone https://github.com/EsupPortail/esup-agape.git
sudo chown esup:esup esup-agape
/ -R
cd esup-agape

Configuration

...

Création de la base

Bloc de code
themeRDark
su postgressu postgres
psql
create database esupsignatureesupagape;
create USER esupsignatureesupagape with password password 'esup';
grant ALL ON DATABASE esupsignatureesupagape to esupsignatureesupagape;

Esup-Agape

...

Info

Pour connaître le détail de l'impact de la configuration, rdv sur la page Fonctionnement

De plus, les différents paramètres sont documentés directement dans le code source ici `src/main/

...

java/org/esupportail/esupagape/config/ApplicationProperties.java` et ici `src/main/java/org/esupportail/esupagape/config/

...

ldap/LdapProperties.java`

La configuration s’effectue dans le fichier `src/main/resources/application.properties`.

Voici un exemple de configuration :

Bloc de code
languagecpptext
themeRDark
application.display-photo-uri-pattern=https://<lien où trouver la photo de l'étudiant>/{0}
application.mapping-photo-id-to-ldap-field=eduPersonPrincipalName
application.code-etab=<code établissement>
application.anonymise-delay=4
application.filigrane=Plateforme de PROD
#application.models-path=
application.signatures-path=/opt/images/
application.activate-send-emails=true
application.test-email=testeur@univ-ville.fr
application.enable-scheduler-amenagement=true
application.enable-scheduler-anonymise=false
#application.enable-scheduler-esup-signature=true
application.enable-scheduler-individu=false

#application.esup-signature-url=https://esup-signature-test.univ-ville.fr
#application.esup-signature-avis-workflow-id=???
#application.esup-signature-certificats-workflow-id=???
#application.esup-signature-valideurs-emails=valideur@univ-ville.fr

spring.thymeleaf.servlet.produce-partial-output-while-processing=false
spring.datasource.driver-class-name=org.postgresql.Driver
spring.datasource.username=esupagape
spring.datasource.password=esup
spring.datasource.url=jdbc:postgresql://localhost:5432/esupagape
spring.jpa.hibernate.ddl-auto=update
spring.jpa.open-in-view=false
spring.ldap.urls=ldap://ldap.univ-ville.fr
spring.ldap.base=dc=univ-ville,dc=fr
spring.ldap.username=cn=userldap,dc=univ-ville,dc=fr
spring.ldap.password=xxxxxxxx
spring.mail.host=smtp.univ-ville.fr
spring.mvc.hiddenmethod.filter.enabled=true

server.port=8080
server.tomcat.max-swallow-size=-1

cas.url=https://cas.univ-ville.fr
cas.service=https://esup-agape.univ-ville.fr/login/cas

ldap.search-base=ou=people
ldap.group-search-base=ou=groups
ldap.group-search-filter=member={0}
ldap.user-id-search-filter=(uid={0})
ldap.member-search-filter=(&(uid={0})({1}))
#ldap.affectation-principale-ref-id-prefix-from-apo={APOGEE}
#ldap.affectation-principale-ref-id-prefix-from-rh={SIHAM}
ldap.scolarite-member-of-search=cn=<nom du groupe des personnels des scolarités>,ou=groups,dc=univ-ville,dc=fr

security.mapping-groups-roles.<nom du groupe des admins>=ROLE_ADMIN
security.mapping-groups-roles.<nom du groupe des gestionnaires>=ROLE_MANAGER
security.mapping-groups-roles.<nom du groupe des médecins>=ROLE_MEDECIN
security.mapping-groups-roles.<nom du groupe des personnels administratifs>=ROLE_ADMINISTRATIF
security.mapping-groups-roles.<nom du groupe des personnels des scolarités>=ROLE_SCOLARITE

#apogee.etu-url=https://apogee.univ-ville.fr/apowsInscportal/services/EtudiantMetier
#apogee.administratif-url=https://apogee.univ-ville.fr/apowsInscportal/services/AdministratifMetier
#apogee.pedago-url=https://apogee.univ-ville.fr/apowsInscportal/services/PedagogiqueMetier

#individu-source.data-sources.APOGEE.type=com.zaxxer.hikari.HikariDataSource
#individu-source.data-sources.APOGEE.driver-class-name=oracle.jdbc.OracleDriver
#individu-source.data-sources.APOGEE.password=xxxxxxxx
#individu-source.data-sources.APOGEE.url=jdbc:oracle:thin:@apogee.univ-ville.fr:1522/APOGEE
#individu-source.data-sources.APOGEE.username=web
#individu-source.data-sources.APOGEE.name=APO

#logging.level.root=DEBUG
#logging.level.org.apache.pdfbox=error

Forntal Apache

Afin de publier esup-agape de manière securisée, il est possible de mettre un frontal Apache à l'aide du module mod_proxy.

Pour ce faire, installer apache puis activer le mod_proxy. Voici un exemple sous debian :

Bloc de code
themeRDark
apt install apache2

...

a2enmod proxy proxy_http

Voici maintenant un exemple de configuration apache qui va rediriger les requêtes http vers https puis faire proxy vers l'application esup-agape :

Bloc de code
themeRDark
<VirtualHost *:80>
    ServerName esup-agape.univ-ville.fr
    ServerAlias esup-agape
    ServerAdmin  system@univ-ville.fr
    ServerSignature Off
 
    RewriteEngine On
    RewriteRule ^(.*) https://esup-agape.univ-ville.fr$1 [L,R]
</VirtualHost>
 
<VirtualHost *:443>
    ServerName esup-agape.univ-ville.fr
    ServerAlias esup-agape
    ServerAdmin  systeme@univ-ville.fr
    ServerSignature Off
 
    SSLEngine on
    SSLCertificateFile /etc/pki/tls/certs/crt
    SSLCertificateKeyFile /etc/pki/tls/private/key
    SSLCertificateChainFile /etc/pki/tls/certs/cacert
    SSLverifyclient none  
 
    ProxyPreserveHost On
 
    ProxyPass / http://localhost:8080/ ttl=10 timeout=3600 loadfactor=100 retry=1
    RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME}
    RequestHeader set "X-Forwarded-SSL" expr=%{HTTPS}
    ProxyPreserveHost On
  </VirtualHost>

Enfin, recharger la configuration Apache :

Bloc de code
themeRDark
service apache2 reload

Compilation et lancement

Compilation

Après configuration, dans le dossier du dépôt :

Bloc de code
languagebash
themeRDark
su esup
cd /opt/esup-agape
mvn clean package

Création d'un service

Voici un exemple de configuration de systemd pour chaque "mode" de démarrage d'esup-signature (à mettre un fichier esup-agape.service dans /etc/systemd/system/) :

Bloc de code
themeRDark
[Unit]
Description=esup-agape

[Service]
User=esup
Group=esup
Environment=JAVA_OPTS=--add-exports=java.base/sun.security.pkcs=ALL-UNNAMED -Xms1024m -Xmx1024m
WorkingDirectory=/opt/esup-agape
ExecStart=/opt/esup-agape/target/esup-agape.jar

[Install]
WantedBy=multi-user.target



Ajustements après installation

...

Pour une bonne gestion des blob blobs de cette application, il faut ajouter dans PostgreSQL un trigger sur la base de données sur la table big_file. La fonction lo_manage est nécessaire ici.

...

Bloc de code
themeRDark
su postgres
psql
\c esupsignatureesupagape
CREATE EXTENSION lo;

Enfin, seulement après avoir démarré une première fois esup-signature,  ajout du ajouter le trigger à l'aide du script suivant : 

...