Halle: Bemerkungen zur Harvest-Installation


Harvest ist ein Werkzeug zum gezielten Sammeln und Indexieren von Informationen aus dem Internet. Es besteht aus zwei Teilen; dem Gatherer, der Daten aus dem Netz einsammelt, und dem Broker, der die Daten aufbereitet und eine Suche ermöglicht.

Diese Seite soll Empfehlungen/Erfahrungen zur Havest-Installation innerhalb des Math-Net Projektes von Halle festhalten. Installationshinweise finden Sie auch in

Nicht alle dortigen Empfehlungen decken sich mit unseren Erfahrungen, können aber bei Problemen eventuell hilfreich sein. Für detailierte Anleitungen zur Installation, Konfiguration usw. sei stets auf das Harvest 1.4pl2 User Manual (http://harvest.transarc.com/afs/transarc.com/public/trg/Harvest/user-manual/) der Harvest-Entwickler verwiesen. Alle Angaben auf dieser Seite sind ohne Garantie auf Optimalität und Korrektheit. Bitte haben Sie Verständnis dafür, daß wir hier nicht alles genau erläutern können.

Harvest setzt ein UNIX-basiertes Betriebssystem voraus, eine Perl-Installation (i.allg. vorhanden) und einen laufenden HTTP-Server. Die Stellen der Installation, bei denen man die Hilfe des Superusers benötigt, werden mit 'root:' gekennzeichnet. Es sollte für das Harvestsystem einiger Speicherplatz zur Verfügung stehen.

Hinweis: Drucken Sie sich dieses Dokument am besten aus und lesen Sie alle Punkte. Für ein stabiles Harvestsystem spielt neben der Installation und dem Anlegen eines Harvestsystems auch die richtige Pflege und Konfiguration ein wichtige Rolle.


Grundinstallation | Anlegen eines Harvest-Systems | Bemerkungen zur Konfiguration| Pflege| Systemkonfigurationen
Grundinstallation:
  1. Quellen von Harvest Projektseite in Berlin holen -> Paket Math-Net 1.0 (Dieses Paket enthält die aktuelle Harvest-Version und Verbesserungen, die Mitarbeiter des Projektes vorgenommen haben.)

  2. (root:) user (z.B.  fi-adm ) anlegen, bzw. einen festlegen, der Harvest verwaltet und administriert

  3. root:
  4. in seperaten Verzeichnis das Harvest-Paket auspacken ->  make all 
    (häufiges Problem: ginstall fehlt: Quelle)

  5.  make install 

  6. nun Standard-Konfiguration mit MathNet-Patches installiert

  7. Bemerkung: Beim Paket Math-Net 1.0 ist uns folgender Fehler aufgefallen, der inzwischen eventuell schon behoben ist: im Script    $HARVEST_HOME/cgi-bin/BrokerAdmin.pl.cgi    bei   require 'socket.ph';    wurde nicht eingearbeitet, daß    $HARVEST_HOME/lib/socket.ph    verwendet werden muß. Wir haben dort nun direkt    require '/usr/local/harvest/lib/socket.ph';    eingefügt.

Anlegen eines Harvest-Systems:
  1. Das Programm /usr/local/harvest/RunHarvest unterstützt Sie weitestgehend beim Anlegen eines Harvest-Gatherer/Broker-Systems.

    Wir wollen an dieser Stelle versuchen, das Anlegen eines neuen Harvest-Systems an einem Beispiel zu beschreiben. (Die Angaben in [ ] im Script zeigen an, was als Eingabe genommen wird, wenn Sie nur 'enter' drücken. '...' steht, wenn wir hier nicht den ganzen Output des Programms angeben.)

      cd /usr/local/harvest/
      RunHarvest
           ...
      Do you want to continue? [yes]: 
           ...
      On which host does your WWW server run?:
       [www.mathematik.uni-halle.de]:                   eigener WWW-Server
           ...      
      On which port does your WWW server run? [80]:   Port 80 ist Standard 
                                                      sonst Zahl eingeben
           ...
      Please select a configuration [1]: 3 
      
      Enter a short description of this Harvest server [none]: Beispiel-Harvest
      Enter a one-word description of this Harvest server [none]: mathe-my   
      Where do you want to install the Gatherer?:
              [/usr/local/harvest/gatherers/mathe-my]:
      On which port should the Gatherer run? [8500]: 8600
      Where do you want to install the Broker?:
              [/usr/local/harvest/brokers/mathe-my]:        
      On which port should the Broker run? [8601]: 
      Enter a password for the Broker administrative commands []: my-pass
      Enter the list of URLs for the collections that you'd like to index.
      The URLs that you enter below will be classified as 'RootNodes' and will 
      be enumerated (e.g. by recursive FTP directory listings for FTP URLs).
      Terminate this list by entering a period ('.') on a line by itself.
      Enter URL: .
      
          ...
      
             
      Creating the Gatherer...
      Successfully created the Gatherer!
      Would you like to edit the Gatherer's workload specification?:
               [no]:yes
      
    Nun wird ein Editor aufgerufen, in dem Sie das Config File  mathe-my.cf  des Gatherers editieren können. Ein Beispiel ist:
      #
      #  mathe-my.cf - configuration file for the
      #  Beispiel-Harvest Gatherer
      #
      #  Created by  on Tue Feb 24 19:12:25 MET 1998
      #
      Gatherer-Name:  Beispiel-Harvest
      Gatherer-Port:  8600
      #
      Time-To-Live:   1309600
      Refresh-Rate:    604800
      #
      Top-Directory:  /usr/local/harvest/gatherers/mathe-my
     
      <RootNodes>
      # Enter URLs for RootNodes here
      http://www.mathematik.uni-halle.de url=5000 depth=10 access=http host=1
      http://www.mathematik.uni-halle.de/reports/shadows url=400 depth=1 access=http host=1
      http://www.informatik.uni-halle.de/ url=5000 depth=10 access=http host=1
      </RootNodes>
      
      <LeafNodes>
      # Enter URLs for LeafNodes here
      </LeafNodes>
      
    Verlassen Sie den Editor
      Successfully created the Broker!
      Running the Gatherer.
      WARNING:  For large sites, this may take several hours...
      Done running the Broker!
      Done.
     
         Your Harvest Servers are now running.  To access them, refer to
     
           http://www.mathematik.uni-halle.de/Harvest/brokers/mathe-my/summary.html
    
      
    Ihr Harvest-System mathe-my läuft nun. (Dies war nun ein Beispiel, d.h. obige URL werden Sie nicht finden.)

  2. Unter
       http://hostname/Harvest/brokers/mathe-my/summary.html
         
    erhalten Sie eine Übersicht zu Ihrem Broker und auch einen Verweis auf eine Suchmaske.

  3. Tip: Unter http://www.mathematik.uni-halle.de/Harvest/gatherers/ finden Sie einige Gatherer mit Ihren Konfigurationen.

    Insbesondere kann man im File  mathe-my.cf  auch Filter angeben (die Filter-Dateien sollten dann während des Editierens von  mathe-my.cf  - z.B. in einem zweiten xterm - nach  /usr/local/harvest/gatherers/mathe-my  kopiert werden).

  4. Wie kann ich mein Harvest abbrechen?: Es laufen nach Beendigung von RunHarvest im wesentlichen zwei Prozesse. Die PID des Gatherer-Daemon findet man in  /usr/local/harvest/gatherers/mathe-my/data/gatherd.pid   und die des Broker suche man in  /usr/local/harvest/brokers/mathe-my/broker.out  . Alternativ findet man die PID schneller mit   ps -ef | grep mathe-my   (bzw. ps -au , .. je nach System). Man kann nun Gatherer und Broker mit  kill -9 PID  killen und mit
     /usr/local/harvest/gatherers/mathe-my/RunGatherer    Daten neu sammeln
    	  
    oder
    	  
     /usr/local/harvest/gatherers/mathe-my/RunGatherd     Daten anbieten
    
    und
    	  
     /usr/local/harvest/brokers/mathe-my/RunBroker
    	  
    neu starten. Will man daß die Daten völlig neu geholt und aufgebaut werden, so führe man folgende Schritte vor dem Neustart aus:
     cd /usr/local/harvest/gatherers/mathe-my/
     rm -rf data tmp log.*
    
     cd /usr/local/harvest/brokers/mathe-my/
     make clean
    	  

  5. Bermerkung: Man kann auch Broker (mit Kommando  /usr/local/harvest/bin/CreateBroker  ) anlegen, die Daten mehrere Gatherer verarbeiten.
Bemerkungen zur Konfiguration:
  1. Von RunHarvest wird als Standard ein 'Incremental collections, with data compression' in der Datei  /usr/local/harvest/brokers/mathe-my/admin/Collection.conf  in der letzten Zeile
         www.mathematik.uni-halle.de 8600 3 --
    
    eingestellt. In bisherigen Harvest-Installationen (die hier angegebene haben wir diesbezüglich noch nicht getestet), war diese Einstellung nicht so günstig, einige Objekte wurden nach einiger Zeit nicht richtig gefunden. Ersetzt man die 3 duch eine 2, so wird 'Full collection each time, with data compression' durchgeführt. Man kann dies nachträglich ändern, falls man mit dem Broker unzufrieden ist. (Full collection verbraucht mehr Zeit.)

  2. Zur Gatherer-Config Datei  mathe-my.cf  sei noch bemerkt, daß

  3. Port-Addressen:

  4. Broker-Ausgabe schöner gestalten: durch Änderungen in der Datei
      /usr/local/harvest/cgi-bin/lib/BrokerQuery.cf  

  5. Spezielle Scripte (z.B. für Preprint-Broker) downloaden, anpassen und in entsprechende Verzeichnisse in Bezug auf   /usr/local/harvest/   stellen: siehe
      http://www.mathematik.uni-halle.de/pub/archiv/harvest/Special
    
    (Harvest/cgi-bin/MathDC2.pl.cgi mit Harvest/cgi-bin/lib/MathN.cf für Suchmaske auf http://www.mathematik.uni-halle.de/reports/ benötigt)
Pflege:
  1. Der Gatherer muß in gewissen Abständen die WWW-Welt neu durchsuchen. Dies steuert man über Cron-Jobs, die möglichst in der Nacht laufen. Diese Cron-Jobs können ebenfalls vom user  fi-adm  abgeschickt werden:

     crontab -e  öffnet einen Editor, indem man seine  crontab  editieren kann (eventuell zuvor z.B.  setenv EDITOR vi  setzen, um einen speziellen Editor einzustellen).

    Angenommen der Gatherer heißt mathe-my, hat eine 'Refresh-Rate' von einer Woche und eine 'Time-To-Live' von 2 Wochen. So sollte der Gatherer wöchentlich einmal gestartet werden. Dies wird z.B. durch folgenden Eintrag in der crontab erreicht (immer sonntags um 0.30 Uhr):

    30 0 * * 0 /usr/local/harvest/gatherers/mathe-my/RunGatherer
    	     
    Dies liefert jedesmal eine Mail an  fi-adm  mit den Meldungen des Gatherers. Hat man sich davon überzeugt, daß alles stabil läuft kann man diese Mail durch
    30 0 * * 0 /usr/local/harvest/gatherers/mathe-my/RunGatherer > /dev/null 2>&1
    	     
    vermeiden. Die 'Time-To-Life' ist auf die doppelte Zeit gesetzt, um bei einem eventuellen Rechnerausfall oder Scheitern des Cron-Jobs zu vermeiden, daß alle Objekte als veraltet (expired) gelöscht werden. Dies hat den Nachteil, daß eventuell alte Objekte noch als Ergebnis kommen. Verbesserungen hierfür uns bitte mitteilen !!!

  2. Die Files (z.B. name=mathe-my)
     /usr/local/harvest/gatherers/name/log.gatherer
     /usr/local/harvest/gatherers/name/log.error
     /usr/local/harvest/brokers/name/broker.out       u.a. Broker anfragen
     /usr/local/harvest/brokers/name/admin/LOG
           
    sind Files, in denen das Harvest-System seine Arbeit protokolliert (ruhig mal rein schauen ...). Das File
    /usr/local/harvest/brokers/name/admin/LOG
    kann über das Interface
    http://www-hostname/Harvest/brokers/name/admin/admin.html
           
    mit 'Rotate-Log' neu angelegt werden. Das Backup-File hiervon und auch die anderen aufgeführten Files sollten von Zeit zu Zeit gelöscht werden. Evantuell kann man sich hierfür auch ein Script bzw. crontab-Eintrag schreiben.

    z.B. kann man die Datei  /usr/local/harvest/gatherers/name/RunGatherer  wie folgt ändern:
      hinter  'export PATH'    ergänze man
    	   ./mvlog
    
    mit dem ausführbaren Script   /usr/local/harvest/gatherers/name/mvlog 
      #!/bin/csh
      #
      #
      cd /usr/local/harvest/gatherers/name/
      set today=`date +%y%m%d`
      mv -f log.gatherer log.gatherer.${today}
      mv -f log.errors log.errors.$today
      if (-f core) then
        rm core
        rm -Rf tmp/*
      endif
    
    Somit werden bei einem Neustart des Gatherers neue Log-Files angelegt (d.h. nach gewisser Zeit kann  log.*.*  gelöscht werden) und eventuell vorhandene core-Files gelöscht.
Systemkonfigurationen
  1. Es ist guenstig, wenn die Gatherer-Daemonen und der Broker als user  fi-adm  laufen, denn dann kann dieser auch beliebig umkonfiguieren ohne root-Rechte zu besitzen. Daher wurde eine Datei
      -rwxr-xr--   1 fi-adm   fi-adm      1201 Feb 23 11:05 fi-adm-Harvest
    
    angelegt (bei uns in  /usr/local/harvest/bin  gestellt) mit dem Inhalt (Beispiel aus Halle, wo für die Region einige Systeme laufen):
          #!/bin/sh
          ## File: cantor:/usr/local/harvest/bin/fi-adm-Harvest
          ## 23.02.98 /CE
          #
          # Starten aller relevanten Gatherer und Broker als  user  fi-adm
          #
          # Dieses File wird von /etc/rc2.d/S98startHarvest beim Reboot
          # aufgerufen. Nicht loeschen!
          #
            /usr/local/harvest/gatherers/report/RunGatherd
            /usr/local/harvest/brokers/report/RunBroker
            /usr/local/harvest/gatherers/uni-halle/RunGatherd
            /usr/local/harvest/brokers/uni-halle/RunBroker
            /usr/local/harvest/gatherers/mathe-halle/RunGatherd
            /usr/local/harvest/brokers/mathe-halle/RunBroker
            /usr/local/harvest/gatherers/mathe-jena/RunGatherd
            /usr/local/harvest/brokers/mathe-jena/RunBroker
            /usr/local/harvest/gatherers/mathe-ilmenau/RunGatherd
            /usr/local/harvest/brokers/mathe-ilmenau/RunBroker
            /usr/local/harvest/gatherers/mathe-darmstadt/RunGatherd
            /usr/local/harvest/brokers/mathe-darmstadt/RunBroker
            /usr/local/harvest/gatherers/mathe-frankfurt/RunGatherd
            /usr/local/harvest/brokers/mathe-frankfurt/RunBroker
            /usr/local/harvest/gatherers/mathe-kassel/RunGatherd
            /usr/local/harvest/brokers/mathe-kassel/RunBroker
            /usr/local/harvest/gatherers/mathe-giessen/RunGatherd
            /usr/local/harvest/brokers/mathe-giessen/RunBroker
            /usr/local/harvest/gatherers/mathe-marburg/RunGatherd
            /usr/local/harvest/brokers/mathe-marburg/RunBroker
          exit 0
      
          
    angelegt.

  2. root: Harvestsystem muß beim Reboot wieder starten. Daher muß im Startup-Script (je nach dem wie es auf dem Rechner heißt, bei uns z.B.  /etc/rc2.d/S98startHarvest  jeweils der Gatherer-Daemon und der Broker gestartet werden.

    Damit diese als user fi-adm laufen verwende man im Startup-Script z.B. folgendes Kommando:

     su - fi-adm -c /usr/local/harvest/bin/fi-adm-Harvest > /dev/null  
        

Bitte benachrichtigen Sie uns bei Hinweisen, die auf diese Seite aufgenommen werden sollten.
C. Eichler-Liebenow, Math-Net Projekt in Halle

Last modified: Mon May 11 15:48:50 1998 ,
http://www.mathematik.uni-halle.de/MathNet/harvest.local.html