Aide pour Installer le serveur Z39.50 depuis le dossier zserver
Bonjour,
j'ouvre un second topic sur le sujet car le premier commençait à être trop long et un peu fouillis.
Objectif et résumé
Je veux installer le serveur Z3959 de PMB fourni dans le dossier /pmb/zserver/ afin que mon PMB puisse répondre à des requêtes Z39 d'autre SIGB.Je fonctionne sur un serveur (VPS) Debian10, je suis root.
J'ai déjà une installation de PMB7.3 fonctionnelle avec le paquet php-yaz compilé depuis yaz V5 pour les recherches Z39.
J'ai deux client Z3950 pour tester : un client PMB7 et la commande yaz-client depuis un terminal.
Installation en détail
# Se placer dans le home
cd ~
Attention, la compilation provoque des erreurs avec les versions récentes au moins à partir de le 2.0.34.
On compile avec la 2.0.9
wget http://ftp.indexdata.dk/pub/yaz/yaz-2.0.9.tar.gz# Décompression
tar xzf yaz-2.0.9.tar.gz#Déplacement dans le répertoire YAZ
cd yaz-2.0.9/# Remplacement du fichier ztest.c original par celui modifié par PMB
sudo cp /var/www/pmb_lourdes/zserver/sources/ztest.c ./ztest/ztest.c# Compilation
sudo ./configure# Configuration du serveur Z3950
sudo make
sudo make install
cd /var/www/pmb_lourdes/zserver
sudo nano zserver.ini
# Fichier de configuration pour le serveur z3950
# Parametres pour la passerelle http PMB
webpmb_host=localhost
webpmb_port=80
webpmb_script=/pmb_lourdes/admin/convert/export_z3950.php
# Parametres du serveur Z3950
z3950_database=lourdes
Note : On peut laisser le fichier zserver.ini dans le répertoire zserver ou le copier dans le home.
# Copie du fichier export_z3950.php
sudo cp export_z3950.php ../admin/convert/
Note : Pour résoudre des problèmes d'erreurs 404, on fait un lien symbolique du dossier javascript de PMB dans le dossier des exécutable yaz :
# Lien symbolique
sudo ln -s /var/www/pmb_lourdes/javascript/ /usr/local/bin/javascript
Problème rencontré
# Lancement du serveur pour test
sudo /usr/local/bin/yaz-ztest -c /var/www/pmb_lourdes/zserver/zserver.ini tcp:localhost:210
Starting server /usr/local/bin/yaz-ztest pid=11517
Adding dynamic Z3950 listener on tcp:localhost:210
Entering event loop.
Dans une autre console, je me connecte en tant que client
sudo /usr/local/bin/yaz-client tcp:localhost:210/lourdes
Connecting...OK.
Sent initrequest.
Connection rejected by v3 target.
ID : 81
Name : GFS/YAZ
Version: 1.13/2.0.9
Init response contains 1 otherInfo unit:
1: otherInfo unit contains 1 diagnostic:
1: code=2 (Temporary system error),
addinfo=''
Options: search present delSet scan sort extendedServices namedResultSets
Elapsed: 0.002815
Z>
Et j'ai ces messages dans la console serveur (si je me connecte avec PMB, j'ai le même message, seule la version de YAZ change) :
Starting session 1 from tcp:localhost
Got initRequest
Id: 81
Name: YAZ
Version: 2.0.9
param webpmb_host localhost
param webpmb_port 80
param webpmb_script /pmb_lourdes/admin/convert/export_z3950.php
param z3950_database lourdes
Can't handle configuration file
Negotiated to v3: srch prst del extendedServices namedresults scan sort
Connection rejected by backend.
[2] Temporary system error
Final timeout - closing connection.
Je ne pense pas que le problème soit du à la version de Yaz.
Il trouve le fichier de config, mais j'ai l'impression qu'il n'en fait rien.
J'ai essayé en modifiant le chemin de webpmb_script ou en utilisant export_z3959_new.php mais ça ne change rien.
Je pense qu'il l'ignore car si je ne lui spécifie pas de fichier ou si je spécifie un fichier vide, j'ai le même message d'erreur.
Je vous remercie pour l'aide que vous pourriez m'apporter.
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Il m'ont transmis une version de YAZ spécifique, la 2.0.11.
Je crains malheureusement que ce soit une version bidouillée par leurs soins.
Dans le home ROOT
# Décompression
tar xzf yaz-2.0.11.tar.gz
# Compilation
sudo ./configure
sudo make
sudo make install
OU
Copie directe de ztest
# Configuration du serveur Z39
mkdir /var/www/z3950
cd /var/www/pmb/zserver
cp zserver.ini /var/www/z3950/
cd /var/www/z3950
chown -R www-data:www-data z3950/
sudo nano zserver.ini
>
```
webpmb_host=127.0.0.1
webpmb_port=81
webpmb_script=admin/convert/export_z3950_new.php
```
**ATTENTION : pas de commentaire ni de retour chariot en fin de fichier (zserver.ini), il faut le supprimer avec un éditeur héxadécimal !**
# Copie du fichier export Z3950 PHP
sudo cp export_z3950.php ../admin/convert/
# ouverture du port entrant 210 en TCP
sudo iptables -t filter -A INPUT -p tcp --dport 210 -j ACCEPT
# Création de l'host apache
nano /etc/apache2/sites-available/z3950.conf
>
```
<VirtualHost *:81>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/pmb
Alias /lourdes "/var/www/pmb"
<Directory "/var/www/pmb">
Options +FollowSymLinks
AllowOverride all
Require local
</Directory>
ErrorLog /var/log/apache2/error_z3950.log
CustomLog /var/log/apache2/access_z3950.log combined
</VirtualHost>
```
**ATTENTION : chaque nouvelle base PMB interrogeable donnera lieu à un nouvelle entrée Alias dans ce fichier**
sudo systemctl reload apache2
# Modification du hosts de la machine
nano /etc/hosts
>
127.0.0.1 localhost z3950
# Lancement du serveur pour test
/usr/local/bin/yaz-ztest -c /var/www/z3950/zserver.ini tcp:XX.XX.XX.XX:210
# Équivalent service au reboot
sudo nano /etc/rc.local
>
```
#!/bin/sh -e
/usr/local/bin/yaz-ztest -c /var/www/z3950/zserver.ini -l /var/log/z3950.log tcp:XX.XX.XX.XX:210 &
exit 0
```
sudo systemctl reload apache2