-
Notifications
You must be signed in to change notification settings - Fork 26
Konfigurace imageserveru pro podporu IIIF
Vladimír Lahoda edited this page Dec 5, 2019
·
1 revision
Podpora protokolu IIIF, který je používán klientem Krameria pro funkci výřezů, vyžaduje instalaci imageserveru (balíček od MZK) verze 1.1
.
U instancí, kde není použit Docker a místo NGINXe Apache, je potřeba nakonfigurovat následující (příklad v příslušném virtuálu):
...
ScriptAlias "/cgi-bin/" "/usr/lib/cgi-bin/"
ScriptAlias "/fcgi-bin/" "/usr/lib/cgi-bin/"
<Directory "/usr/lib/cgi-bin">
AllowOverride None
Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
<RequireAll>
<RequireAny>
Require ip 127.0.0.0/8
Require host localhost
</RequireAny>
</RequireAll>
</Directory>
<IfModule mod_fcgid.c>
<IfModule mod_mime.c>
AddHandler fcgid-script .fcgi
</IfModule>
FcgidInitialEnv LOGFILE "/var/log/iipsrv/iipsrv.log"
FcgidInitialEnv VERBOSITY "2"
FcgidInitialEnv JPEG_QUALITY "80"
FcgidInitialEnv MAX_IMAGE_CACHE_SIZE "16"
FcgidInitialEnv MAX_LAYERS "-1"
FcgidInitialEnv MAX_CVT "4000"
# FcgidInitialEnv ALLOW_UPSCALING 0
# FcgidInitialEnv KAKADU_READMODE 2
# FcgidInitialEnv INTERPOLATION 1
# FcgidInitialEnv MEMCACHED_SERVERS=127.0.0.1:11211
# FcgidInitialEnv MEMCACHED_TIMEOUT=1800
FcgidIdleTimeout 0
FcgidMaxProcessesPerClass 4
</IfModule>
...
<IfModule mod_rewrite.c>
RewriteEngine On
LogLevel alert rewrite:trace1
RewriteCond %{QUERY_STRING} ^Zoomify=([a-zA-Z0-9_\/\.\-]+)\/([a-zA-Z0-9\.\,\:]+)/([a-zA-Z0-9\.\,\:\!]+)/([0-9\.\!]+)/([a-zA-Z0-9]+).jpg$
RewriteRule ^/cgi-bin/iipsrv.fcgi http://%{HTTP_HOST}/cgi-bin/iipsrv.fcgi?IIIF=%1/%2/%3/%4/native.jpg [L]
</IfModule>
...
Klíčová jsou přepisovací pravidla v konfiguraci mod_rewrite
.
V okamžiku, kdy uživatel provede výřez, přijde na server request z klienta, například:
"GET /search/iiif/uuid:d7d7cae6-4eed-11e9-8962-005056a2b051/1865,4099,736,418/full/0/default.jpg HTTP/1.1"
Ten je jádrem Krameria přepsán na:
"GET /cgi-bin/iipsrv.fcgi?Zoomify=/home/kramerius/image-server-root/2019/03/25/klg001-0000mj/UC_klg001-0000mj_0001.jp2/1602,3139,1531,1103/full/0/default.jpg HTTP/1.1"
Ten je dále přepsán pomocí výše uvedených pravidel na:
"GET /cgi-bin/iipsrv.fcgi?IIIF=/home/kramerius/image-server-root/2019/03/25/klg001-0000mj/UC_klg001-0000mj_0001.jp2/1602,3139,1531,1103/full/0/native.jpg HTTP/1.1"
a výřez to úspěšně vrátí.
Při ladění jsem také zjistil, že verze imageserveru, kterou máme nasazenou, nerozumí nastavení parametru kvality default.jpg
, ale vyžaduje to přepsat na native.jpg
. Jinak imageserver vrací status 400
: