Aide pour Installer le serveur Z39.50 depuis le dossier zserver

novembre 2020 modifié dans Installations
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 ~
# Téléchargement de la librairie YAZ (http://ftp.indexdata.dk/pub/yaz/)
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
sudo make
sudo make install
# Configuration du serveur Z3950
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.

Réponses

  • Bonjour, votre problématique m'intéresse, j'ai la même demande par un client (activer un serveur Z39 sur son instance PMB), êtes-vous arrivé(e) à vos fins et si oui .. comment ?
    Merci par avance
  • Oui, j'ai réussi avec l'intervention (payante) de PMB Service.
    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.

    Voici mes notes :

    **AVEC LA VERSION DE YAZ de PMB**

    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


Connectez-vous ou Inscrivez-vous pour répondre.