| Sommaire |
|---|
Lancer l'application en tant que service
Afin de gérer facilement les redémarrages de l'application, et notament le redémarage automatiques lors des reboots du serveur, il peut être nécessaire de configurer un service au niveau du systeme d'exploitation.
Voici un exemple de configuration de systemd pour chaque "mode" de démarrage d'esup-signature à mettre un fichier esup-signature.service dans /etc/systemd/system/ :
Lancement via tomcat
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
[Unit]
Description=Apache Tomcat Web Application |
...
Esup Signature After=syslog.target network.target [Service] Type=forking Environment=JAVA_HOME=/usr/lib/jvm/jdk-17.0.1 Environment=CATALINA_PID=/opt/tomcat-esup-signature/temp/tomcat.pid Environment=CATALINA_HOME=/opt/tomcat-esup-signature ExecStart=/opt/tomcat-esup-signature/bin/startup.sh ExecStop=/bin/kill -15 $MAINPID User=tomcat Group=tomcat [Install] WantedBy=multi-user.target |
Lancement via maven
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
[Unit]
Description= |
...
Esup Signature [Service] User=esup Group=esup Environment=JAVA_HOME=/usr/lib/jvm/jdk-17.0.1 ExecStart=mvn spring-boot:run WorkingDirectory=/opt/esup-signature/ [Install] WantedBy=multi-user.target |
Lancement du .war
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
[Unit]
Description= |
...
Esup Signature [Service] User=esup Group=esup Environment=JAVA_ |
...
OPTS="--add-exports=java.base/sun.security.pkcs=ALL-UNNAMED -Xms2048m -Xmx4096m" #Si votre serveur se situe derrière un proxy, il est possible de positionner la configuration dans Environnement comme suit : #Environment=JAVA_OPTS="--add-exports=java.base/sun.security.pkcs=ALL-UNNAMED -Xms2048m -Xmx4096m -Dhttps.proxyHost=proxy.univ-ville.fr -Dhttps.proxyPort=3128 -Dhttp.proxyHost=proxy.univ-ville.fr -Dhttp.proxyPort=3128" ExecStart=/opt/esup-signature/target/esup-signature.war --spring.config.location=/opt/esup-signature/application.yml -Dfile.encoding=UTF-8 WorkingDirectory=/opt/esup-signature/ [Install] WantedBy=multi-user.target |
Après l'ajout de votre fichier esup-signature.service, lancez la commande suivante pour l'activer:
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
systemctl enable esup-signature.service |
Démarrage, redémarrage et arrêt du service
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
systemctl start esup-signature.service
systemctl restart esup-signature.service
systemctl stop esup-signature.service |
Mise en place d'un Apache en frontal
Afin Afin de publier esup-signature de manière securisée, il est possible de mettre un frontal Apache à l'aide du module mod_proxy.
Installer préalablement Apache2
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
sudo apt update
sudo apt install apache2 |
Pour ce faire installer apache puis activer le mod_proxy :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
a2enmod proxy proxy_http proxy_ajp
Donne :
Enabling module proxy.
Considering dependency proxy for proxy_http:
Module proxy already enabled
Enabling module proxy_http.
Considering dependency proxy for proxy_ajp:
Module proxy already enabled
Enabling module proxy_ajp.
To activate the new configuration, you need to run:
systemctl restart apache2
|
Redémarre Apache pour prendre en compte les changements :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
systemctl restart apache2 |
Voici maintenant un exemple de configuration apache qui va rediriger les requetes http vers https puis faire proxy vers l'application esup-signature
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
<VirtualHost *:80> ServerName esup-signature.univ-ville.fr ServerAlias esup-signature ServerAdmin system@univ-ville.fr ServerSignature Off RewriteEngine On RewriteRule ^(.*) https://esup-signature-demo.univ-rouenville.fr$1 [L,R] </VirtualHost> <VirtualHost *:443> ServerName esup-signature.univ-rouenville.fr ServerAlias esup-signature ServerAdmin systeme@univ-rouenville.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 / ajp://localhost:6009/ ttl=10 timeout=3600 loadfactor=100 retry=1 # ProxyPass ou ProxyPass / http://localhost:8080/ ttl=10 timeout=3600 loadfactor=100 retry=1 # avec proxy http (et non ajp), il faut ajouter le X Forward < RequestHeader set "X-Forwarded-Proto" expr=%{REQUEST_SCHEME} RequestHeader set "X-Forwarded-SSL" expr=%{HTTPS} ProxyPreserveHost On </VirtualHost> |
Enfin recharger la configuration Apache :
...
| Remarque |
|---|
Dans le cas de l'utilisation d'un proxy (apache proxypass par exemple) il est conseillé d'utiliser le protocole AJP. Si cela n'est pas possible il faudra utiliser le de Proxypass il faut utiliser le module remoteip qui permet de transmettre l'adresse IP réel du client au serveur tomcat (cela n'est pas necessaire en AJP). Pour ce faire il faut activer le module coté Apache: ajouter le fichier mod_remoteip.conf dans le dossier conf.d/ et y inscrire :
et Si vous utilisez votre propre tomcat, il faut ajouter une valve dans la configuration du serveur tomcat (server.xml) : <Valve className="org.apache.catalina.valves.RemoteIpValve"
|
Gestion des sources avec git
| Info |
|---|
Pour gérer plus facilement les sources sur le serveur d'exploitation il est conseillé d'utiliser git. Le dépôt d'origine d'esup-signature se trouve sur github https://github.com/EsupPortail/esup-signature. Le dépôt fonctionne ainsi :
Des tags sont créés pour chaque version importante du code voir : Change log , https://github.com/EsupPortail/esup-signature/tags |
Clonage
Comme expliqué dans la documentation d'installation, il est préférable de cloner le dépôt git sur le serveur qui héberge esup-signature. Pour cela on commence par faire :
...
Le dépôt sera copié dans ./esup-signature, vous pouvez rester sur la branche master (branche git par défaut)
Commit de la configuration de production
Lorsque la configuration ainsi que la personnalisation seront terminéesDans le cas ou vous voulez concerver le fichier de configuration dans votre dépôt local, vous devez créer un commit de production pour "sauvegarder" vos modifications. Grace à cela lorsque que vous récupérerez les prochaines versions vos modifications seront reprises (et pourront potentiellement donner lieu à des conflits)
...
Il faudra répéter cette opération pour chaque modification effectuée sur le code
| Remarque |
|---|
Si votre configuration est externalisée (utilisation de --spring.config.location), on conseil de créer un dépôt local contenant votre fichier. Cela pemettra de revenir sur une anciènne version si besoin. |
Mise à jour d'esup-signature
Il faut tout d'abord mettre à jour votre dépôt local depuis le dépôt github
...
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
git tag --sort=-v:refname | head -n 10 |
(--sort=-v:refname permet de lister dans l'ordre de version de tag la plus récente en premier, head -n 10= pour n'avoir que les 10 derniers tag)
Il faut de plus s'assurer que toutes les modifications de code ont bien été sauvegardées ("commitées") :
...
| Remarque |
|---|
Si précisé dans la page Change log , ne pas oublier de passer le script de mise à jour de base de données après avoir fait "mvn clean package" |
Mise à jour de la base de données
Pour monter de version il se peut que des scripts doivent être lancer. Pour ce faire il faut d'abord compiler une première fois les sources pour que le schéma de la base soit à jour. Ensuite, il faut passer le script correspondant présent dans "src/main/resources/update_X.X.sql".
...
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
su postgres psql -d 'nom_base_esupsignature' < 'chemin/nom_script.sql' |
Sauvegarde / Restauration
Voici un exemple de tache planifiée pour une sauvegarde quotidienne :
...
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
pg_restore -d esupsignature --no-owner --role <nom_de_l_utilisateur> /backup/esup-signature/esupsignature-dump/ |
Contrôle / Archivage / Purge des données
Lorsqu'une adresse est configurée au niveau la propriété archive-uri du fichier de configuration application.yml le système va tenter d'y archiver les documents signés (Demandes terminées).
Le paramètre delay-before-cleaning permet de régler un délais en jours avant la suppression des fichiers présents en base pour les demandes qui sont au statut "Exporté". Si la valeur est 0, les demandes seront archivées dés quelles auront été exportées.
| Remarque |
|---|
Pour que le système d'archivage soit activé, il faut mettre le paramètre enable-scheduled-cleanup à true |
Les demandes restent consultables depuis esup-signature qui fait, alors, la passerelle avec l'espace d'archivage.
( Après archivage, si l'utilisateur supprime complètement la demande depuis l'interface d'ESUP-Signature, le document ne sera plus visible depuis l'interface, mais il reste disponible dans l'espace d'archivage. )
Pour consulter la taille de la base depuis la console psql :
...
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
vacuumlo -n esupsignature # vérifer le nombre de large objects à supprimer |
Puis à nouveau depuis psql :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
psql esupsignature; VACUUM FULL; |
Pour voir ce qui se déroule vous pouvez rendre VACUUM plus verbeux :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
VACUUM FULL VERBOSE; |