From markus at flusskiesel.de Wed Jul 19 19:14:54 2017 From: markus at flusskiesel.de (Markus Becker) Date: Wed, 19 Jul 2017 19:14:54 +0200 Subject: [Koha-de] Vorstellung und Frage nach Programmstruktur Message-ID: <1449bd10-f8b4-c015-d22d-6c0612047fdb@flusskiesel.de> Liebe Koha-Mailingliste! Ich weiß nicht, ob es hier so üblich ist, aber ich möchte mich nach Anmelden hier einfach mal vorstellen: Mein Name lautet Markus Becker und ich leite die Bibliothek des Ministerium für Heimat, Kommunales, Bauen und Gleichstellung des Landes Nordrhein-Westfalen. Gleichzeitig studiere ich berufsbegleitend Bibliotheksinformatik an der TH Wildau und möchte meine Masterarbeit über Koha schreiben. Ich denke nämlich, dass Koha für unsere Behördenbibliotheken eine Alternative zum bisher genutzten BIBLIOTHECAplus sein könnte. Nun habe ich schon längst zwei Test-Installationen unter Debian und möchte nun mal in den Code schauen. Leider finde ich nirgendwo eine Doku über die Programmstruktur von Koha. Gibt es irgendwo eine Übersicht, wo welche Funktionalität gesteuert wird? Mich interessieren besonders die SRU-Schnittstellen. Viele Grüße und vielen Dank im voraus, Markus Becker From katrin.fischer at bsz-bw.de Thu Jul 20 18:12:31 2017 From: katrin.fischer at bsz-bw.de (Fischer, Katrin) Date: Thu, 20 Jul 2017 18:12:31 +0200 Subject: [Koha-de] Vorstellung und Frage nach Programmstruktur In-Reply-To: <1449bd10-f8b4-c015-d22d-6c0612047fdb@flusskiesel.de> Message-ID: <0cd3a7396b888f469f24cde996134e50@bsz-bw.de> Lieber Herr Becker, eine vollständige Beschreibung der Programmstruktur gibt es vermutlich in der von Ihnen gesuchten Form nicht. Vielleicht helfen Ihnen diese beiden Links schon ein wenig weiter: API-Dokumentation: https://perldoc.koha-community.org/ Datenbankdokumentation: http://schema.koha-community.org/ Für sehr technische Fragen würde ich es vielleicht auch auf der englischen Mailingliste oder gleich im #koha IRC Chat versuchen, da Sie dort mehr Entwickler erreichen. Viele Grüße, Katrin Fischer -- Katrin Fischer Bibliotheksservice-Zentrum Baden-Wuerttemberg (BSZ) 78457 Konstanz / Germany Phone: +49 7531 - 88 4934 E-Mail: katrin.fischer at bsz-bw.de http://bsz-bw.de > -----Original Message----- > From: koha-de-bounces at lists.koha-community.org [mailto:koha-de- > bounces at lists.koha-community.org] On Behalf Of Markus Becker > Sent: Wednesday, July 19, 2017 7:15 PM > To: koha-de at lists.koha-community.org > Subject: [Koha-de] Vorstellung und Frage nach Programmstruktur > > Liebe Koha-Mailingliste! > > Ich weiß nicht, ob es hier so üblich ist, aber ich möchte mich nach Anmelden > hier einfach mal vorstellen: > > Mein Name lautet Markus Becker und ich leite die Bibliothek des Ministerium > für Heimat, Kommunales, Bauen und Gleichstellung des Landes Nordrhein- > Westfalen. > > Gleichzeitig studiere ich berufsbegleitend Bibliotheksinformatik an der TH > Wildau und möchte meine Masterarbeit über Koha schreiben. Ich denke > nämlich, dass Koha für unsere Behördenbibliotheken eine Alternative zum > bisher genutzten BIBLIOTHECAplus sein könnte. > > Nun habe ich schon längst zwei Test-Installationen unter Debian und möchte > nun mal in den Code schauen. Leider finde ich nirgendwo eine Doku über die > Programmstruktur von Koha. > > Gibt es irgendwo eine Übersicht, wo welche Funktionalität gesteuert wird? > > Mich interessieren besonders die SRU-Schnittstellen. > > Viele Grüße und vielen Dank im voraus, > Markus Becker > > _______________________________________________ > Koha-de mailing list > Koha-de at lists.koha-community.org > http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-de From roger.grossmann at lmscloud.de Mon Jul 24 18:33:31 2017 From: roger.grossmann at lmscloud.de (Roger Grossmann) Date: Mon, 24 Jul 2017 18:33:31 +0200 Subject: [Koha-de] Vorstellung und Frage nach Programmstruktur In-Reply-To: <1449bd10-f8b4-c015-d22d-6c0612047fdb@flusskiesel.de> References: <1449bd10-f8b4-c015-d22d-6c0612047fdb@flusskiesel.de> Message-ID: <47C4BB1F-3B01-43EB-A023-AE33A7E9E813@lmscloud.de> Hallo Herr Becker, hier ein paar zusammenfassende Informationen zu verwendeten Techniken bei Koha und wichtigen Verzeichnissen einer Koha-Debian-Installation. Die Informationen sind als Einstiegshilfe gedacht. Die Angaben erheben keineswegs Anspruch auf Vollständigkeit. Eventuell sind Sie ja inzwischen viel weiter. Wie Sie sicher bereits wissen, ist der überwiegende Teil aller Koha-Funktionalitäten in Perl entwickelt. Um Koha-Programme zu verstehen, sollten Sie daher ein gutes Verständnis für die Programmierung mit Perl aufbauen. Perl-Programmcode wird nicht kompiliert sondern vom Perl-Interpreter zur Laufzeit interpretiert. Der Code von Perl-Porgrammen ist also auch in der installierten Umgebung lesbar und änderbar für einen Benutzer-Account, der die entsprechenden Zugriffsrechte auf dem Server besitzt. Eingesetzte Techniken ------------------------------ Koha setzt auf folgende wichtige Tools, Techniken und Toolkits: Perl-Module Mit der Installation von Koha werden auf einem Debian-System mehr als 130 Perl-Module installiert, auf deren Funktionalität Koha aufsetzt. Beispiele sind: PDF-Generierung, XML-Verarbeitung, CSV-Daten-Verarbeitung, Zugriff auf andere Internet-Dienste, MARC-Daten-Verarbeitung usw. Diese stehen mit dem Aufruf von perl-Programmen zur Verfügung. Ein Aufruf von "perl -V" gibt Ihnen umfangreiche Informationen über die verwendete Perl-Installation. Apache2 Die Koha-Oberfläche ist vollständig web-basiert. Koha benutzt Apache als Web-Server, der die Browser-Anfragen entgegennimmt und über die Standard-CGI-Schnittstelle an die Perl-Programme übergibt. Mit Apache kann sehr leicht per Konfiguration eine sicherer Betrieb der Koha-Anwendung mit HTTPS konfiguriert werden. Template-Toolkit Das Template-Toolkit wird als Template-Engine verwendet um programmgesteuert HTML-Antworten zu generieren, die der Web-Server an den Browser liefert. Bei jedem Aufruf an Koha wird ein Perl-Skript aufgerufen, mit dem am Ende eine HTML-Antwort mit Hilfe eines Templates erzeugt wird. Perl-DBI-Datenbankschnittstelle Mit Hilfe der unter Perl standardisierten Datenbankschnittstelle DBI erfolgen Zugriffe auf die Datenbank über eine standardisierte SQL-Schnittstelle. DBIx Abstraktion der DBI-Schnittstelle, die einen nativen Zugriff auf Datenbankobjekte als Perl-"Klassen" zur Verfügung stellt. Datenbank MySQL Koha wird überlicherweise mit einer auf MySQL basierenden Datenbank betrieben. Das ist überlicherwerse eine der folgenden Distributionen MariaDB, MySQL Community Server oder Percona MySQL. Perl Web Server Gateway Interface (PSGI/Plack) Die Schnittstelle zwischen Webserver und Webanwendung wird benutzt um CGI-Aufrufe zu beschleunigen. Bei Benutzung der Schnittstelle wird nicht bei jedem Aufruf ein Programm neu gestartet, sondern die Programme werden über einen Anwendungserver im Arbeitsspeicher gehalten und über eine Schnittstelle aufgerufen. Wikipedia: Beim Standard-CGI werden die Daten (wie zum Beispiel aus Webformularen) vom Webserver (zum Beispiel Apache) via Umgebungsvariablen an den Perl-Interpreter übermittelt, der dafür immer wieder in einem neuen Prozess starten muss. Bei PSGI erhält jede Anwendung beim Aufruf eine Referenz auf einen Hash (mit Variablen ähnlich wie beim CGI). Zebra Volltext-Indexierer, mit dem Katalog- und Exemplardaten indexiert werden. Mit dem Zebra-Sever werden Katalog-Suchen abgearbeitet. Abarbeitung eines Web-Requests -------------------------------------------- Koha stellt ja ein vollständig Browser-basiertes Benutzerinterface für OPAC und Managementfunktionen zur Verfügung. Ein Koha-Browser-Request wird üblicherweise mit folgenden Schritten abgearbeitet: 1. Der Apache nimmt vom Browser die HTTP(s)-Anfrage an dem für den Apache-Server konfigurierten Port entsprechend der Apache-Konfiguration, die für die Koha-Instanz hinterlegt ist. Es ist möglich, mehrere Koha-Instanzen mit einem Apache zu betreiben. Hierzu kann entweder für jede Instanz unter einem unterschiedlicher Port betrieben werden oder per DNS-Konfiguration können unterschieliche Server-Namen bekannt gemacht werden, auf die der Apache reagiert. 2. In der Apache-Konfiguration ist hinterlegt, ob die angfeforderte Seite oder Datei statisch ist oder der Inhalt über ein CGI-Skript generiert wird. Für einen CGI-Aufruf startet der Apache das in der Request-URL hinterlegte Perl-Skript und wartet auf die Ausgabe des Programmes. Bevor der CGI-Aufruf erfolgt, wertet der Apache die Aufrufparameter aus, abhängig davon, ob es sich um einen HTTP-GET oder HTTP-POST-Aufruf handelt. Danaben werden entsprechende Umgebungsvariablen des Programmes gesetzt. 3. Das vom Apache aufgerufene (bzw. ausgeführte) Programm startet die Verarbeitung. Überlicherweise wird hierbei zuerst die Datenbankverbindung initialisiert und die Benutzer-Authentifzierung geprüft. Bei der Verarbeitung greift das Skript auf Funtkionalität zurück, die in Koha-Perl-Modulen hinterlegt ist. Am Ende der Abarbeitung wird das für das Skript zugehörige HTML-Template mit den von Perl-Skript erzeugten Variablen aufgerufen und die HTML-Anwort erzeugt. Diese wird von Skript auf die Standardausgabe geschrieben. 4. Der Apache nimmt die Ausgabe des Perl-Skriptes entgegen und generiert daraus die HTTP(S)-Response mit HTTP-Statuscode, HTTP-Header und HTTP-Body, die wiederum an den Browser als Antwort weitergegeben wird. Bei etlichen Funktionen werden inzwischen AJAX-Aufrufe per JavaScript verwendet, die mit den zurückgelieferten Daten im Browser dir angezeigte HTML-Seite dynamisch anpassen. Laufende Prozesse einer Koha-Instanz ---------------------------------------------------- Üblicherweise laufen auf einem Server die folgenden Koha-Prozesse pro Instanz: a) starman master/worker: PSGI/Plack-Prozesse, an die vom Apache Web-Request weitergeleitet werden. Diese Rufen die Perl-Skripte auf, mit den OPAC und Bibliotheksmanagementfunktionalität implemntiert ist. b) indexer daemon/prozess: Ruft regelmäßig den Koha-Indexer auf, die prüfen, ob neue Indexierungsaufträge nach Änderungen von Katalog- oder Exmplardaten vorliegen und diese abarbeiten. c) zebra server: Server für die Katalog- und Exemplardatensuche. d) SIP server: SIP2-Server-Dienste (muß explizit konfiguriert und gestartet werden) Wichtige Verzeichnisse einer Koha-Installation ------------------------------------------------------------- Folgende Verzeichnisse sind wichtig: /etc/koha Koha-Konfigurationsdateien /etc/koha/sites//* Koha-Konfigurationsdateien einer spezifischen Koha-Instanz /etc/apache2/sites-available/.conf Apache-Konfigurationsdaten der Koha-Instanzen. Bitte beachten Sie, dass hier Konfigurationsdateien aus dem /etc/koha/-Verzeichnis eingebunden werden. /usr/sbin/koha-* Shell-Programme zur Verwaltung der Koha-Instanzen. Z.B.: Einrichten neuer Instanzen, Start und Stop der Koha-Services, Indexierung der Daten usw. /usr/share/koha Hier befinden sich alle Perl-Module, Perl-Skripte und Tageslaufprogramme. Wichtige Verzeichnisse unter /usr/share/koha sind folgende: /usr/share/koha/lib: Perl-Module, die von Perl-Skripten eingebunden werden und die Koha-Business-Funktionialität kapseln. /usr/share/koha/bin: Perl-Programme für den Tageslauf, zur Datenmigration und Datenmanipulation sowie Startprogramme. /usr/share/koha/misc: Translator-Programme, mit denen Koha für zusätzliche Sprachen dem dem Standard (Englisch) konfiguriert werden kann /usr/share/koha/api: API-Schnittstelle von Koha für ausgewählte AJAX-Aufrufe, die JSON-Daten zurückliefern /usr/share/koha/opac: CGI-Skripte und Templates der Koha-OPAC-Anwendung /usr/share/koha/intranet: CGI-Skripte und Templates der Bibliotheksmanagment-Funktionalität /var/lib/koha Hier werden dynamische Daten der Koha-Instanzen wie die Zebra-Indexe, installierte Plugins, Daten-Uploads usw. abgelegt. /var/log/koha Log-Dateien der Koha-Instanzen wie z.B. der Web-Server-Log, Fehlerlog usw. /var/spool/koha Standardmäßig werden die Datenbank als auch die Konfiguration und dynamischen Daten einer Instanz täglich per Cronjob gesichert. Die Sicherungsdaten der letzten zwei Tage werden in diesem Verzeichnis abgelegt. /run/koha In dem Verzeichnis werden pro Instanz PID-Dateien der gestarteten Server abgelegt bzw. für die Interprozesskommunikation per Sockets abgelegt. /run/lock/koha In dem Verzeichnis werden pro Instanz Lock-Dateien z.B. vom Zebra indexer abgelegt, um sicherzustellen, dass nicht gleichzeitig mehrere Prozesse den Index manipulieren können. /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly Hier befindet sich jeweils das Skript koha-common, welches die Programme des Koha-Tageslauf aufruft bzw. die stündlich oder monatlich auszuführenden Programme. SRU ------ Zu ihrer konkreten Anfrage hinsichtlich der SRU-Schnittstelle: Hier wäre interessant zu wissen, ob Sie fremde SRU- oder Z39.50-Quellen einbinden wollen oder Ihren Bestand per SRU anbieten wollen. Im folgenden gehe ich von ersterem aus. Die SRU-Schnittstelle kommt ja z.B. beim Copy-Cataloging zum Einsatz. Das Script zum Durchführen einer Katalogsuche finden Sie unter: /usr/share/koha/intranet/cgi-bin/cataloguing/z3950_search.pl Dieses verwendet das Modul C4::Breeding, das die Methode Z3950Search implementiert, welche wiederum von z3950_search.pl aufgerufen wird. Den Code des Moduls finden Sie unter /usr/share/koha/lib/C4/Breeding.pm. Breeding.pm greift wiederum die Z39.50 Implementierung der ZOOM-Initiative zurück (http://zoom.z3950.org/) die über das Debian-Perl-Modul libnet-z3950-zoom-perl eingebunden wurde. Sollten Sie einen eigenen SRU-Server betreiben wollen, so wird dieser mit dem Zebra-Server zur Verfügung gestellt. Hierzu müssten Sie die Konfigurationsdatei: /etc/koha/sites//koha-conf.xml bearbeiten und die entsprechenden Einträge für den publicserver aktivieren und bearbeiten. Danach die Koha-Dienste neu starten. Ich hoffe, die Informationen helfen Ihnen weiter, einen Einstieg in den installierten Koha-Code zu finden. Viele Grüße, Roger Großmann -- LMSCloud GmbH Roger Großmann - Geschäftsführer Konrad-Zuse-Platz 8 - D-81829 München t +49 (0)89 207042-620 m +49 (0)171-2194775 f +49 (0)89 207042-623 e roger.grossmann at lmscloud.de w www.lmscloud.de > Am 19.07.2017 um 19:14 schrieb Markus Becker : > > Liebe Koha-Mailingliste! > > Ich weiß nicht, ob es hier so üblich ist, aber ich möchte mich nach Anmelden hier einfach mal vorstellen: > > Mein Name lautet Markus Becker und ich leite die Bibliothek des Ministerium für Heimat, Kommunales, Bauen und Gleichstellung des Landes Nordrhein-Westfalen. > > Gleichzeitig studiere ich berufsbegleitend Bibliotheksinformatik an der TH Wildau und möchte meine Masterarbeit über Koha schreiben. Ich denke nämlich, dass Koha für unsere Behördenbibliotheken eine Alternative zum bisher genutzten BIBLIOTHECAplus sein könnte. > > Nun habe ich schon längst zwei Test-Installationen unter Debian und möchte nun mal in den Code schauen. Leider finde ich nirgendwo eine Doku über die Programmstruktur von Koha. > > Gibt es irgendwo eine Übersicht, wo welche Funktionalität gesteuert wird? > > Mich interessieren besonders die SRU-Schnittstellen. > > Viele Grüße und vielen Dank im voraus, > Markus Becker > > _______________________________________________ > Koha-de mailing list > Koha-de at lists.koha-community.org > http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-de From markus at flusskiesel.de Tue Jul 25 08:41:43 2017 From: markus at flusskiesel.de (Markus Becker) Date: Tue, 25 Jul 2017 08:41:43 +0200 Subject: [Koha-de] Vorstellung und Frage nach Programmstruktur In-Reply-To: <0cd3a7396b888f469f24cde996134e50@bsz-bw.de> References: <0cd3a7396b888f469f24cde996134e50@bsz-bw.de> Message-ID: Liebe Frau Fischer, vielen Dank für die Informationen! Das hilft mir schon mal weiter! Viele Grüße, Markus Becker Am 20.07.2017 um 18:12 schrieb Fischer, Katrin: > Lieber Herr Becker, > > eine vollständige Beschreibung der Programmstruktur gibt es vermutlich in der von Ihnen gesuchten Form nicht. Vielleicht helfen Ihnen diese beiden Links schon ein wenig weiter: > > API-Dokumentation: > https://perldoc.koha-community.org/ > > Datenbankdokumentation: > http://schema.koha-community.org/ > > Für sehr technische Fragen würde ich es vielleicht auch auf der englischen Mailingliste oder gleich im #koha IRC Chat versuchen, da Sie dort mehr Entwickler erreichen. > > Viele Grüße, > > Katrin Fischer > From markus at flusskiesel.de Tue Jul 25 08:49:57 2017 From: markus at flusskiesel.de (Markus Becker) Date: Tue, 25 Jul 2017 08:49:57 +0200 Subject: [Koha-de] Vorstellung und Frage nach Programmstruktur In-Reply-To: <47C4BB1F-3B01-43EB-A023-AE33A7E9E813@lmscloud.de> References: <1449bd10-f8b4-c015-d22d-6c0612047fdb@flusskiesel.de> <47C4BB1F-3B01-43EB-A023-AE33A7E9E813@lmscloud.de> Message-ID: Hallo Herr Grossmann, vielen Dank für die ausführliche Antwort - das ist genau das, was ich gesucht habe! Mit Perl habe ich schon gearbeitet, mir fällt es aber noch schwer, den fremden Code zu verstehen. Zum Thema SRU: Ich möchte eine externe SRU-Quelle einbinden und dies funktioniert in meiner Test-Installation auch problemlos. Leider würde ein potenzielles Live-System hinter einer sehr restriktiven Firewall laufen, die z.B. Z39.50 komplett blockiert - und die bisherigen SRU-Anfragen an z.B. die LoC oder die DNB auch. Da SRU m.W. nach über Port 80 läuft und Abfragen per Browser funktionieren auch. Ich hoffe, nun mit einen tieferen Verständnis Materie etwas "Stricken" zu können, damit eine erfolgreiche Abfrage zur Titelübernahme möglich wird. Viele Grüße aus Überlingen am Bodensee, wo ich meinen kurzen Sommerurlaub verbringen, bevor ich mich wieder mit Koha, Perl und anderen Dingen wie einem Bibliotheksumzug beschäftigen darf Markus Becker Am 24.07.2017 um 18:33 schrieb Roger Grossmann: > Hallo Herr Becker, > > hier ein paar zusammenfassende Informationen zu verwendeten Techniken bei Koha und wichtigen Verzeichnissen einer Koha-Debian-Installation. > Die Informationen sind als Einstiegshilfe gedacht. Die Angaben erheben keineswegs Anspruch auf Vollständigkeit. Eventuell sind Sie ja inzwischen viel weiter. > > Wie Sie sicher bereits wissen, ist der überwiegende Teil aller Koha-Funktionalitäten in Perl entwickelt. Um Koha-Programme zu verstehen, sollten Sie daher ein gutes Verständnis für die Programmierung mit Perl aufbauen. > Perl-Programmcode wird nicht kompiliert sondern vom Perl-Interpreter zur Laufzeit interpretiert. Der Code von Perl-Porgrammen ist also auch in der installierten Umgebung lesbar und änderbar für einen Benutzer-Account, der die entsprechenden Zugriffsrechte auf dem Server besitzt. > > > Eingesetzte Techniken > ------------------------------ > Koha setzt auf folgende wichtige Tools, Techniken und Toolkits: > > Perl-Module > Mit der Installation von Koha werden auf einem Debian-System mehr als 130 Perl-Module installiert, auf deren Funktionalität Koha aufsetzt. Beispiele sind: PDF-Generierung, XML-Verarbeitung, CSV-Daten-Verarbeitung, Zugriff auf andere Internet-Dienste, MARC-Daten-Verarbeitung usw. Diese stehen mit dem Aufruf von perl-Programmen zur Verfügung. Ein Aufruf von "perl -V" gibt Ihnen umfangreiche Informationen über die verwendete Perl-Installation. > > Apache2 > Die Koha-Oberfläche ist vollständig web-basiert. Koha benutzt Apache als Web-Server, der die Browser-Anfragen entgegennimmt und über die Standard-CGI-Schnittstelle an die Perl-Programme übergibt. Mit Apache kann sehr leicht per Konfiguration eine sicherer Betrieb der Koha-Anwendung mit HTTPS konfiguriert werden. > > Template-Toolkit > Das Template-Toolkit wird als Template-Engine verwendet um programmgesteuert HTML-Antworten zu generieren, die der Web-Server an den Browser liefert. Bei jedem Aufruf an Koha wird ein Perl-Skript aufgerufen, mit dem am Ende eine HTML-Antwort mit Hilfe eines Templates erzeugt wird. > > Perl-DBI-Datenbankschnittstelle > Mit Hilfe der unter Perl standardisierten Datenbankschnittstelle DBI erfolgen Zugriffe auf die Datenbank über eine standardisierte SQL-Schnittstelle. > > DBIx > Abstraktion der DBI-Schnittstelle, die einen nativen Zugriff auf Datenbankobjekte als Perl-"Klassen" zur Verfügung stellt. > > Datenbank MySQL > Koha wird überlicherweise mit einer auf MySQL basierenden Datenbank betrieben. Das ist überlicherwerse eine der folgenden Distributionen MariaDB, MySQL Community Server oder Percona MySQL. > > Perl Web Server Gateway Interface (PSGI/Plack) > Die Schnittstelle zwischen Webserver und Webanwendung wird benutzt um CGI-Aufrufe zu beschleunigen. Bei Benutzung der Schnittstelle wird nicht bei jedem Aufruf ein Programm neu gestartet, sondern die Programme werden über einen Anwendungserver im Arbeitsspeicher gehalten und über eine Schnittstelle aufgerufen. > Wikipedia: Beim Standard-CGI werden die Daten (wie zum Beispiel aus Webformularen) vom Webserver (zum Beispiel Apache) via Umgebungsvariablen an den Perl-Interpreter übermittelt, der dafür immer wieder in einem neuen Prozess starten muss. Bei PSGI erhält jede Anwendung beim Aufruf eine Referenz auf einen Hash (mit Variablen ähnlich wie beim CGI). > > Zebra > Volltext-Indexierer, mit dem Katalog- und Exemplardaten indexiert werden. Mit dem Zebra-Sever werden Katalog-Suchen abgearbeitet. > > > Abarbeitung eines Web-Requests > -------------------------------------------- > Koha stellt ja ein vollständig Browser-basiertes Benutzerinterface für OPAC und Managementfunktionen zur Verfügung. Ein Koha-Browser-Request wird üblicherweise mit folgenden Schritten abgearbeitet: > > 1. Der Apache nimmt vom Browser die HTTP(s)-Anfrage an dem für den Apache-Server konfigurierten Port entsprechend der Apache-Konfiguration, die für die Koha-Instanz hinterlegt ist. Es ist möglich, mehrere Koha-Instanzen mit einem Apache zu betreiben. Hierzu kann entweder für jede Instanz unter einem unterschiedlicher Port betrieben werden oder per DNS-Konfiguration können unterschieliche Server-Namen bekannt gemacht werden, auf die der Apache reagiert. > > 2. In der Apache-Konfiguration ist hinterlegt, ob die angfeforderte Seite oder Datei statisch ist oder der Inhalt über ein CGI-Skript generiert wird. Für einen CGI-Aufruf startet der Apache das in der Request-URL hinterlegte Perl-Skript und wartet auf die Ausgabe des Programmes. Bevor der CGI-Aufruf erfolgt, wertet der Apache die Aufrufparameter aus, abhängig davon, ob es sich um einen HTTP-GET oder HTTP-POST-Aufruf handelt. Danaben werden entsprechende Umgebungsvariablen des Programmes gesetzt. > > 3. Das vom Apache aufgerufene (bzw. ausgeführte) Programm startet die Verarbeitung. Überlicherweise wird hierbei zuerst die Datenbankverbindung initialisiert und die Benutzer-Authentifzierung geprüft. Bei der Verarbeitung greift das Skript auf Funtkionalität zurück, die in Koha-Perl-Modulen hinterlegt ist. Am Ende der Abarbeitung wird das für das Skript zugehörige HTML-Template mit den von Perl-Skript erzeugten Variablen aufgerufen und die HTML-Anwort erzeugt. Diese wird von Skript auf die Standardausgabe geschrieben. > > 4. Der Apache nimmt die Ausgabe des Perl-Skriptes entgegen und generiert daraus die HTTP(S)-Response mit HTTP-Statuscode, HTTP-Header und HTTP-Body, die wiederum an den Browser als Antwort weitergegeben wird. > > Bei etlichen Funktionen werden inzwischen AJAX-Aufrufe per JavaScript verwendet, die mit den zurückgelieferten Daten im Browser dir angezeigte HTML-Seite dynamisch anpassen. > > > Laufende Prozesse einer Koha-Instanz > ---------------------------------------------------- > Üblicherweise laufen auf einem Server die folgenden Koha-Prozesse pro Instanz: > > a) starman master/worker: PSGI/Plack-Prozesse, an die vom Apache Web-Request weitergeleitet werden. Diese Rufen die Perl-Skripte auf, mit den OPAC und Bibliotheksmanagementfunktionalität implemntiert ist. > b) indexer daemon/prozess: Ruft regelmäßig den Koha-Indexer auf, die prüfen, ob neue Indexierungsaufträge nach Änderungen von Katalog- oder Exmplardaten vorliegen und diese abarbeiten. > c) zebra server: Server für die Katalog- und Exemplardatensuche. > d) SIP server: SIP2-Server-Dienste (muß explizit konfiguriert und gestartet werden) > > > Wichtige Verzeichnisse einer Koha-Installation > ------------------------------------------------------------- > Folgende Verzeichnisse sind wichtig: > > /etc/koha > Koha-Konfigurationsdateien > > /etc/koha/sites//* > Koha-Konfigurationsdateien einer spezifischen Koha-Instanz > > /etc/apache2/sites-available/.conf > Apache-Konfigurationsdaten der Koha-Instanzen. Bitte beachten Sie, dass hier Konfigurationsdateien aus dem /etc/koha/-Verzeichnis eingebunden werden. > > /usr/sbin/koha-* > Shell-Programme zur Verwaltung der Koha-Instanzen. Z.B.: Einrichten neuer Instanzen, Start und Stop der Koha-Services, Indexierung der Daten usw. > > /usr/share/koha > Hier befinden sich alle Perl-Module, Perl-Skripte und Tageslaufprogramme. > Wichtige Verzeichnisse unter /usr/share/koha sind folgende: > /usr/share/koha/lib: Perl-Module, die von Perl-Skripten eingebunden werden und die Koha-Business-Funktionialität kapseln. > /usr/share/koha/bin: Perl-Programme für den Tageslauf, zur Datenmigration und Datenmanipulation sowie Startprogramme. > /usr/share/koha/misc: Translator-Programme, mit denen Koha für zusätzliche Sprachen dem dem Standard (Englisch) konfiguriert werden kann > /usr/share/koha/api: API-Schnittstelle von Koha für ausgewählte AJAX-Aufrufe, die JSON-Daten zurückliefern > /usr/share/koha/opac: CGI-Skripte und Templates der Koha-OPAC-Anwendung > /usr/share/koha/intranet: CGI-Skripte und Templates der Bibliotheksmanagment-Funktionalität > > /var/lib/koha > Hier werden dynamische Daten der Koha-Instanzen wie die Zebra-Indexe, installierte Plugins, Daten-Uploads usw. abgelegt. > > /var/log/koha > Log-Dateien der Koha-Instanzen wie z.B. der Web-Server-Log, Fehlerlog usw. > > /var/spool/koha > Standardmäßig werden die Datenbank als auch die Konfiguration und dynamischen Daten einer Instanz täglich per Cronjob gesichert. Die Sicherungsdaten der letzten zwei Tage werden in diesem Verzeichnis abgelegt. > > /run/koha > In dem Verzeichnis werden pro Instanz PID-Dateien der gestarteten Server abgelegt bzw. für die Interprozesskommunikation per Sockets abgelegt. > > /run/lock/koha > In dem Verzeichnis werden pro Instanz Lock-Dateien z.B. vom Zebra indexer abgelegt, um sicherzustellen, dass nicht gleichzeitig mehrere Prozesse den Index manipulieren können. > > /etc/cron.daily, /etc/cron.hourly, /etc/cron.monthly > Hier befindet sich jeweils das Skript koha-common, welches die Programme des Koha-Tageslauf aufruft bzw. die stündlich oder monatlich auszuführenden Programme. > > SRU > ------ > Zu ihrer konkreten Anfrage hinsichtlich der SRU-Schnittstelle: Hier wäre interessant zu wissen, ob Sie fremde SRU- oder Z39.50-Quellen einbinden wollen oder Ihren Bestand per SRU anbieten wollen. Im folgenden gehe ich von ersterem aus. > Die SRU-Schnittstelle kommt ja z.B. beim Copy-Cataloging zum Einsatz. > Das Script zum Durchführen einer Katalogsuche finden Sie unter: > /usr/share/koha/intranet/cgi-bin/cataloguing/z3950_search.pl > Dieses verwendet das Modul C4::Breeding, das die Methode Z3950Search implementiert, welche wiederum von z3950_search.pl aufgerufen wird. > Den Code des Moduls finden Sie unter /usr/share/koha/lib/C4/Breeding.pm. Breeding.pm greift wiederum die Z39.50 Implementierung der ZOOM-Initiative zurück (http://zoom.z3950.org/) die über das Debian-Perl-Modul libnet-z3950-zoom-perl eingebunden wurde. > > Sollten Sie einen eigenen SRU-Server betreiben wollen, so wird dieser mit dem Zebra-Server zur Verfügung gestellt. > Hierzu müssten Sie die Konfigurationsdatei: /etc/koha/sites//koha-conf.xml bearbeiten und die entsprechenden Einträge für den publicserver aktivieren und bearbeiten. Danach die Koha-Dienste neu starten. > > Ich hoffe, die Informationen helfen Ihnen weiter, einen Einstieg in den installierten Koha-Code zu finden. > > Viele Grüße, > Roger Großmann > > -- > LMSCloud GmbH > Roger Großmann - Geschäftsführer > Konrad-Zuse-Platz 8 - D-81829 München > t +49 (0)89 207042-620 m +49 (0)171-2194775 f +49 (0)89 207042-623 > e roger.grossmann at lmscloud.de > w www.lmscloud.de > >> Am 19.07.2017 um 19:14 schrieb Markus Becker : >> >> Liebe Koha-Mailingliste! >> >> Ich weiß nicht, ob es hier so üblich ist, aber ich möchte mich nach Anmelden hier einfach mal vorstellen: >> >> Mein Name lautet Markus Becker und ich leite die Bibliothek des Ministerium für Heimat, Kommunales, Bauen und Gleichstellung des Landes Nordrhein-Westfalen. >> >> Gleichzeitig studiere ich berufsbegleitend Bibliotheksinformatik an der TH Wildau und möchte meine Masterarbeit über Koha schreiben. Ich denke nämlich, dass Koha für unsere Behördenbibliotheken eine Alternative zum bisher genutzten BIBLIOTHECAplus sein könnte. >> >> Nun habe ich schon längst zwei Test-Installationen unter Debian und möchte nun mal in den Code schauen. Leider finde ich nirgendwo eine Doku über die Programmstruktur von Koha. >> >> Gibt es irgendwo eine Übersicht, wo welche Funktionalität gesteuert wird? >> >> Mich interessieren besonders die SRU-Schnittstellen. >> >> Viele Grüße und vielen Dank im voraus, >> Markus Becker >> >> _______________________________________________ >> Koha-de mailing list >> Koha-de at lists.koha-community.org >> http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-de > > _______________________________________________ > Koha-de mailing list > Koha-de at lists.koha-community.org > http://lists.koha-community.org/cgi-bin/mailman/listinfo/koha-de >