Gérer une fichothèque avec le logiciel BDF

Commentaire sur la fiche : Installation de BDF sur Debian 13 avec Tomcat 11 et Java 21

Si la réponse à cette question ne vous parait pas claire ou si elle vous semble obsolète, n’hésitez pas à nous en faire part.

Et nous sommes preneurs également de toute correction de faute d’orthographe ou de grammaire...

Rappel du texte de la fiche :

Debian propose deux paquets pour l’installation de Tomcat tomcat11 et tomcat11-user. Avec le premier paquet, l’installation est complète et Tomcat 11 tourne comme un service. Le second paquet propose d’installer Tomcat pour un compte existant (pas de création de compte tomcat comme dans l’autre cas) et, de fait, est assez proche de ce que donnerait une installation manuelle de Tomcat. Nous allons voir la procédure pour les deux paquets, en commençant par tomcat11-user qui est plus didactique.

Dans les deux cas, nous allons configurer BDF pour avoir des fichothèques multiples sous le nom de mon_organisation. Nous ne nous basons pas sur le fichier .war car nous voulons une configuration susceptibles d’accueillir d’autres instances de BDF pour d’autres organisations.

Installation avec tomcat11-user

Pour cette variante, nous considérons que nous sommes connectés avec le compte debian.

Pour commencer, l’installation du paquet suffit pour toutes les dépendances (y compris Java).

sudo apt install tomcat11-user

Ce paquet comprend un utilitaire qui copie les fichiers qu’il faut dans le répertoire de notre choix (qui ne doit pas exister préalablement), ici /home/debian/tomcat11-instance/.

tomcat11-instance-create /home/debian/tomcat11-instance

On lance alors Tomcat, histoire de tester que ça marche mais aussi pour que le processus crée les quelques répertoires manquants (conf/Catalina/localhost/ notamment).

/home/debian/tomcat11-instance/bin/startup.sh

L’adresse [localhost:8080/] devrait alors retourner quelque chose (une erreur 404 mais avec la mention Apache-Tomcat). On peut alors arrêter Tomcat.

/home/debian/tomcat11-instance/bin/shutdown.sh

On crée le répertoire et les sous-répertoires qui contiendront à la fois le code de BDF et les données ; dans notre exemple, nous allons au plus simple, on verra dans le deuxième cas une répartition plus dans l’esprit de l’organisation du système.

mkdir /home/debian/bdf
cd /home/debian/bdf
mkdir backup cache conf etc extensions output run sync var webapps www

On crée ensuite le fichier de déclaration du contexte dans la configuration de Tomcat. C’est ce fichier qui signale à Tomcat l’existence de notre fichier BDF.

cd /home/debian/tomcat11-instance/conf/
nano Catalina/localhost/mon_organisation.xml

Le contenu du fichier est le suivant :

<Context docBase="/home/debian/bdf/webapps/mon_organisation">
  <Parameter name="bdfConfFile" value="/home/debian/bdf/conf/mon_organisation.xml"/>
  <!--<Parameter name="smtpFile" value="/home/debian/bdf/conf/mon_organisation-smtp.ini"/>-->
</Context>

La déclaration de l’accès SMTP est mis ici en commentaire pour mémoire (pour plus d’information, voir Configurer le serveur SMTP nécessaire pour l’envoi des fiches). Deux chemins sont indiqués dans ce fichier de déclaration : celui du code de BDF (l’attribut @docBase) et celui de la configuration de BDF (<Parameter name="bdfConfFile">).

Pour le code de BDF, on va aller le récupérer en ligne pour l’installer copier dans /home/debian/bdf/webapps/.

cd /home/debian/bdf/webapps/
wget https://bdf.exemole.fr/latest/bdf-latest-jakarta-bin.zip
unzip bdf-latest-jakarta-bin.zip
mv bdf-r5686 mon_organisation

bdf-r5686 est le nom de la version, il faudra adapter cette commande. À l’issue de ce processus, nous devons avoir un répertoire /home/debian/bdf/webapps/mon_organisation/ (la valeur de notre attribut @docBase vu plus haut) qui contient un répertoire WEB-INF/ avec le code de BDF conformément à l’architecture d’une application Tomcat.

Il ne reste plus qu’à configurer les chemins BDF en éditant le fichier indiqué précédemment par <Parameter name="bdfConfFile">.

nano /home/debian/bdf/conf/mon_organisation.xml

Le contenu du fichier est le suivant :

<bdf-conf>
  <Parameter name="multiBdf" value="true"/>
  <Parameter name="allowAuthentificationSharing" value="strict"/>
  <Parameter name="centralSphereList" value="admin"/>

  <etc-dir path="/home/debian/bdf/etc" append-context="true"/>
  <var-dir path="/home/debian/bdf/var" append-context="true"/>
  <dir key="var.cache" path="/home/debian/bdf/cache" append-context="true"/>
  <dir key="var.backup" path="/home/debian/bdf/backup" append-context="true"/>
  <dir key="var.output" path="/home/debian/bdf/output" append-context="true"/>
  <dir key="var.run" path="/home/debian/bdf/run" append-context="true"/>
  <dir key="lib.extensions" path="/home/debian/bdf/extensions" append-context="true"/>
  <dir key="custom.www" path="/home/debian/bdf/www"/>
  <dir key="custom.sync" path="/home/debian/bdf/sync"/>
</bdf-conf>

Les trois premières lignes d’éléments <Parameter> indique que BDF sera utilisé pour des fichothèques multiples avec une sphère centrale appelée admin. Les autres lignes indiquent les différents chemins. De fait, seuls <etc-dir> et <var-dir> sont obligatoires, les autres permettent de ventiler les sous-répertoires dans d’autres localisations à sa convenance.

L’attribut @append-context="true" indique que le nom du contexte (ici mon_organisation) doit être accolé pour obtenir le chemin final (le cache sera donc dans /home/debian/bdf/cache/mon_organisation/).

@key="custom.www" et @key="custom.sync" sont des chemins particuliers qui pourront être utilisés dans les exportations de données des fichothèques.

Il ne reste plus qu’à lancer Tomcat :

/home/debian/tomcat11-instance/bin/startup.sh

Pour vérifier que tout fonctionne, il faut aller sur http://localhost:8080/mon_organisation/ (ne pas oublier le / final). Normalement, devrait s’afficher le formulaire de configuration de l’administration centrale.

 

Dernier point important, avec cette variante, il faudra coder son propre code de gestion des logs car, sinon, ceux-ci s’accumuleront dans (/home/debian/tomcat11-instance/conf/)

Installation avec tomcat11

Pour cette variante, nous considérons que nous sommes connectés en tant que root.

On commence également par installer le paquet et toutes les dépendances, ce paquet crée également un utilisateur tomcat, c’est avec lui qu’est lancé le serveur Tomcat :

apt install tomcat11

Le service est lancé immédiatement, ce qui permet de tester sur http://localhost:8080/ mais il est préférable de l’arrêter le temps de la configuration :

systemctl stop tomcat11

Le contexte de la future application mon_organisation se déclare ainsi dans la configuration de Tomcat :

nano /etc/tomcat11/Catalina/localhost/mon_organisation.xml

avec le contenu suivant :

<Context docBase="/opt/bdf/webapps/mon_organisation">
  <Parameter name="bdfConfFile" value="/etc/bdf/conf-mon_organisation.xml"/>
  <!--<Parameter name="smtpFile" value="/etc/bdf/smtp-mon_organisation.ini"/>-->
</Context>

On voit que les chemins sont indiqués indiqués par l’attribut @docBase) et l’élement <Parameter name="bdfConfFile"> sont différents de notre premier exemple pour avoir une répartition plus conforme à l’architecture classique (la configuration dans /etc/, le code dans /opt/bdf/ et les données dans /var/local/.

Cela donnerait la création suivante de répertoires :

mkdir /etc/bdf /var/local/bdf /var/cache/bdf /opt/bdf

On crée également les sous-répertoires des données (pour simplifier, nous avons retirés les deux répertoires personnalisés www et sync) qui pourront être rajoutés plus tard.

cd /var/local/bdf
mkdir backup data output run

Deux des répertoires devront être accessibles en écriture par Tomcat, on les attribue à cet utilisateur :

chown -R tomcat:tomcat /var/local/bdf /var/cache/bdf

On installe le code de BDF dans /opt/bdf/ suivant une procédure analogue à la première variante.

cd /opt/bdf
mkdir webapps extensions
wget https://bdf.exemole.fr/latest/bdf-latest-jakarta-bin.zip
unzip bdf-latest-jakarta-bin.zip
mv bdf-r5686 webapps/mon_organisation

Reste maintenant la configuration de BDF à enregistrer dans le fichier indiqué par <Parameter name="bdfConfFile"> dans le contexte, soit /etc/bdf/conf-mon_organisation.xml

nano /etc/bdf/conf-mon_organisation.xml

avec le contenu

<bdf-conf>
  <Parameter name="multiBdf" value="true"/>
  <Parameter name="allowAuthentificationSharing" value="strict"/>
  <Parameter name="centralSphereList" value="admin"/>

  <etc-dir path="/etc/bdf" append-context="true"/>
  <var-dir path="/var/local/bdf/data" append-context="true"/>
  <dir key="var.cache" path="/var/cache/bdf" append-context="true"/>
  <dir key="var.backup" path="/var/local/bdf/backup" append-context="true"/>
  <dir key="var.output" path="/var/local/bdf/output" append-context="true"/>
  <dir key="var.run" path="/var/local/bdf/run" append-context="true"/>
  <dir key="lib.extensions" path="/opt/bdf/extensions" append-context="true"/>
</bdf-conf>

Il reste une dernière chose : modifier la configuration du service Tomcat pour lui donner des droits d’écriture sur certains répertoires. En effet, la protection du système est fixée à strict (ProtectSystem=strict.

Pour cela, on lance l’édition :

systemctl edit tomcat11

et on insère ces lignes au début du fichier :

[Service]
ReadWritePaths=/var/local/bdf/
ReadWritePaths=/var/cache/bdf/
Environment="UMASK=0022"
Environment="JAVA_OPTS=-Djava.awt.headless=true -Xmx1024M -XX:AutoBoxCacheMax=10000"

La redéfinition des deux variables d’environnement sont facultatives :

  • Environment="UMASK=0022" indique que les fichiers produits par le service seront accessibles en lecture pour tous.

  • Environment="JAVA_OPTS=-Djava.awt.headless=true -Xmx1024M -XX:AutoBoxCacheMax=10000" rajoute des options à Java -Xmx1024M indique la mémoire à attribuer au processus, -XX:AutoBoxCacheMax est un paramètre qui augmente le total des Integer mis en cache (BDF en fait évidemment une grande consommation).

Il ne reste plus qu’à lancer le service :

systemctl start tomcat11

Et si tout s’est bien passé, http://localhost:8080/mon_organisation/ (ne pas oublier le / final) propose le formulaire d’initialisation de l’adminstration centrale des fichothèques multiples.