...
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
apt install openjdk-21-jdk-headless maven |
Et enfin le paquet tomcat10, avec l'utilitaire tomcat10-instance-create permettant de facilitier la mise en place de plusieurs instances sur le même serveur :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
apt install tomcat10 tomcat10-user |
Installation des instances Tomcat
Création de l'utilisateur esup:
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
groupadd esup
useradd -g esup -m esup |
Installer les On propose d'installer les 2 applications esup-sgc et esup-nfc-tag sur deux instances de Tomcat. L'une sera utilisée pour ESUP-SGC, l'autre pour ESUP-NFC-TAG.
Plusieurs choix sont possibles :
...
Dans la suite de cette documentation, on choisit l'option de l'installation s'appuyant sur le système de paquets pour profiter des mises à jour facilitées par votre distribution (apt sous debian) - c'est d'ailleurs cette option qui a été mise en place dans la VM ESUP-SGC de démonstration.
On installe le paquet tomcat10, avec l'utilitaire tomcat10-instance-create issu de tomcat10-user permettant de facilitier la mise en place de plusieurs instances sur le même serveur :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
tomcat10-instance-create -p 8380 -c 8305 /opt/tomcat-esup-sgc
tomcat10-instance-create -p 8280 -c 8205 /opt/tomcat-esup-nfc-tag
|
On modifie ensuite les fichiers server.xml pour activer l'AJP, tomcat10-instance-create ne permettant pas cette option directement.
...
apt install tomcat10 tomcat10-user |
Dans l'optique d'installer les 2 tomcat pour esup-sgc et esup-nfc-tag de la même manière, on stoppe et désactive le tomcat proposé par défaut via le paquet tomcat10.
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
systemctl stop tomcat10.service
systemctl disable tomcat10.service |
En tant qu'utilisateur esup précédemment créé, on créé les 2 instances des tomcat ainsi :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
tomcat10-instance-create -p 8280 -c 8205 /opt/tomcat-esup-sgc tomcat10-instance-create -p 8380 -c 8305 /opt/tomcat-esup-nfc-tag |
On modifie ensuite les fichiers server.xml pour activer l'AJP, tomcat10-instance-create ne permettant pas cette option directement.
Pour l'instance d'Esup-SGC, éditer /opt/tomcat-esup-sgc/conf/server.xml /conf/server.xml afin de configurer le port 8205 et un connecteur AJP sur le port 8209.
...
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
<Server port="8205" shutdown="SHUTDOWN">
<!-- (...) -->
<Connector port="8209" protocol="AJP/1.3" address="127.0.0.1" redirectPort="8443" asyncTimeout="1200000" tomcatAuthentication="false" scheme="https" secure="true" URIEncoding="UTF-8" secretRequired="false"/> |
...
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
<Server port="8305" shutdown="SHUTDOWN">
<!-- (...) -->
<Connector port="8309" protocol="AJP/1.3" address="127.0.0.1" redirectPort="8443" asyncTimeout="1200000" tomcatAuthentication="false" scheme="https" secure="true" URIEncoding="UTF-8" secretRequired="false"/> |
...
Ces deux instances seront démarrées via Systemd. On peut donc créer et activer ces deux services:L'installation via les paquets debian nous propose par défaut une configuration sécurisée où l'instance de tomcat est lancé par un utilisateur banalisé tomcat à qui on octroie des droits de lecture/écriture sur certains répertoires. Les librairies tomcat sont partagées et issues du sytème (et donc mis à jour au travers d'un apt update/upgrade) alors que les configurations, logs, fichiers temporaires et répertoire des applications web (webapps) sont propres à chaque instance.
Aussi le fichier systemd à mettre en place pour chacune des 2 instances n'est pas triviale, mais il suffit de partir de celui proposé pour l'instance du tomcat par défaut (que l'on a par ailleurs désactivé plus haut) pour les obtenir :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
cp /usr/lib/systemd/system/tomcat10.service /etc/systemd/system/tomcat-esup-sgc.service
cp /usr/lib/systemd/system/tomcat10.service /etc/systemd/system/tomcat-esup-nfc-tag.service
|
Pour Esup-SGC (TODO : à revoir) :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
cat > /etc/systemd/system/tomcat-esup-sgc.service <<EOF
#
# Systemd unit file for Apache Tomcat
#
[Unit]
Description=Apache Tomcat ESUP-SGC Server
Documentation=https://tomcat.apache.org/tomcat-10.0-doc/index.html
After=network.target
RequiresMountsFor=/var/log/tomcat10 /var/lib/tomcat10 /opt/tomcat-esup-sgc
[Service]
# Configuration
Environment="CATALINA_HOME=/usr/share/tomcat10"
Environment="CATALINA_BASE=/opt/tomcat-esup-sgc"
Environment="CATALINA_TMPDIR=/opt/tomcat-esup-sgc/temp"
Environment="JAVA_OPTS=-Djava.awt.headless=true"
# Lifecycle
Type=simple
ExecStart=/bin/sh /usr/libexec/tomcat10/tomcat-start.sh
SuccessExitStatus=143
Restart=on-abort
# Logging
SyslogIdentifier=tomcat-esup-sgc
# Security
User=tomcat
Group=tomcat
PrivateTmp=yes
AmbientCapabilities=CAP_NET_BIND_SERVICE
NoNewPrivileges=true
CacheDirectory=tomcat-esup-sgc
CacheDirectoryMode=750
ProtectSystem=strict
ReadWritePaths=/opt/tomcat-esup-sgc/conf/
ReadWritePaths=/opt/tomcat-esup-sgc/work/
ReadWritePaths=/opt/tomcat-esup-sgc/webapps/
ReadWritePaths=/opt/tomcat-esup-sgc/logs/
[Install]
WantedBy=multi-user.target |
Ne pas oublier de donner les droits à tomcat sur /opt/tomcat-esup-sgc et d'activer le service.
| Bloc de code | ||
|---|---|---|
| ||
chown -R tomcat:tomcat /opt/tomcat-esup-sgc/
systemctl enable tomcat-esup-sgc.service |
Même procédure pour Esup-NFC-TAGPour Esup-SGC (TODO : à revoir) :
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
cat > /etc/systemd/system/tomcat-esup-sgcnfc-tag.service <<EOF # # Systemd unit file for tomcatApache Tomcat # [Unit] Description=Apache Tomcat Web Application Container After=syslog.target network.target Esu Nfc Tag Server Documentation=https://tomcat.apache.org/tomcat-10.0-doc/index.html After=network.target RequiresMountsFor=/var/log/tomcat10 /var/lib/tomcat10 /opt/tomcat-esup-nfc-tag [Service] Type=forking EnvironmentFile=/opt/esup-env# Configuration Environment="CATALINA_HOME=/usr/share/tomcat10" Environment="CATALINA_PIDBASE=/opt/tomcat-esup-sgc/temp/tomcat.pid-nfc-tag" Environment="CATALINA_HOMETMPDIR=/opt/tomcat-esup-sgc ExecStart=/opt/tomcat-esup-sgc/bin/startup.sh ExecStopnfc-tag/temp" Environment="JAVA_OPTS=-Djava.awt.headless=true" # Lifecycle Type=simple ExecStart=/bin/kill -15 $MAINPID User=esup Group=esup [Install] WantedBy=multi-user.target EOF systemctl enable tomcat-esup-sgc.service |
...
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
cat > /etc/systemd/system/sh /usr/libexec/tomcat10/tomcat-start.sh SuccessExitStatus=143 Restart=on-abort # Logging SyslogIdentifier=tomcat-esup-nfc-tag.service <<EOF # Systemd unit file for tomcat [Unit] Description=Apache Tomcat Web Application Container After=syslog.target network.target [Service] Type=forking EnvironmentFile=/opt/esup-env Environment=CATALINA_PIDSecurity User=tomcat Group=tomcat PrivateTmp=yes AmbientCapabilities=CAP_NET_BIND_SERVICE NoNewPrivileges=true CacheDirectory=tomcat-esup-nfc-tag CacheDirectoryMode=750 ProtectSystem=strict ReadWritePaths=/opt/tomcat-esup-nfc-tag/conf/ ReadWritePaths=/opt/tomcat-esup-nfc-tag/work/ ReadWritePaths=/opt/tomcat-esup-nfc-tag/webapps/ ReadWritePaths=/opt/tomcat-esup-nfc-tag/temp/tomcat.pid Environment=CATALINA_HOME=logs/ [Install] WantedBy=multi-user.target |
Ne pas oublier de donner les droits à tomcat sur /opt/tomcat-esup-sgc et d'activer le service.
| Bloc de code | ||
|---|---|---|
| ||
chown -R tomcat:tomcat -nfc-tag ExecStart=/opt/tomcat-esup-nfc-tag/bin/startup.sh ExecStop=/bin/kill -15 $MAINPID User=esup Group=esup [Install] WantedBy=multi-user.target EOF systemctl enable tomcat-esup-nfc-tag.service |
...
| Bloc de code | ||||
|---|---|---|---|---|
| ||||
a2enmod rewrite
a2enmod ssl
a2enmod proxy_ajp
a2enmod proxy_http
a2enmod shib
a2enmod headers
|
...
Pour avoir un système de gestion de cartes fonctionnel, l'installation minimale consiste à installer :
...
consiste à installer :
- un serveur tomcat avec l'application web esup-nfc-tag-server sgc : Installation ESUP-NFC-TAG-SERVER
...
...
Pour enrôler et éventuellement encoder vos cartes vous avez également besoin d'un client esup-sgc-client : voir la documentation [archivé]
Installation materielle
...
- -SERVER
- un serveur tomcat avec l'application web esup
...
- -nfc-tag-server : ESUP-NFC-TAG-SERVER
L'ordre d'installation n'a pas d'importance. Toutefois, les deux applications étant dépendentes, la documentation d'installation d'ESUP-SGC comporte des configurations d'ESUP-NFC-TAG-SERVER
Pour enrôler et éventuellement encoder vos cartes vous avez également besoin d'un client esup-sgc-client : voir
Pour automatiser l'encodage des cartes il est possible d'utiliser une imprimante Zebra ZXP3. voir : Tuto robot encodeur basé sur une Zebra ZXP3
Pour plus d'informations sur les différentes possibilités d'édition, voir la page ESUP-SGC-Client et édition des cartes
...
