allegro + VuFind

Installation VuFind 2.x unter Windows (Aug. 2014/Jan. 2015/März 2016)

(Beruht auf der Anleitung von vufind/org)

Die englische Fassung wurde gestrafft, präzisiert und wo nötig ergänzt. Zu den einzelnen Abschnitten wurden jeweils während der Arbeiten Notizen geschrieben, die im zweiten Teil gesammelt sind und auf die vom ersten Teil verlinkt wird. Viele Stolpersteine konnten in Korrespondenz mit dem VuFind-Entwickler, Demian Katz, beseitigt werden, dem hiermit ausdrücklich gedankt sei, wie auch verschiedenen Kollegen in Deutschland, die mit ihren Erfahrungen geholfen haben.
Praktisch durchgeführt wurde alles am Beispiel der Katalogdaten des Deutschen Historischen Instituts Warschau (Anwender seit 20 Jahren), wo man diesen Katalog inzwischen als Ablösung des bisherigen PHPAC in Betrieb hat. Zudem wurde, neben weiteren Modifikationen, auch der VuFind-Index des GBV (sog. "findex") angebunden.
Die Dokumentation zur Vorversion kann evtl. mit herangezogen werden, obwohl für einen Neubeginn nur die aktuelle Version zu empfehlen ist. Für die Version 2.x wurde bewußt ein neuer, ballastfreier Anfang gemacht und hierbei nur so knapp wie möglich genau das protokolliert, was zum Erstellen einer funktionsfähigen Instanz gebraucht wird. Für weitergehende lokale Anpassungen kann die alte Doku immer noch Hilfe bieten.
Normdaten sind noch nicht einbezogen, obwohl diese Möglichkeit besteht.
Tip: Die offizielle Doku (englisch) ist ein Wiki mit Suchfunktion.

Wichtiger Hinweis: Die Umwandlung der allegro-Daten (s. 10.) und ihre Bereitstellung für VuFind ist das geringste Problem, auch das regelmäßige Updating ist einfach und geht schnell. Die notwendigen Parameter (Wandlung allegro-Daten -> MARC-Daten) sind vorhanden und bei Bedarf leicht anzupassen.
Der sog "Index" des VuFind-Systems ist in keiner Weise mit einem allegro-Index vergleichbar. Er besteht aus einer Anzahl Dateien, darunter eine, in der die kompletten komprimierten MARC-Datensätze stehen, die man in VuFind dann in der Intern-Anzeige zu sehen bekommt, s.a. 11a. Direktes Bearbeiten in den Solr-Daten ist nicht möglich, jedoch kann man Datensätze auch einzeln neu einspeisen und ältere dadurch ersetzen.
VuFind kann nur in einem Solr-Index suchen, auch nicht z.B. in einem Pica-Index. Daher ist das Umwandeln und "Indexieren" in jeder Umgebung erforderlich, und das bedeutet auch, daß ein VuFind-Index nicht ständig aktuell sein kann. Ein Updating ist daher in jedem Fall notwendig. Mit allegro ist es gelöst: Jederzeit kann man die allegro-Logdatei umwandeln und einspeisen. Nur die Anzeige von Statusdaten ("verliehen" etc.) würde noch zusätzliche PHP-Skripte erfordern (eine sog. DAIA-Schnittstelle). Für Präsenzbibliotheken ist dies kein Thema.


ERSTER TEIL : Installation und Konfiguration der Komponenten

0. Erfordernisse

Sehr wichtig: MySQL auf derselben Maschine 

Die Seite requirements beachten für die Fremdpakete! Andere Versionen auf eigenes Risiko...

Installation mit Xampp ist etwas einfacher, aber nicht für Produktionsumgebung empfohlen.

Hier wird angenommen, daß das VuFind-Paket in c:\vufind liegt und Apache 2.4 in c:\apache24. Das ist nicht zwingend.


1. Download VuFind    -->Notizen

Von: http://vufind.org/downloads.php.  Das .zip-Paket ist für Windows zu empfehlen. Alles entpacken in c:/vufind.
Eingriffe werden nötig in den Ordnern [und um diese muß man sich bei Versionswechsel kümmern, d.h. die Eingriffe nachvollziehen]

local: Lokale Versionen gewisser Dateien, z.B. die httpd-vufind.conf für Apache, und aus config die vufind/config.ini
import:
wichtig: marc.properties. (Hier auch die jetty-Dateien, diese aber ohne Änderungsbedarf)
public: Nur die Startdatei  index.php! (Wird automatisch erstellt)
solr:
in biblio/index  liegen die Solr-Indexdaten
module: z.B. VuFind/src/VuFind/RecordDriver/SolrDefault.php  sog. getter-Funktionen für MARC
        oder  .../SolrMarc.php   (ist umfassender! "extends SolrDefault")
themes:  in bootstrap3/templates/RecordDriver/SolrDefault  sind die Datenanzeige-Templates
               bis Version 2.3:
blueprint statt bootstrap3, nun aber obsolet.

Achtung: In
config nichts ändern, sondern zu ändernde Dateien nach local kopieren, in den jeweils entsprechende Unterordner dort.
Am allerwichtigsten ist
local\config\vufind\config.ini  mit sehr vielen, z.T. unverzichtbaren lokalen Einstellungen, z.B. auch theme.
Nach Änderung: Apache neu starten, nicht VuFind, das liest diese Datei gar nicht!!! Sie ist nur für Solr wichtig.

Das gesamte Paket (ohne Apache und MySQL, PHP und Java) hat gut 6000 Dateien in gut 3400 Verzeichnissen. Die meisten werden wohl nicht wirklich gebraucht, und nur um sehr wenige muß man sich kümmern - diese werden nachfolgend behandelt.

2. Webserver: Apache 2.4  --> Notizen

Von: http://httpd.apache.org/download.cgi. Die typischen Optionen des Installationsassistenten sollten ok sein.
Oder:  
http://www.apachehaus.com/cgi-bin/download.plx

Apache als Dienst installieren, damit es beim Hochfahren des Rechners automatisch startet. 

In der Konfig-Datei  conf\httpd.conf  das # vor dieser Zeile wegnehmen:

 LoadModule rewrite_module modules/mod_rewrite.so 

 (d.h. den mod_rewrite Modul aktivieren)

Und auch diese Zeile muß sein:  (index.php heißt die Startdatei)

 DirectoryIndex index.html index.php

Fehlersuche: Wenn z.B. ein ganz leeres Ergebnis im Browser ankommt, dann im Apache-Ordner in  logs/error.log  nachsehen

Hinweis: Im Apache-Bereich liegen keine Dateien für VuFind, die liegen alle unter c:\vufind
Anm.: Wenn es Datensätze gibt mit '/' in der Idnr, dann 
AllowEncodedSlashes on  im Abschnitt <VirtualHost> der httpd.conf !


3. MySQL 5.6   --> Notizen

Von:  http://dev.mysql.com/downloads/mysql/5.0.html#downloads. Typische Optionen des Install-Assistenten übernehmen. Wenn man ein root-Paßwort setzt,  (keine schlechte Idee), dieses unbedingt notieren.
In der MySQL-Datenbank liegen keine Katalogdaten, sondern die Daten registrierter Nutzer, deren "Tags" u.a.

Wichtige Datei:  libmysql.dll

Das library file libmysql.dll ist nötig. Fehler wie "missing database driver" kommen, wenn Windows es nicht finden kann. Wenn es solchen Ärger gibt, dann:

1.)  libmysql.dll  in den  PHP Ordner legen und diesen in den Systempfad eintragen (wie unten beschrieben beim Java JDK ).

2.) Wenn libmysql.dll nicht im PHP-Ordner, könnte es im MySQL-Ordner sein (z.B. C:\Program Files\MySQL\MySQL Server 5.0\bin). Es kann helfen, diesen Ordner in den PATH zu setzen. Warnung: Wenn die Datei im PHP- und im MySQL-Ordner ist, dann ist die PHP-Version wahrscheinlich die korrekte und die von MySQL macht Probleme. Evtl. den MySQL-Ordner aus dem PATH herausnehmen, damit's läuft.


4. PHP 5.5   --> Notizen

Download von http://windows.php.net/download/. Die "thread safe" Version wählen, wenn man nicht gute Gründe dagegen hat.
Empfehlung: Den Ordner  php  an den Apache-Ordner hängen. (Nicht zwingend)

Wichtig: PHP und Apache kooperieren nur, wenn sie beide für 32-bit  bzw. 64-bit sind und vom selben Compiler, z.B. VC9. 

Geeignete Version von Apache wählen, starten und den Konfig-Pfad angeben (z.B. c:\Apache24\conf\); Keine Panik bei Fehlermeldung – Man kann später manuell korrigieren (siehe unter 7. VuFind konfigurieren weiter unten).

Im Abschnitt "Choose Items to Install" :  PEAR installieren lassen (unter Extras) und folgende extensions (unter PHP / Extensions):

  • GD2 (optional, empfohlen wegen besserer Anzeige der Covers)
  • intl (Internationalization)
  • LDAP (optional)
  • Multi-Byte String (optional, aber empfohlen)
  • MySQL
  • MySQLi
  • PDO (mit MySQL)
  • XSL (zur Handhabung von XML-Daten)

Environment

Die PATH-Variable ergänzen um  PHP : z.B. an PATH die Angabe ;c:\www\apache24\php anhängen. Dann ist überall der Befehl  php  möglich, um PHP-Skripte zu starten. Zu Environment-Variablen siehe Umgebungsvariablen ändern.

Anm.

  • Wenn Komponenten bei der ersten Installation vergessen wurden, einfach den Installer nochmal starten für die betr. Module.
  • PHP installiert u.U. Erweiterungen ohne die nötigen library files. Start von PHP wird dann  pop-up-Fehlermeldungen bringen. Dann die php.ini  editieren (in c:\...\PHP\, auch über die Start Menu-Abkürzung) und auskommentieren (; davorsetzen) was stört (zu finden in Zeilen mit =php_*.dll). Wenn man davon tatsächlich was braucht, dann diese Dateien per Google ausfindig machen.


5. Java 7   --> Notizen

JDK von: http://java.sun.com/javase/downloads/?intcmp=1281. Die Default installation options kann man alle nehmen.

Eine System-Environment-Variable namens JAVA_HOME setzen auf den Pfad zur Java Installation, wo  bin\java.exe  liegt, z.B.

z.B. JAVA_HOME=c:\programme\java\jre1.7.0_21

(oder z.B. c:\Program Files (x86)\Java\jdk1.x.y_z). Siehe dazu Umgebungsvariablen ändern.

 

6. VuFind initialisieren : Das Install Script    --> Notizen

  •   cmd  (DOS-Fenster).
    • In Windows 7 einfach cmd in das Suchfeld ganz unten links eingeben.
      U.U. rechtsklicken auf den "cmd"-Befehl und "Als Administrator starten", damit alles mit den richtigen Berechtigungen versehen wird.
  • Weiter im DOS-Fenster:  cd c:\vufind
  • Das Skript starten: php install.php  eingeben  und Enter.

Die Fragen mit den Defaults beantworten (Enter und sonst nichts) – Man kann das sonst auch später wiederholen, um Änderungen zu machen.

7. VuFind konfigurieren   --> Notizen

7.1 Environment-Variablen setzen

VUFIND_HOME und VUFIND_LOCAL_DIR setzen. Bei Unklarheiten siehe Umgebungsvariablen ändern

7.2 VuFind mit Apache verbinden

Die  httpd.conf  bearbeiten. Folgendes muß rein:

Include c:/vufind/local/httpd-vufind.conf (Ändern, wenn die Datei woanders liegt).

Apache nach Änderungen neu starten. 

Gegen Netz-Timeouts folgende Einträge in  php.ini machen oder in der  http-vufind.conf :

 php_value default_socket_timeout 25

 php_value max_execution_time 30

Kleinere oder größere Werte einstellen (beide in Sekunden), abhängig vom Environment. Das socket timeout sollte kleiner sein als die max execution time. Das ist 100% Windows-spezifisch – auf *nix-Plattformen unnötig.

7.3 Troubleshooting Apache

Debugging-Tips gegen "Forbidden"-Meldungen u.ä.:

Wenn die PHP-Installation nicht automatisch PHP zur Apache Konfiguration ergänzt hat, dann in der  httpd.conf  folgende Zeilen einfügen, oberhalb der "Include"-zeile für http-vufind.conf:

 LoadModule php5_module "c:\Program Files\PHP\php5apache2_4.dll" ... oder 2_2.dll, je nach Apache-Version!

 AddType application/x-httpd-php .php

 PHPIniDir "c:\...\PHP\"

(Pfadangabe für PHP muß natürlich stimmen)

Die Apache logs können helfen - zu finden im Windows-Startmenü unter  Apache HTTP Server / Review Server Log Files

mike_beccaria (Jun 09) : Add “Options All” to the httpd-vufind.conf file if you are getting an “access Denied” on the homepage and a “Directory index forbidden by option directive” error in the apache error.log.

demiankatz (Jul 09) : if the PHP install added multiple PHPIniDir and LoadModule entries to the bottom of httpd.conf and this is preventing Apache from starting, comment out the duplicate ones and leave only the first pair intact.

 

7.4 Solr konfigurieren

Die komplette, in Java geschriebene Solr-Software von Apache ist im VuFind-Paket enthalten. Darum braucht man sich nur sehr wenig zu kümmern:

Die config files für jeden Solr Index sind u.U. auf relative Pfade gesetzt. Unter Windows kann Solr u.U. die  Indexdateien nicht finden. Dann gibt's keine Ergebnisse. Solr dann umkonfigurieren mit den expliziten Pfaden für die Indexe:

In diesen Dateien stehen alle Einstellungen für Solr:

 c:/vufind/solr/biblio/conf/solrconfig.xml

 c:/vufind/solr/authority/conf/solrconfig.xml

 c:/vufind/solr/stats/conf/solrconfig.xml

Darin diese Zeilen finden:

 <dataDir>...

Darin evtl. die relativen Pfade ändern auf:

 c:/vufind/solr/biblio hier liegen die Indexdaten!

 c:/vufind/solr/authority

 c:/vufind/solr/stats

Beispiel:

 <dataDir>${solr.data.dir:./solr/biblio}</dataDir> 

ändern in:

 <dataDir>c:/vufind/solr/biblio</dataDir> 

7.5 Solr testen 

Doku:  https://wiki.apache.org/solr/CommonQueryParameters

Damit kann man per Browser direkte Abfragen machen, z.B.
 
http://vufind...:8080/solr/biblio/select/?q=SUCHWORT&rows=20&start=0&indent=yes&qf=allfields&qt=dismax&fl=*%2Cscore&wt=json

oder den Teil ab q=... in die Solr-query-Konsole eingeben, --> Notizen 9a.
Auf dem "Dashboard" (...:8080/solr/# ) kann man unter "Logging" evtl. Fehlermeldungen finden, wenn Abfragen nicht oder falsch laufen,

8. VuFind starten

Normalerweise:   vufind start  eingeben in  c:\vufind. Dieses Fenster dann nicht schließen! Man sieht dort ständig die protokollarische Anzeige der Aktivitäten.
Wenn man's in einem Remote Desktop macht, dann den RDT "Trennen", nicht "Schließen".
Leider kann man es nicht als Dienst starten. (In Linux dagegen geht es als Daemon)

9. Abschließendes Checking   --> Notizen

Nach erfolgreicher Installation sieht man eine Seite mit dem Titel "Auto Configure" 

Sonst in einem Browser zu dieser URL gehen:

http://your-server-name/vufind/Install/Home

(Hier statt  your-server-name  die Startadresse, die man für VuFind vorgesehen hat; statt  vufind  den eigenen Pfad, wenn man beim Installieren einen anderen gewählt hat).

z.B.  http://vufind.allegro-c.de:81/vufind/Install/Home

Dann erscheint   Basic configuration... OK  usw., u.U. "Fehlgeschlagen" statt "OK", dahinter dann repariert : da drauf klicken (es müßte eigentlich "reparieren" lauten!

Troubleshooting (Debugging)  (s.a. unten 1b.)

Wenn nur leerer weißer Schirm oder "Es ist ein Fehler aufgetreten", dann

  • Apache error log checken – siehe oben Troubleshooting Apache .
  • Wenn's nicht hilft: in  c:/vufind/local/httpd-vufind.conf  diese Zeile aktivieren 
    SetEnv VUFIND_ENV development
    Apache-Restart : Entwicklermodus, der hilfreiche Fehlermeldungen liefern könnte, aber auch Hinweise wie
       Notice: Undefined index: title_sub in  C:\vufind\module\VZG\src\VZG\RecordDriver\SolrVZGRecord.php on line 79
    was keinen Fehler darstellt - im aktuellen Satz fehlt hier das Feld  title_sub
  • Noch dazu kann man  debug = true  setzen in der config.ini (s.u. 1.b). Dann werden DEBUG-Meldungen sichtbar. Wenn das dann eine URL ist, die an Solr gerichtet ist, dann diese kopieren und direkt in den Browser eingeben. Aus den Meldungen von Solr kann man u.U. was entnehmen.
  • PHP-Fehler sichtbar machen? In php.ini setzen:
    display_errors = On

Noch kein Erfolg? Dann -->  support page.

Hinweis:

  • Um die VuFind MySQL-Datenbank zu setzen, braucht man das root Passwort, das bei der MySQL-Installation gegeben wurde.

Konfiguration festschreiben

Sobald alle Einstellungen stimmen, sieht man einen Link "Disable Auto Configuration" auf der Seite "Auto Configure". Darauf klicken, um das Installskript zu blockieren. Falls es doch nochmal gebraucht wird, manuell in der  config.ini  ändern.

10. Import Records    --> Notizen
MARCEDIT downloaden und installieren von  http://marcedit.reeset.net
 
(Unter "Download from oregonstate.edu"  
Latest Version 32bit  DOWNLOAD - Keine anderen Buttons klicken)
Siehe dazu auch:  http://www.allegro-c.de/doku/vufind/marcedit.htm

Ab Version 6.0 hat MARCEDIT auch ein Konsolprogramm namens  cmarcedit.exe. Um damit z.B. eine Datei  daten.mrk in eine echte MARC-Datei namens daten.mrc zu wandeln, startet man es so:   cmarcedit -make -s daten.mrk -d daten.mrc .  
Mit  cmarcedit -h  erhält man Hilfe.

Zum eigentlichen Importieren im Sinne von "Einspeisen" (Schritt 3.) muß VuFind in einem eigenen Fenster gestartet sein! Siehe 8.

a) Daten erstmals importieren

  1. Daten aus allegro-Datenbank als MARC-Datei  daten.mrk  exportieren mit  marctxt.apr
  2. Befehl  daten.mrk  geben und  "File / Compile file into MARC". Ergebnis:  daten.mrc (Daten im echten MARC-Format)
    Oder ab Version 6.0 wahlweise so:     cmarcedit -make -utf8 -s daten.mrk -d daten.mrc
  3. Diese Datei verschieben nach  c:\vufind  und dann dort in einem eigenen DOS-Fenster :   import-marc daten.mrc
  4. Der Vorgang läuft dann automatisch ab, man sieht Zwischenmeldungen auch in dem DOS-Fenster, wo VuFind gestartet wurde
Wenn dabei Fehler kommen, dann den Befehl mit Option  --test-only  geben, um genauere Fehlermeldungen zu erhalten.

b) Updating
  1. Die Log-Datei mit  log2alg in eine .alg verwandeln:
      
    log2alg cat  im Datenordner geben, dann wird aus cat.log die Datei  cat.alg  
  2. Die cat.alg mit  marctxt.apr in  log.mrk  exportieren: srch -dcat.alg -emarctxt=log.mrk
  3. log.mrk  in log.mrc wandeln (siehe a.2) mit cmarcedit -make -s log.mrk -d log.mrc
  4. Dann diese mit  import-marc log.mrc  einspeisen


11. Anzeige und Indexierung anpassen
: Siehe dazu die -->Notizen

 

12. Logo, Standorte, Sprachen : Siehe dazu die -->Notizen

 

Hinweis

Wenn VuFind's "Wikipedia author information module" genutzt wird (das ist aktiviert in config.ini), dann bei Problemen Apache's "heap size setting" erhöhen in  httpd.conf:  (For more details, see the VUFIND-630 JIRA ticket.)

<IfModule mpm_winnt_module>
   ThreadStackSize 8388608
</IfModule>

 

Appendix: Umgebungsvariablen ändern bei Win'7

  • "Start" Menü
  • Rechtsklick auf “Computer” 
  • "Eigenschaften"
  • "Erweiterte Systemeinstellungen"
  • Button "Umgebungsvariablen"
  • Neue Variable: "Systemvariablen" / "Neu"
  • Eine Variable ändern: darauf doppelklicken


******************************************************************************


ZWEITER TEIL : Notizen (konkrete Erfahrungen)

Wichtig: Alle Dateien notieren, in denen man Änderungen gemacht hat.



1. Download VuFind:
Entpacken in c:\vufind
Dann zuerst einige weitere Voraussetzungen schaffen, s. 2.-5.

  Danach Initialisieren: s. 6.  (einige Dateien automatisch vorbereiten etc.)

Wichtig f. Datenimport:  ./import/marc.properties + marc_local.properties
        Darin (marc_local) auch Bibliotheksname und Adresse!!!
        Änderung wird nur wirksam, wenn man die Daten alle neu importiert!!!

1a.
System-Umgebungsvariable setzen:
           Systemvariablen (!)
           Neu:  VUFIND_HOME=c:\vufind
           Neu:  PHP_HOME=c:\apache24\php


1b. Viele wichtige Einstellungen in
C:\vufind\local\config\vufind\config.ini
  (ACHTUNG: local! Denn c:\vufind\config ... enthält nur die gelieferten Standardversionen)
  Nach Änderungen:  Apache neu starten

Einige wichtige Sachen darin:

autoConfigure = false    after auto-configuration is complete

[Site]
email  = name@abc.xyz.de
language = de
timezone = "Europe/Berlin"

[Database]
database        = mysql://root@localhost/vufind/

  Falls man eine DAIA-Schnittstelle hat:
 driver = "DAIA"
   wenn ILS offline, gelbe Meldungsbox beim Start: "Wegen Wartungsarbeiten ..."
   (in  themes/bootstrap3/templates/search/home.phtml)
   Ohne driver keine Statusabfrage beim ILS:
 driver = "noILS"
   (der wird als default geladen, wenn der erstgenannte nicht existiert!)
   (Es kommt dann nur auf dem Startbild eine Wartungs-Warnmeldung, s.o.)
    Verhindern: in  config/NoILS.ini  den Wert  mode = ils-none  setzen)
   Die Drivers liegen in  module/VuFind/src/VuFind/ILS/Driver
   GBV hat dafür den driver DAIA.php entwickelt
   Ein Driver  allegro.php  wäre noch zu entwickeln ...

  Fuer Logging: diese Zeilen und zugehörige aktivieren, wenn MySQL zur Speicherung gewünscht
; CREATE TABLE log_table ( id INT NOT NULL AUTO_INCREMENT,
; [Logging
  Sonst: Wenn eine Datei  vufind.log  entstehen soll:

[Logging]
file           = /vufind/vufind.log:alert,error,notice,debug
 

[Spelling]
enabled = false   statt "true" falls sonst Fehler von Solr kommen  

  Link resolver ...

[OpenURL]
;url             = "http://openurl.myuniversity.edu/sfx_local"
resolver        = EZB

; für Covers:
[Content]
coverimages     = Google,OpenLibrary

[System]
debug = true    nur setzen, um Testmeldungen zu kriegen
   insbes. die Suchbefehle, die zu Solr gehen und Fehler verursachen

[Site]
defaultRecordTab= Description
Dann wird der Tab "Beschreibung" automatisch geöffnet, unter der Satzanzeige, statt "Exemplare"

[Languages]
alle gewünschten aktivieren, Reihenfolge nach Wunsch ändern

------------------------------------------------

2. Apache
// Download:  http://www.apachehaus.com/cgi-bin/download.plx
//            Version 2.4.x VC9 , httpd-2.4.10-x86.zip
// requires  Microsoft Visual C++ 2008 SP1 Redistributable Package (x86)
// oder      Visual C++ Redistributable for Visual Studio 2012 Update 4
//  download from http://www.microsoft.com/en-us/download/details.aspx?id=5582

// ODER zum Testen: c:\xampp\apache\bin\httpd.exe

// Wichtigste Datei:
c:\Apache24\conf\httpd.conf
  darin aktivieren:
LoadModule rewrite_module modules/mod_rewrite.so

  Neue Zeile:

ScriptAlias /cgi-bin/ "c:/Apache24/cgi-bin/"

  index.php hier einfügen:
<IfModule dir_module>
    DirectoryIndex index.html index.php
</IfModule>


Define SRVROOT "/Apache24"
ServerRoot "${SRVROOT}"

DocumentRoot "c:/Apache24/htdocs"
<Directory "c:/Apache24/htdocs">
 ...

<Directory "c:/Apache24/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>


LoadModule php5_module C:/Apache24/php/php5apache2_4.dll
  and
PHPIniDir "C:/Apache24/php"

 <IfModule php5_module>
     AddHandler application/x-httpd-php .php
     PHPIniDir "c:/Apache24/php/"
 </IfModule>

Erst wenn das alles stimmt, kann folgendes auch klappen:

Include C:/vufind/local/httpd-vufind.conf
  Darin steht ein Alias fuer das eigentliche Startverz., z.B.  c:\vufind\public

Firewall:
  Programm Apache... / Eigenschaften // Aktion: Zulassen für Web

------------------------------------------------


3. MySQL  server. Muß als Dienst laufen, wird nicht von VuFind selber gestartet
Dienst-Startbefehl z.B.:
"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld" --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.6\my.ini" MySQL56
Zum Installieren:
  mysql-installer-web-community-5.6.19.0.msi
     Empf.: www.softpedia.com
  Man muss einen account bei Oracle einrichten, kostenlos
  Option "Server only" wählen
  Root password wählen und sorgfältig aufbewahren!!
  Dienstname: Default MySQL56
  Wird dann automatisch als Dienst eingerichtet und gestartet
  Prüfen mit   sc query mysql56

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysqld"
  --defaults-file="C:\ProgramData\MySQL\MySQL Server 5.6\my.ini" MySQL56

Evtl.:
C:\Program Files\MySQL\MySQL Server 5.6\lib\libmysql.dll
  copy to 
Und in der /vufind/local/config/vufind/config.ini  muss stehen:
[Database]
database = "mysql://vufind:password@127.0.0.1/vufind"
ACHTUNG: Das wirkt sich sofort aus! Wird bei jedem Zugriff gelesen.

Um das Passwort des Nutzers vufind zu ändern:

Am mysql prompt:
GRANT SELECT,INSERT,UPDATE,DELETE ON vufind.* TO 'vufind'@'localhost' IDENTIFIED BY 'your-desired-password' WITH GRANT OPTION;

FLUSH PRIVILEGES;

und das Pw auch eintragen in  vufind/local/.../config.ini

------------------------------------------------


4. PHP 5.5
from:
http://windows.php.net/downloads/releases

  Paket: php-5.5.13-Win32-VC11-x86.zip

Entpacken nach  c:\Apache24\php

Achtung:  rename php.ini-production  to  php.ini

Systemeigenschaften/Systemvariablen:
 
Hier zuerst Punkt 6:  php install.php

PEAR installieren:
get  http://pear.php.net/go-pear.phar to c:\Apache24\php
    then
php go-pear.phar
  dazu muß vorhanden sein:  msvcr110.dll  auf \windows\system32 oder im PHP-Ordner.
  (Win64: msvcr110.dll 875.472 Bytes von 2014)

Wichtig: korrekter include_path, z.B.
include_path = ".:/www/php/includes"


Installierte Module checken:   php -m

In php.ini aktivieren: (Pfad evtl. ändern!)

extension=c:/apache24/php/ext/php_mysqli.dll
oder  extension=php_mysqli.dll

zend.multibyte = On

extension=php_gd2.dll

extension=php_xsl.dll

extension=php_mbstring.dll
extension=php_exif.dll      ; Must be after mbstring as it depends on it


------------------------------------------------


5. Java 7   (nur für Solr wichtig)
   Java wird von VuFind selber gestartet, wie auch Solr
z.B kann es auch liegen in
c:\program files(x86)\java\jre7
   darunter jedenfalls Ordner "bin" und darin java.exe
EnvironmentVariable PATH :  JAVA_HOME ergaenzen


------------------------------------------------


6. VuFind initialisieren:

  php install.php    (in c:\vufind)

Base path:  z.B. "/vufind"  (das ist default)
  Es wird dann ein Alias eingerichtet:  Alias /vufind C:/vufind/public
aber in  ./public  liegt nur das Startfile  index.php!

Dann kommt dieser output:
Apache configuration written to C:/vufind/local/httpd-vufind.conf

Diese .conf muß Apache zusätzlich laden. Damit es das tut:
Windows Start Menü -> Apache HTTP Server -> Edit the Apache httpd.conf
Dann diese Zeile zur  httpd.conf  ergänzen:
     Include C:/vufind/local/httpd-vufind.conf

Außerdem diese Zeile einbauen:

Alias /vufind /c:/vufind/public

Nach dieser Aktion: Apache neu starten.  Damit wird VuFind
zum Testen zugänglich unter der URL  http://localhost/vufind

  Im Fehlerfall: Systemereignisprotokoll einsehen:
  eventvwr.msc
     dann  Windows-Protokolle / System, auf !Fehler doppelklicken
  Schuld ist evtl. die Zeile  Include C:/vufind/local/httpd-vufind.conf

Damit Befehlszeilen-Tools funktionieren, diese Umgebungsvariablen setzen:

VUFIND_HOME=c:/vufind
VUFIND_LOCAL_DIR=C:/vufind/local 

-----------------------------------------


7. VuFind starten
   Dazu muss JAVA_HOME gesetzt sein
   und jvm.dll vorhanden  (z.B. in  c:\Program Files (x86)\Java\jre7\bin\client )
 
   Startbefehl:  vufind start    in c:\vufind

   Startet auch Java und Solr!
Wenn Start nicht gelingt mit einer Java-Fehlermeldung, ist evtl. java.exe
schon am Laufen. Dann zuerst killen, z.B. mit procexp.exe
  (Download:  http://www.heise.de/download/process-explorer.html)

--------------------------------------------

9. Abschließendes Checking (im Browser):

http://localhost/vufind/Install/Home
Und Fehlermeldungen untersuchen! MySQL Passwort wird gebraucht! 

Wenn irgendwo "Reparieren" dransteht, jeweils klicken, dann wird das gemacht.


9a. Solr Diagnose (im Browser):

http://localhost:8080/solr/#/    Diagnose-Tool. ist Solr am Laufen?
  Wichtig: unter "Core selector": Biblio / Schema  pruefen.
  Ist es das richtige Schema? Oder "Authority", also vertauscht?
  Die Zuordnung steht in  solr/solr.xml. Dort ändern

Unter "biblio" dann Overview: Statistics-Seite erscheint,
     darauf ein Button "Optimize" - komprimiert die Indexdaten
     und zwar die Verz. vufind/solr/biblio/index,
     sowie  spellchecker und spellShingle (was immer die machen)
Zu empfehlen: Jeweils nach einem Update wieder "Optimize" machen

--------------------------------------------


10. Daten einspeisen, Typ .mrc

Daten aus Katalog exportieren in  daten.mrk  mit marctxt.apr
dann Befehl:  daten.mrk  startet MARCEDIT, Menue "File / Compile File into MARC"
              erzeugt  data.mrc

Daten importieren:

-- Zuerst den Index (d.h. die gesamten Solr-Daten!) löschen:
   (Dies immer, wenn man den Index ganz neu aufsetzen will:
   Unter Win: Inhalt von  \vufind\solr\biblio\index  löschen  (--> https://vufind.org/wiki/re-indexing)

-- Dann die neu umgewandelten Daten indexieren: (--> https://vufind.org/wiki/importing_records)
   Windows:  in \vufind:  import-marc.bat data.mrc
   ACHTUNG: Dazu muß in einem anderen Fenster vufind gestartet sein,
            siehe 7., weil sonst solr nicht läuft

LOG-Dateien einspeisen: Umwandeln in log.mrk mit marctxt.apr,
dann Befehl:   log.mrk  startet MARCEDIT, Menue "File / Compile File into MARC"
                     Erzeugung von  log.mrc
dann in \vufind den Befehl  import-marc log.mrc

Dabei können Fehlermeldungen auftreten, wenn die MARC-Daten fehlerhaft sind:

D.Katz, 12.8.14:
"Bad request" : means there's some sort of invalid data in the record --
for example, multiple values in a single-valued field.
Usually there is more detailed error information displayed on the Solr side
than on the SolrMarc import side. If you can isolate a bad record and index
it while watching the console output from Solr, you can see which field is
causing the issue.
You can use the JETTY_LOG environment variable to log the Solr output
to a file, which might help in tracking this down if you can't easily
isolate a bad record. When starting Solr from the command line,
just do something like:

set JETTY_CONSOLE=c:\jetty.log
vufind.bat start

Then you can look through jetty.log for detailed messages.


----------------------------------------------------

Lokale Anpassungen

Zuerst ein Tip für den Fall des Versionswechsels: (z.B. von 2.3 nach 2.5)
Die neue Version in ein neues Verzeichnis kopieren, z.B. vufind-neu.  
Den Index-Ordner aus dem bisherigen in das neue Verzeichnis kopieren (Ordner vufind/solr/biblio/index)
Dann in den neuen Dateien die Änderungen nachvollziehen, die man in der bisherigen Version gemacht hat.

Danach VuFind stoppen (Strg+c), die Ordner umbenennen: vufind in vufind-alt, vufind-neu in vufind
und in 
vufind wieder starten:  vufind start  
Dann wieder starten, ausprobieren, Mängel notieren, und zurück das Ganze; Mängel beheben, und von vorn.

Alle Dateien notieren, in denen man Änderungen gemacht hat.

11a. Datensatz-Anzeige anpassen
    see also:
      https://vufind.org/wiki/vufind2:record_drivers
      https://vufind.org/wiki/vufind2:record_driver_method_master_list

    Die zuständigen .phtml-Dateien: (quasi Anzeige-Parameter)
    ==> \vufind\themes\bootstrap3\templates\RecordDriver\SolrDefault
    .css:
   
==> \vufind\themes\bootstrap3\css

    core.phtml = Template, Vorlage für die Einzeltitel-Vollanzeige
    result-list.phtml = Templ. für die Kurzlistenanzeige
      genutzt wird:
    SolrDefault.php : getter functions (holen MARC-Feldinhalte aus den Solr_Daten)
      ==> \vufind\module\VuFind\src\VuFind\RecordDriver\SolrDefault.php
                 z.B.  getCallNumber()
(für die Formatierung der Signatur)
      s. dazu im Wiki die Liste der getter-Funktionen:
      ==> https://vufind.org/wiki/vufind2:record_driver_method_master_list
    Feldnamen in /vufind/import: (braucht man f.d. getter-Funktionen)
      marc.properties: Definitionen von Feldnamen: zB 'edition', 'callnumber-a'
        oder in  marc_local.properties: die lokal abweichenden Angaben; Diese haben
        dann höhere Priorität als gleichnamige in marc.properties.
      ==> \vufind\import

     ABER:
  Template für Tab "Beschreibung" (z.B. "physical" = Seitenzahl = MARC 300)
  steht in dieser Datei:
     \vufind\themes\bootstrap3\templates\RecordTab\description.phtml

  Darin kann evtl. ein Fehler sein: Abschnitt am Ende (mit "videoclips") rausnehmen.

          
    ACHTUNG: Nach Änderungen an .properties: vufind neu starten!
     nur die .phtml werden sofort wirksam.


11b. Solr-Indexierung anpassen 
     also quasi die Index-Parameter:
      /vufind/solr/biblio/conf/schema.xml   beruht auf marc.properties
     Signaturen-Indexierung: import/index_scripts/callnumber.bsh
      (Achtung: activate it in import/marc_local.properties!)
     siehe auch: https://vufind.org/wiki/indexing:solrmarc#customizing_format_determination
     für Möglichkeiten, die Indexierung mit Hilfe von "Bean Shells" (.bsh) individuell anzupassen,
      z.B. auch für die automatische Bestimmung des Dokumenttyps aus den MARC-Daten: format.bsh.
    

11c. Optionen für das Suchen
     findet man in  searches.ini
     z.B. unter [Sorting]:  "relevance" oder "year". Default : "default_sort=..."
       und im Falle von sharding, wenn auf einen bestimmten Bestand zu filtern ist:
     default_filters[] = "institution:DHI Warschau"

11d. Signaturgruppen

   Liste in
   /vufind/import/translation_maps/callnumber_map.properties
   Muss vor dem Import vorliegen, sonst kein Browsing nach Signaturen!
   Default ist LC-Liste A - Z

11e. Neues Datenfeld
   Um ein neues MARC-Feld einzuführen, das Solr noch nicht kennt:
   solr/biblio/conf/schema.xml  aktualisieren und Daten neu indexieren!
   Dann die nötigen Ergänzungen in
   .\import\marc_local.properties
   
.\module\VuFind\src\VuFind\RecordDriver\SolrDefault.php
   .
\themes\bootstrap3\templates\RecordDriver\SolrDefault\core.phtml und result-list.phtml
  


--------------------------------------------------------------------

12. Logo
 (erscheint ganz oben)
    vufind_logo.jpg  in  \vufind\themes\bootstrap3\images
      ersetzen durch eigenes Signet der Bibl.
    Herzchen für "Favorites" (wenn man das albern findet):
    heart.png  auf   \vufind\themes\bootprint\images\silk
           

13. Standorte
    Die Default-Meldung "3rd Floor Main Library" steht in
    \vufind\module\VuFind\src\VuFind\ILS\Driver\Sample.php


14. Sprache der Oberfläche
    \vufind\languages:  de.ini  deutsche Texte
    Nach Änderung: Verzeichnis  /vufind/local/cache/languages  löschen! Wird neu erzeugt ...
    Die Reihenfolge im Sprachauswahlfeld steht in der config.ini. Nach Änderung Apache-Neustart.

15. Facetten (angezeigt auf der rechten Seite)
    Auswahl und Reihenfolge in \vufind\config\vufind\facets.ini (Kopie nach local!)

16. Export-Funktionen
    export.ini nach local kopieren (wie config.ini und facets.ini)
      und z.B. Reihenfolge ändern
    Zusätzlich in  config.ini  Abschnitt  [Export]  anpassen
    Achtung: Nicht die Bezeichnungen "Endnote" etc. in diesen Dateien ändern!
    Falls aber doch nötig, d.h. z.B.  EndNote/Citavi" gewünscht, dann in toolbar.phtml
    diese Zeile einsetzen statt der vorhandenen:
 <li><a <? if ($this->export()->needsRedirect($exportFormat)): ?>target="<?=$this->escapeHtmlAttr($exportFormat)?>Main" <? endif; ?>href="<?=$this->recordLink()->getActionUrl($this->driver, 'Export')?>?style=<?=$this->escapeHtmlAttr($exportFormat)?>"><?=$this->transEsc('Export to')?> <?=$this->escapeHtml($exportFormat == 'EndNote' ? 'Endnote/Citavi' : $exportFormat)?></a></li>


17. GBV einbinden (zunächst beim GBV Berechtigung geben lassen)
   
  1. in local/httpd-vufind.conf
          einfügen und Apache neu starten:
     SetEnv VUFIND_LOCAL_MODULES VZG 

  2. Ordner VZG (vom GBV, in GitHub zu finden) unter  module  anhängen
     https://github.com/gbv/vufind/tree/master/module
     Darin  ist  SolrVZGRecord.php  besonders wichtig, ergänzt  module/.../SolrDefault.php
     Korrekte Fassung s. Anhang (korr. von D. Katz, 8.1.15)
     Das Index-Schema vom GBV ist hier:
     
https://github.com/gbv/findex-config/blob/master/SolrCloud/solr_config/schema.xml

  3. In config.ini  bzw.  searches.ini:
      (siehe: https://vufind.org/wiki/using_solr_shards?s[]=sharding )
 Normaler Abschnitt lautet so:
//   This section requires no changes for most installations
[Index]
engine          = Solr
url             = http://127.0.0.1:8080/solr
default_core    = biblio

 Statt dessen: drei Abschnitte:
Vorsicht: Kein Spatium vor  [...

[Index]   in config.ini
engine          = Solr
url             = http://findex.gbv.de/index
local           = /home/vufind/solr
default_core    = XYZ    [Das ist der eigene Berechtigungscode beim GBV]

  und 2 Abschnitte in  searches.ini:
[IndexShards]
Lokal = vufind.dhi.waw.pl:8080/solr/biblio
GBV = shard1,shard2,shard3,shard4,shard5,shard6,shard7,shard8,shard9,shard10

[ShardPreferences]
showCheckboxes = true
defaultChecked[] = "Lokal"
defaultChecked[] = "GBV"

Die zwei Checkboxes werden unter dem Eingabe-Suchschlitz zur Auswahl gezeigt

Achtung: In einem Fremd-Index sind u.U. MARC-Felder, die man im eigenen Index nicht hat.
Für GBV siehe:
siehe   https://github.com/gbv/findex-config/blob/master/SolrCloud/solrmarc_config/VZG_index.properties
Darin ein Abschnitt, der mit  # GBV  beginnt

Dann braucht man einen Abschnitt
[StripFields]

Kinstler: Zu der Fehlermeldung
  Warning: strlen() expects parameter 1 to be string, array given in

          C:\vufind\module\VuFind\src\VuFind\View\Helper\Root\AddEllipsis.php on line 61

... gut möglich, dass es an Anpassungen in SolrDefault.php liegt. Denn das ist die Klasse, die die Daten, die aus findex kommen verarbeitet.

Die Fehlermeldung tritt prinzipiell dann auf, wenn eine Funktion in VuFind eine Zeichenkette erwartet, aber mehrere Zeichenketten (als array) übergeben bekommt. Das Modul VZG überschreibt deswegen ein paar wenige Funktionen genau aus dieser Klasse SolrDefault mit Anpassungen, die in der Klasse SolrVZGRecord implementiert sind (und sowohl mit Zeichenkette als auch mit arrays als Eingabe umgehen können): die Funktionen getShortTitle(), getTitle() und getSubtitle().
Wenn Sie nun wiederum ein eigenen getSubtitle() implementieren, sollten Sie darauf achten, dass das ebenfalls mit arrays umgehen kann. Wenn Sie allerdings getSubtitle() in SolrDefault direkt ändern und das Modul VZG korrekt geladen und verwendet wird, sollte ein getSubtitle() in SolrDefault immer von der Implementierung in SolrVZGRecord überschrieben werden, Ihre Anpassungen also gar nicht ausgeführt werden.

Ich würde Ihnen deswegen empfehlen, bei Ihren eigenen Anpassungen enbenso vorzugehen: Implementieren Sie sie in einem eigenen Modul, in einer eigenen Klasse, in der Sie (nur) die notwendigen Änderungen überschreiben oder ergänzen und stellen Sie sicher. Durch Vererbung können diese Anpassungen dann den Code in VuFind ersetzen. Das ist der Mechanismus, der in VuFind 2 vorgesehen ist, um eigene Anpassungen getrennt vom "Stammcode" von VuFind zu halten. Das ganze basiert auf dem Modul-Konzept des Zend Framework 2: http://framework.zend.com/manual/current/en/modules/zend.module-manager.intro.html

Anhang: SolrVZGRecord.php  korrigiert von D. Katz 8.1.15

class SolrVZGRecord extends VuFindSolrMarc
{
    /**
     * Get the short (pre-subtitle) title of the record.
     *
     * @return string
     */
    public function getShortTitle()
    {
        return $this->getBestField('title_short');
    }
    /**
     * Get the full title of the record.
     *
     * @return string
     */
    public function getTitle()
    {
        return $this->getBestField('title');
    }
    /**
     * Get the subtitle of the record.
     *
     * @return string
     */
    public function getSubtitle()
    {
        return $this->getBestField('title_sub');
    }

    /**
     * Get the best available value from a field that may or may not be an array.
          Liefert '', wenn es das Feld nicht gibt, weder als normales oder als array
          sonst wird der einzige oder erste Feldinhalt geliefert
     *
     * @param string $field Name of field to check.
     *
     * @return string
     */
    protected function getBestField($field)
    {
        if (!isset($this->fields[$field]) || empty($this->fields[$field])) {
            return '';
        }
        return is_array($this->fields[$field])
            ? $this->fields[$field][0] : $this->fields[$field];
    }
}       

    B.Eversberg : 2015-01-08 / 2016-03-01