[Kobv-opus-tester] rewrite map

Thoralf Klein thoralf.klein at zib.de
Don Apr 21 20:29:42 MEST 2011


Hallo Herr Schnasse,


On Thursday 21 April 2011 11:04:07 Jan Schnasse wrote:
> Hallo zusammen,
> 
> ich möchte kurz von einem Problem  mit $OPUS_HOME/apacheconf/opus4
> berichten, dass hier nach der Installation von Opus-4.0.3 auf
> SLES/Opensuse auftrat und das mich hier einige Stunden gekostet hat und
> immer noch nicht vollständig gelöst ist.

wie haben Sie die Version installiert?  Per Tarball?  Gab es beim 
Ausführen der Scripte irgendwelche Fehlermeldungen, die für uns
hilfreich sein könnten?


> 1.
> Der Userwechsel nach wwwrun in
> $OPUS_HOME/opus4/scripts/opus-apache-rewritemap-caller-secure.sh
> funktioniert mit der SUSE/Apache-Standardkonfiguration nicht. Weder mit
> SU noch mit SUDO.
> Seltsam ist, dass ein Aufruf mit vorangestelltem ./ auf der Konsole
> funktioniert, im Apache dann aber scheinbar nicht.
> 
> Derzeitige Lösung: Zeilen auskommentieren und nur die while-Schleife
> drin lassen

Mangels SuSE kann ich das Problem leider nicht reproduzieren.  Die 
Zeilen sollen eigentlich verhindern, dass das Rewrite-Script als "root" 
läuft.  Könnten Sie mit einem "ps aux" nachsehen, unter welchem Nutzer
das Rewrite-Script aktuell läuft?


> 2.
> Die Rewrite Rule so wie sie ist, lenkt Anfragen auf den Root des auf
> 127.0.0.1 befindlichen Webserver um. Aus einer Anfrage
> 127.0.0.1/documents/2110/doc.pdf wird in der Standardconfig
> 127.0.0.1/workspace/files/2110/doc.pdf
> Dieser Pfad existiert aber doch nicht!? Oder sollte man da in
> $OPUS_HOME/opus4/public einen link setzen? Wofür ist dann der
> alias /opus4-files gebildet worden?

Schritt-für-Schritt sieht das so aus:
* Zugriff auf /opus4-matheon/frontdoor/index/index/docId/786
* Anfrage an http://opus4.kobv.de/opus4-matheon/files/786/ch.pdf
* Rewrite/Proxy nach http://127.0.0.1/opus4-matheon-files/786/ch.pdf
* /opus4-matheon-files/ ist ein Alias auf workspace/files

Mal ein Test-Aufruf von mir:
$ ./opus-apache-rewritemap-caller-secure.sh
786/ch.pdf              COOKIES=
/opus4-matheon-files/786/ch.pdf

Meine Config dazu:
deliver.target.prefix = /opus4-matheon-files

Und ja, sie haben Recht: Der Pfad existiert nicht, denn er wird per
Alias in der Apache-Config intern umgeleitet.  Das heißt, der Schlüssel
in Ihrer OPUS4-Config und der Apache-Config müssen übereinstimmen.

Ich hoffe, das half weiter?


> Derzeitige Lösung:
> a.) Die Rule umschreiben nach:
> 
> RewriteRule ^/documents/(.*)$
> http://127.0.0.1/opus4-files/${opus4deliver:$1\      %{REMOTE_ADDR}\
> COOKIES=%{HTTP_COOKIE}} [P]
> 
> b.) Die Ausgabe von $OPUS_HOME/opus4/scripts/opus-apache-rewritemap.php
> entsprechend anpassen, so dass nur noch ID/FilePath zurückgegeben wird
> (ohne workspace/files)
> Aus einer Anfrage 127.0.0.1/documents/2110/doc.pdf wird dann
> 127.0.0.1/opus4-files/2110/doc.pdf

Ich frage mich, wie bei Ihnen das "/documents" in den Pfad gerutscht 
ist.  Können Sie mir die dazugehörige Config sagen, d.h. deliver.url.*?
Wir schauen uns unsere Default-Config nochmal an und werden ggf.


> 3. In $OPUS_HOME/opus4/library/RewriteMap/Apache.php findet mein
> Interpreter den Ausdruck mb_strlen in Zeile 130 und 131 nicht.
> Derzeitige Lösung:
> Zeile 130- 135 auskommentieren.

Das weißt darauf hin, dass Ihr PHP nicht mit Multibyte-Support compiled
wurde.  Vermutlich müssen Sie das entsprechende Paket nur per Hand
installieren, können Sie mal suchen ob ein Paket existiert, das 
   "php-mbstring"
oder ähnlich heißt?  Wenn Sie es installiert haben, wäre wir über eine
kurze Rückmeldung sehr dankbar.


Viele Grüße,
-- 
Thoralf Klein <thoralf.klein at zib.de>
Telefon: +49 (30) 841 85-216, Raum: 3011