Quick jump:  What's new

 
Go to:
 
Weblog: for:dpavlin   
in KOHA
Printanje signatura

Instalacija zpl printera na Windowse

Nova verzija printanja koristi Koha Spine Label printanje i zahtjeva instalaciju Zebra printera na Windowsima prema
uputama na https://github.com/dpavlin/Printer-Zebra/blob/master/README

Video instalacije




Upute za instalaciju Zebra printera / Vivainfo

Pritanje signatura zahtjeva ODBC driver za MySQL i korisnika na bazi sa kojim će se spajati program.

Nazivi korisnika:

  • printer_zs - Zatvoreno spremište
  • printer - svi ostali printeri, migrirati na nazive

Dodavanje korisnika u MySQL:

dpavlin@koha:~$ mysql -u root mysql

mysql> create user printer_zs identified by 'password_za_ovaj_account' ;
Query OK, 0 rows affected (0.01 sec)

mysql> grant select,insert on koha.items_print_log to 'printer_zs' ;
Query OK, 0 rows affected (0.15 sec)

mysql> grant select on koha.items to 'printer_zs' ;
Query OK, 0 rows affected (0.00 sec)

mysql> grant select on koha.biblio to 'printer_zs' ;
Query OK, 0 rows affected (0.00 sec)

Passwordi za printere nalaze se na zaštićenom wiki-ju: Zebra printer

Provjera:

mysql> select * from tables_priv ;
+------+------+------------+-----------------+----------------+---------------------+---------------+-------------+
| Host | Db   | User       | Table_name      | Grantor        | Timestamp           | Table_priv    | Column_priv |
+------+------+------------+-----------------+----------------+---------------------+---------------+-------------+
| %    | koha | printer    | items_print_log | root@localhost | 2009-03-27 12:12:17 | Select,Insert |             | 
| %    | koha | printer    | items           | root@localhost | 2009-03-27 12:14:38 | Select        |             | 
| %    | koha | printer    | biblio          | root@localhost | 2009-03-27 12:15:03 | Select        |             | 
| %    | koha | printer_zs | biblio          | root@localhost | 2010-03-09 14:26:30 | Select        |             | 
| %    | koha | printer_zs | items           | root@localhost | 2010-03-09 14:26:24 | Select        |             | 
| %    | koha | printer_zs | items_print_log | root@localhost | 2010-03-09 14:26:19 | Select,Insert |             | 
+------+------+------------+-----------------+----------------+---------------------+---------------+-------------+
6 rows in set (0.00 sec)

Stare bilješke:

Iz tablice items_print_log obnoviti podatak items.datelastseen.
permalink
SIP2

Dokumentacija SIP2 protokola: SIP2_3M_Standard_Interchange_Protocol_2.10.pdf



Koha SIP2 server

Koha koristi SIPServer implementaciju sa https://github.com/atz/SIPServer

SIPconfig.xml

Dodati korisničke račune za svaki selfcheck jedan

<accounts>
      <login id="sc1kat"  password="**password**" delimiter="|" error-detect="enabled" institution="FFZG" />
...

I instituciju

<institutions>
    <institution id="FFZG" implementation="ILS" parms="">
          <policy checkin="true" renewal="true" checkout="true"
                  status_update="false" offline="false"
                  timeout="100"
                  retries="5" />
    </institution>

start server

run from lib directory with

perl -IC4/SIP -MILS C4/SIP/SIPServer.pm /etc/koha/SIPconfig.xml

http://bugs.koha.org/cgi-bin/bugzilla/show_bug.cgi?id=2362

Skripta za pokretanje

dpavlin@koha:/srv$ sudo ./sip2-server.sh start

syslog

SIP server zapisuje transakcije u syslog sa local6 facility:

dpavlin@koha:/var/log$ grep LOG_SIP /usr/share/koha/lib/C4/SIP/SIPServer.pm 
use constant LOG_SIP => "local6"; # Local alias for the logging facility

Da bi preusmjerili logiranje u poseban file treba dodati slijedeće u /etc/syslog.conf:

local6.*        -/var/log/sip2.log

Analiza logova

Broj različitih SIP2 poruka u našoj implementaciji

dpavlin@klin:/srv/ps-trend$ grep MSG sip.*/* | cut -d: -f6 | cut -d\' -f2 | cut -c-2 | sort | uniq -c
   6614 09
   3234 10
   7526 11
   3763 12
   4778 35
   2389 36
   4784 63
   2392 64
    828 93
    414 94
   2875 98
   5750 99

  • 09 Checkin
  • 10 Checkin Response
  • 11 Checkout
  • 12 Checkout Response
  • 35 End Patron Session
  • 36 End Session Response
  • 63 Patron Information
  • 64 Patron Information Response
  • 93 Login
  • 94 Login Response
  • 98 ACS Status
  • 99 SC Status

3M SIP emulator

3M self check emulator kako iskonfigurirati
0d 00 ne radi
0d 0A radi

Popravak za taj problem sa SIP2 server strane

Putty tunnel

putty-sip2-config.png

Konfiguracija

C:\Program Files\3M Library Systems\3M SIP2 Development Kit\SC_Emulator

Settings.sc

Jedina stvarno bitna promjena je:

[COM]
com_type = sockets

[TCP/IP]
ip_address = 127.0.0.1
host_name =
tcp_port = 6001

Pokretanje pod wine-om

dpavlin@klin:/virtual/win$ sudo mount kvm-winxp.img /mnt/usb/ -o loop,offset=`expr 63 \* 512`,uid=dpavlin -t ntfs
dpavlin@klin:/virtual/win$ wine /mnt/usb/Program\ Files/3M\ Library\ Systems/3M\ SIP2\ Development\ Kit/Program/SCEmul.exe

Skripta za pokretanje: SC_Emulator.sh - provjerava da li je SIP server startan i povezuje se na njega

KOHA lokalne promjene

u našem git-u

BUGS

Nova implementacija

https://github.com/dpavlin/Biblio-SIP2

Primjer korištenja:

dpavlin@klin:~/klin/Net-SIP2-Simple$ ACS=10.60.0.252:6001 ./sc-emulator.pl
permalink
Kronologija implementacije

Kronologija događanja relevantnih za implementaciju softvera u Knjižnici Filozofskog fakulteta

kraj 2005.

U NSK osnovan Centralni tim za provođenje projekta implementacije programskog paketa Voyager u knjižnice u sustavu znanosti i visokog obrazovanja.

Knjižnice FF-a odgovaraju na Upinik o implementaciji, potreban NSK u svrhu planiranja čitavog sustava.

24. studenoga 2005. godine potpisan je Stalni ugovor o računalnom programu između Endeavor Information Systems Inc. i Nacionalne i sveučilišne knjižnice u Zagrebu koji predsttavlja glavni ugovor u odnosu na sve ostale akademske i istraživačke institucije u Republici Hrvatskoj.

2006.

Započinje implementaicija Voyager-a u NSK. Otvorene su demo baze za sva ostala sveučilišta i održani orijentacioni treninzi.

Krajem 2006. dovršeni građevinski radovi nove Knjižnice Filozofskog fakulteta. Čeka se II. faza kredita kako bi se moglo započeti s unuranjim uređenjem i opremanjem.

Više od 20. dislociranih knjižnica FF-a nema softver zadovoljavajućih karakteristika. Postoji samo primitivna softverska podrška pri obradi građe i samostalno razvijen online katalog za pretraživanje fonda zadovoljavajućih osobina.

Filozofski fakultet imenuje koordinatora za implemeteciju Voyager-a u svojoj ustanovi.

početak 2007.

NSK počinje s produkcijskim radom u Voyager softveru.

Filozofski fakultet aktivno se uključije u projekt implementacije Voyager-a.

Bez softverskog rješenja koje će podržati sve najfrekventnije poslovne procese u novoj Knjižnici nije moguće pustiti u pogon novu Knjižnicu. Trebalo je automatizirati minimalno obradu u posudbu (žalosna je činjenica da su u tom trenutku Knjižnice FF-a bilježile podatke o posudbi ručno!)
Trebalo je pripremiti građu za smještaj na police u novim čitaonicama, osmisliti novi sustav za smještaj građe, svakom primjerku knjge pridijeliti odgovarajuću oznaku i zapisati to u računalnu bazu.

sredina 2007.

Započinje se sa samostalnim razvojem softvera (WebPAC2) za uređivanje i konverziju podataka kako bi se proces implementacije novoga softvera maksimalno ubrzao.

Knjižnice FF-a imale su u tome trenutku više od 300.000 zapisa o knjigama i drugoj građi, razlomljenih u više od 20 odvojenih baza u softveru CDS/ISIS. Koristile su softver različit od softvera kojeg je koristila NSK i zato je konverzija tih podataka uključivala drugačiju, prilagođenu proceduru. Velik broj knjižnica unutar Sveučilišta u Zagrebu koristi također CDS/ISIS. Softver za konverziju je objavljen pod slobodnom licencom i postojala je nada da će se iskoristiti i za druge knjižnice.

početak 2008.

Nastavljaju se radovi na unutrarnjem uređenju i opremanju zgrade nove Knjižnice. Raspisuje se natječaj za RFID opremu i u dokumentaciji toga natječaja treba navesti koji softver se koristi za knjižnično posovanje (sustavi moraju znati komunicirati).

U užoj i široj okolini nacionalnoga projekta za nabavu knjižničnoga softvera desile su se promjene zbog kojih su se aktivnosti usporile (http://www.nsk.hr/Info.aspx?id=642).

Knjižnice FF-a morale su krenuti u potragu za alternativnim rješenjem, a potraga je bila vođena s dva cilja na umu: rješenje mora biti cjelovito i softver mora omogućiti razmjenu podatake s drugim knjižnicama. Također, rješenje nije smjelo biti skupo jer se samostalna nabava softvera nije planirala.

ožujak 2008.

Odabrana je Koha, slobodno dostupan softver. Započela je intenzivna edukacija o administraciji sustava i pripremanje sustava za prihvat konvertiranih podataka (migracija) i ostala potrebna podešavanja.

srpanj 2008.

Odabran dobavljač RFID opreme. Započinje rad na implementaciji RFID sustava i integraciji s knjižničnim sustavom.

lipanj 2008.

Dovršena migracija podataka u Kohu. Započela obrada građe za čitaonice u otvorenom prisutpu - pridjeljivanje novih oznaka za smještaj građe i fizička obrada primjeraka.

ožujak 2009.

Knjižnica je svečano otvorena 11. ožujka 2009., a 16. ožujka krenuo je automatizirani upis korisnika i posudba. Podaci o korisnicima preuzimaju se iz fakultetskih sustava.

Na policama je čekalo preko 110.000 primjeraka knjiga opremljenih RFID oznakama i novim naljepnicama s oznakom smještaja, spremnih za korištenje i posudbu. Uskoro su stavljeni u pogon i uređaji za samoposudbu knjiga integrirani s Kohom.

lipanj 2009.

U tri mjeseca obrađeno je dodatnih oko 16.000 knjiga za čitaonice u otvorenom pristupu (oko 250 jedinica dnevno). U posudbi je učinjeno oko 30.000 transakcija (oko 500 jedinica dnevno). Nastavlja se s implementacijom ostatka knjižničnog poslovanja (nabava, obrada periodike, međuknjižnična posudba).

Bilo kakva brzopleta zamjena softvera nekim drugim u ovome trenutku ozbiljno bi narušila funkcioniranje informacijskog sustava u Knjižnici FF-a. Zbog kompleksnosti cijeloga postupka knjižnice općenito nemaju tendenciju migirati na drugi softver u ciklusima manjim od 5 godina.

permalink
Koha performance

Ova stranica dokumentira naša podešavanja (i pokušaje) za što bržom Koha instalacijom.



Apache deflate kompresija

Smanjuje veličinu stranice koja se isporučije browersu.

  • apache2

    deflate-test.sh

    apache2/deflate-test.sh
    #!/bin/sh
    
    if [ -z "$1" ] ; then
    	echo "Usage: $0 http://www.example.com/"
    	exit 1
    else
    	url=$1
    fi
    
    time wget $url -O /tmp/foo
    echo
    time wget --header="Accept-Encoding: gzip" $url -O /tmp/foo.gz
    echo
    
    orig_size=`ls -al /tmp/foo    | awk '{ print $5 }'`
    comp_size=`ls -al /tmp/foo.gz | awk '{ print $5 }'`
    
    if [ $comp_size -lt $orig_size ] ; then
    	echo "OK $comp_size < $orig_size";
    else
    	echo "ERROR: no visible compression benefits"
    fi
    
    #ls -al /tmp/foo /tmp/foo.gz

    deflate.conf

    apache2/deflate.conf
    # /etc/apache2/conf.d/deflate.conf
    
    <IfModule mod_deflate.c>
    	AddOutputFilterByType DEFLATE text/html text/plain text/xml
    
    	SetOutputFilter DEFLATE
    	SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ 			no-gzip dont-vary
    	SetEnvIfNoCase Request_URI \.(?:exe|t?gz|zip|bz2|sit|rar)$	no-gzip dont-vary
    	SetEnvIfNoCase Request_URI \.pdf$							no-gzip dont-vary
    
    	BrowserMatch ^Mozilla/4 gzip-only-text/html
    	BrowserMatch ^Mozilla/4\.0[678] no-gzip
    	BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
    
    	DeflateFilterNote Input input_info
    	DeflateFilterNote Output output_info
    	DeflateFilterNote Ratio ratio_info
    	LogFormat '"%r" %{output_info}n/%{input_info}n (%{ratio_info}n%%)' deflate
    	CustomLog /var/log/apache2/deflate.log deflate
    </IfModule>

    server-status.conf

    apache2/server-status.conf
    <IfModule mod_status.c>
    
    # munin needs ExtededStatus
    ExtendedStatus On
    
    <Location /server-status>
    	SetHandler server-status
    	Order deny,allow
    	Deny from all
    #	Allow from all
    	Allow from 127.0.0.1
    	Allow from .ffzg.hr
    </Location>
    
    </IfModule>



Session

dpavlin@koha:~$ sudo ./mk-query-digest /var/log/mysql/mysql-slow.log

# Profile
# Rank Query ID           Response time    Calls R/Call   Item
# ==== ================== ================ ===== ======== ================
#    1 0xC7A803CDD4FE9A36 30517.0000 45.5%   349  87.4413 INSERT UPDATE sessions
#    2 0xB4F2B316DFE865C8  8027.0000 12.0%   119  67.4538 SELECT sessions
#    3 0x6019E0D94A244FF5  3952.0000  5.9%   275  14.3709 SELECT opac_news
#    4 0x1F809CA9753CDEE7  2753.0000  4.1%    23 119.6957 SELECT biblio
#    5 0x27CE7D5D2BC5F598  2305.0000  3.4%   206  11.1893 SELECT fieldmapping
#    6 0xB0F504DD073A49CB  2192.0000  3.3%    30  73.0667 SELECT issues items biblio biblioitems
#    7 0x8ED635CB153D27A5  2146.0000  3.2% 19313   0.1111 SELECT reserves reserveconstraints
#    8 0xDB6DC1962741AB10  1978.0000  3.0%     7 282.5714 SELECT biblio biblioitems itemtypes
#    9 0x32783383AEA5AD49  1642.0000  2.4%    10 164.2000 SELECT items
#   10 0x6DD9F09DA2455228  1361.0000  2.0%     8 170.1250 DELETE sessions

Promjeniti SessionStorage u "as temporary files" i opcionalno pomaknuti ih u /dev/shm umjesti o u /tmp/:

dpavlin@koha:~$ diff -urw /srv/koha/C4/Auth.pm /usr/share/koha/lib/C4/Auth.pm
--- /srv/koha/C4/Auth.pm        2010-02-20 21:41:34.000000000 +0100
+++ /usr/share/koha/lib/C4/Auth.pm      2010-04-26 16:03:17.671211497 +0200
@@ -1341,7 +1341,7 @@
     }
     else {
         # catch all defaults to tmp should work on all systems
-        $session = new CGI::Session("driver:File;serializer:yaml;id:md5", $sessionID, {Directory=>'/tmp'});
+        $session = new CGI::Session("driver:File;serializer:yaml;id:md5", $sessionID, {Directory=>

Profile

Devel::NYTProf

instalacija:

root@koha-dev-git-reorg:~# cpan Devel::NYTProf

profile search query:

root@koha-dev-git-reorg:/usr/share/koha/opac/cgi-bin/opac# time perl -d:NYTProf -I/usr/share/koha/lib/ opac-search.pl q=human | wc
   1553    3259   58648

real    0m4.001s
user    0m3.152s
sys     0m0.560s

generate html report:

root@koha-dev-git-reorg:/usr/share/koha/opac/cgi-bin/opac# nytprofhtml 
Generating report...
Reading nytprof.out
Writing report to nytprof directory

koha-240

First run

dpavlin@koha-240:/tmp$ time perl -d:NYTProf -I/usr/share/koha/lib/ /usr/share/koha/opac/cgi-bin/opac/opac-search.pl q=human | wc
Use of uninitialized value $borrowernumber in string eq at /usr/share/koha/opac/cgi-bin/opac/opac-search.pl line 483.
Use of uninitialized value in string eq at /usr/share/koha/opac/cgi-bin/opac/opac-search.pl line 486.
   1962    3177   64512

real    0m8.561s
user    0m5.708s
sys     0m0.724s

Second run

dpavlin@koha-240:/tmp$ time perl -d:NYTProf -I/usr/share/koha/lib/ /usr/share/koha/opac/cgi-bin/opac/opac-search.pl q=human | wc
Use of uninitialized value $borrowernumber in string eq at /usr/share/koha/opac/cgi-bin/opac/opac-search.pl line 483.
Use of uninitialized value in string eq at /usr/share/koha/opac/cgi-bin/opac/opac-search.pl line 486.
   1962    3177   64512

real    0m6.664s
user    0m5.636s
sys     0m0.816s

Drop caches and run profile:

dpavlin@koha-240:/tmp$ sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'

Zebra reindex

dpavlin@koha-240:/srv/koha$ sudo -u koha ./misc/migration_tools/rebuild_zebra.pl -b -v -r -d /tmp/indexing -k -x -nosanitize

permalink
Podaci na korisničkim karticama

Ova stranica opisuje postupak koji prolaze podaci da bi novootvoreni korisnici preko Koha sučelja
a) dobili članski broj (broj kartice)
b) pojavili se u SafeQ sustavu.

SafeQ sustav povlači podatke o korisnicima iz Kohe preko LDAP-a. LDAP je implementiran direktno na podacima u Kohi (vidi SafeQ integration), ali SafeQ ne može pročitati broj korisnika sa kartice, nego samo serijski broj kartice koji koristi RFID protokol (SID).

Taj broj postoji jedino u log datotekama 3M sustava, a kako računalo na kojem se programiraju čipovi za sad nije spojeno na mrežu, cijela procedura ipak ovisi o povremenom presnimavanju podataka na server.

U razvoju je zamjena za cijelu ovu proceduru koja bi omogućila printanje novih isprogramiranih kartica odmah nakon što se korisnik prvi puta ulogira u Kohu (tj. odmah čim aktivira članstvo u knjižnici).

trenutno stanje

fetchrss: http://via.rot13.org/10.60.0.12/SQL2RSS/koha/
  • There was an error: 500 read failed: error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure | error:140940E5:SSL routines:SSL3_READ_BYTES:ssl handshake failure




Generiranje brojeva kartica

Prvi korak je dodjeljivanje brojeva kartica u obliku 200908240042 gdje su prve znamenke datum a zadnje četiri redni broj korisnika u tom danu. To je jedinstveni broj korisnika koji koriste svi ostali servisi (npr. 3M Selfcheck) ali ne i SafeQ-a!

Generiranje brojeva kartica

ovaj korak radi se na produkcijskoj bazi

dpavlin@koha:/srv/koha-rfid$ ./generate-cardnumber.pl --commit

provjeriti ispis i pokrenuti ponovo sa --commit da bi se promjene zapisale u bazu

generira također backup borrowers tablice

Ispisuje na kraju generirato ime log datoteke:

backup for borrowers table: backup/borrowers.2010-09-02T15:05:09.sql 3838484 bytes
generated print.2010-09-02T15:05:09.txt 41879 bytes

Format loga: cardnumber <tab> login <tab> ime <tab> prezime

dpavlin@klin:~/klin/Biblio-RFID$ head -1 print.2010-09-02T15\:05\:09.txt 
201007140004    kohatest@ffzg.hr        Koha    Testičić Probišić Đž

Printanje iskaznica

ovaj korak se radi na mašini sa koje se printaju iskaznice

Podaci za pritanje

dpavlin@klin:~/klin/Biblio-RFID$ rsync -v koha:/srv/koha-rfid/print*.*.txt .

Pokretanje printanja

Printanje čeka da se kartica makne na RFID čitača da bi nastavilo!

dpavlin@klin:~/klin/Biblio-RFID$ ./scripts/print.pl print.2010-09-02T15\:05\:09.txt

...

QUEUE EMPTY - printing finished
log.print/2010-08-17T16:36:27.txt 100 bytes created

Kopiranje SID-ova za Kohu

dpavlin@klin:~/klin/Biblio-RFID$ rsync -rav log.print/ koha.ffzg.hr:/srv/koha-rfid/log.print/

Import SID-ova u Kohu

dpavlin@koha-dev:/srv/koha-rfid$ ./rfid2koha-borrower-attribute.pl log.print/2010-08-17T16\:36\:27.txt


Import 3M log datoteka

ovaj korak je stara procedura i ne koristi se više

kopiranje novih logova na koha-dev

*.LOG datoteke iz 3M softwarera se kopiraju u /srv/koha-rfid/log

dpavlin@koha:~$ sudo mount /mnt/koncar/
dpavlin@koha:~$ cp -v /mnt/koncar/* /srv/koha-rfid/log/
dpavlin@koha:~$ sudo umount /mnt/koncar/

preimenovanje u intervale koje pokrivaju

dpavlin@koha:/srv/koha-rfid$ make rename
find log/ -name "*.LOG" | xargs -i ./rename-log.sh {}
chmod 644 log/*.log

dpavlin@koha:/srv/koha-rfid$ ls -al log | head
total 27860
drwxr-xr-x 4 dpavlin dpavlin   4096 2010-03-01 16:33 .
drwxrwxr-x 6 dpavlin dpavlin   4096 2010-02-25 15:18 ..
-rw-r--r-- 1 dpavlin dpavlin 524488 2010-02-21 02:10 20080922-20081111.log
-rw-r--r-- 1 dpavlin dpavlin 524334 2010-02-21 02:10 20081015-20081024.log
-rw-r--r-- 1 dpavlin dpavlin 524606 2010-02-21 02:10 20081024-20081103.log
-rw-r--r-- 1 dpavlin dpavlin 524322 2010-02-21 02:10 20081027-20081027.log
-rw-r--r-- 1 dpavlin dpavlin 524510 2010-02-21 02:10 20081027-20081029.log
-rw-r--r-- 1 dpavlin dpavlin 524296 2010-02-21 02:10 20081029-20081103.log
-rw-r--r-- 1 dpavlin dpavlin 524366 2010-02-21 02:10 20081103-20081106.log

provjera novih podataka

cd log
git status
git add *.log
git commit -m 'new data'

parse log

dpavlin@koha-dev:/srv/koha-rfid$ make rfid

...

wc -l rfid.txt
12196 rfid.txt
echo "`cat rfid.txt | cut -d, -f2 | sort -u | wc -l` different tags"
11243 different tags
echo "`cat rfid.txt | cut -d, -f2- | grep ',20' | sort -u | wc -l` card tags"
4151 card tags

Kopiranje borrowers tablice s produkcije na development

dpavlin@koha-dev:/srv/koha-rfid$ ./update-borrowers.sh

Ovo će stvoriti borrowers2 tablicu na developmentu i prekopirati sve nove korisnike u borrowers tablicu, a postojećim korisnicima upisati cardnumber ako je on u međuvremenu generiran na produkciji.

update kohe

(pokreće sam i parsanje log dataoteka)

dpavlin@koha-dev:/srv/koha-rfid$ make rfid2koha
permalink
Backup i restore


MySQL baza iz komandne linije

Backup

$ mysqldump --add-drop-table --single-transaction -u _kohauser_ -p koha > 2008-11-11_koha.sql
$ mysqldump --add-drop-table -u _kohauser_ -p koha issues > 2008-11-11_koha.issues.sql

http://www.nabble.com/Backing-up-3.0-to21076508.html

Restore

$ mysql -u _kohauser_ -p koha < 2008-11-11_koha.sql
$ mysql -u _kohauser_ -p koha.issues < 2008-11-11_koha.issues.sql

Restore sa zfs

opr - zfs backup server

# Find backup snapshot to restore
dpavlin@opl:~$ ./veid2hostname.sh 
212052 koha-dev.rot13.org
212056 webpac2.rot13.org
212226 koha.ffzg.hr
dpavlin@opl:~$ sudo zfs list | grep 212226 | tail -3
opl/backup/212226@2010-01-05   662M      -  25.4G  -
opl/backup/212226@2010-01-06    28K      -  25.4G  -
opl/clone/212226-mlin         30.0M  24.5G  25.4G  /opl/clone/212226-mlin

# make clone to access files
dpavlin@opl:~$ sudo zfs clone opl/backup/212226@2010-01-06 opl/clone/koha-2010-01-06
dpavlin@opl:~$ df -h /opl/clone/koha-2010-01-06
Filesystem            Size  Used Avail Use% Mounted on
opl/clone/koha-2010-01-06
                       50G   26G   25G  51% /opl/clone/koha-2010-01-06

cpio file transfer

  • mlin - hardware which provide resources
  • opl - machine with backup files
root@mlin:/virtual.clone# mkdir koha-2010-01-06
root@mlin:/virtual.clone# cd koha-2010-01-06/

# start listener for cpio data transfer
root@mlin:/virtual.clone/koha-2010-01-06# nc -l -p 8888 | pv | cpio --extract --make-directories --preserve-modification-time --numeric-uid-gid --sparse

dpavlin@opl:~$ sudo bash
root@opl:~# cd /opl/clone/koha-2010-01-06
root@opl:/opl/clone/koha-2010-01-06# find . | cpio --create | pv | nc 10.60.0.93 8888

rsync file update

dpavlin@mlin:~$ sudo rsync -ravH --numeric-ids --sparse --delete --exclude 'backup*' \
  10.60.0.90:/opl/clone/koha-2010-01-06/ /virtual.clone/koha-2010-01-06/

real    24m48.767s
user    5m0.027s
sys     2m3.656s

Kopiranje postojeće virtualne mašine prije rsync-a da bi se smanjilo broj promjena koje treba prenjeti rsync-om:

dpavlin@mlin:/virtual.clone/koha.ffzg.hr$ time sudo cp -ar * ../koha-2010-01-06/

real    14m59.742s
user    0m0.932s
sys     0m38.278s

Virtualna mašina

Nakon restora sa zfs-a treba napraviti sljedeća podešavanja:

Pokrenuti screen u kojem će biti virtualna mašina

dpavlin@mlin:~$ screen -S koha-upgrade

Filesystem

lvcreate -s /dev/vg/koha -L 80G -n koha-upgrade

root@mlin:~# mount /dev/vg/koha-upgrade /virtual.clone/koha-upgrade/
root@mlin:~# df /virtual.clone/koha-upgrade/
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/vg-koha--upgrade
                      82569904  56551456  26018448  69% /virtual.clone/koha-upgrade

Start LXC

root@mlin:~# cd /srv/sysadmin-cookbook/recepies/lxc/
root@mlin:/srv/sysadmin-cookbook/recepies/lxc# ./ve2lxc.sh /virtual.clone/koha-upgrade/ 10.60.0.253 koha-upgrade

Setup inside LXC

  • ugasiti monit apt-get remove monit
  • provjeriti IP adrese u /etc/apache2/sites-enabled/

BTRFS

root@opl:~# zfs clone opl/backup/212226@2010-03-06 opl/clone/koha-2010-03-06

root@prod:/virtual# time rsync -rav --exclude 'backup/*' --delete 10.60.0.90::clone/koha-2010-03-06/ /virtual/koha/
receiving incremental file list
...

sent 3297036 bytes  received 4392640729 bytes  6527004.85 bytes/sec
total size is 23473104677  speedup is 5.34

real    11m13.873s
user    1m15.985s
sys     0m39.890s

root@prod:/virtual# btrfsctl -s /virtual/koha@2010-03-06 /virtual/koha
operation complete
Btrfs Btrfs v0.19

root@prod:/virtual# btrfsctl -s /virtual/koha-242 /virtual/koha
operation complete
Btrfs Btrfs v0.19

dpavlin@prod:~$ sudo bash ve2lxc.sh /virtual/koha-242 10.60.0.242 koha-242

permalink
Pregled sustava

Komponente sustava

Shema prikazuje komponente softverskog sustava u Knjižnici Filozofskog fakulteta u Zagrebu.

sustav.png

Virtual LDAP

Za prijenos podataka o korisnicima među sustavima koristi se LDAP.

virtual_ldap.png
permalink
LDAP

Kako podesiti Kohu da radi s LDAP bazom?

Video prezentacije o Virtual LDAP-u: http://html5tv.rot13.org/HULK-Virtual_LDAP.html

Prezentacija: hulk-Virtual-LDAP.odp



Što nam omogućava Koha?

  • otvaranje novih korisnika koji postoje u LDAP-u (replicate, uključeno)
  • sinhronizacija podataka između LDAP-a i kohe kod svakog logiranja korisnika (update, isključeno)

Time dobivamo nove korisnike prvi puta kada se ulogiraju.

Kako vidjeti strukturu LDAP baze?

ldapvi --host _hostname_:389 -d
ldapvi --host _hostname_:389 -d uid=_username_

Logiranje korisnika sa login@ffzg.hr

Greška:

[Tue Jan 13 23:58:36 2009] opac-user.pl: LDAP Auth rejected : invalid password for user 'mglavica@ffzg.hr'. LDAP error #50: LDAP_INSUFFICIENT_ACCESS
[Tue Jan 13 23:58:36 2009] opac-user.pl: # The client does not have sufficient access to perform the requested
[Tue Jan 13 23:58:36 2009] opac-user.pl: operation

Koha LDAP konfiguracija

Provjeriti verziju

dpavlin@koha-dev:/srv/koha$ grep VERSION /srv/koha/C4/Auth_with_ldap.pm 
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $debug);
        $VERSION = 3.10;        # set the version for version checking

/etc/koha/koha-conf.xml

<ldapserver id="ldapserver" listenref="ldapserver">
<!--
 <hostname>ldaps://ldap.ffzg.hr</hostname>
-->
 <hostname>ldap://localhost:1389</hostname>
 <base>dc=ffzg,dc=hr</base>

 <replicate>1</replicate>  <!-- add new users from LDAP to Koha database -->
 <update>0</update>        <!-- update existing users in Koha database -->

 <auth_by_bind>1</auth_by_bind>
 <principal_name>%s</principal_name> <!-- optional, for auth_by_bind: a printf format to make userPrincipalName from koha userid -->

 <mapping>            <!-- match koha SQL field names to your LDAP record field names -->
    <firstname   is="givenname"     ></firstname>
    <surname     is="sn"            ></surname>
    <address     is="ffzg-ml_postanska_adresa_0" ></address>
<!--
    <city        is="ffzg-prebivaliste_mjesto" ></city>
-->
    <city        is="ffzg-ml_postanska_adresa_1" ></city>
    <zipcode     is="ffzg-prebivaliste_postanski_broj"></zipcode>

    <branchcode  is="local-branch"        >FFZG</branchcode>
    <userid      is="hredupersonuniqueid"  ></userid>
    <password    is="userpassword"  ></password>
    <email       is="mail"          ></email>
    <categorycode is="local-categorycode"  >IMP</categorycode>

    <dateofbirth is="ffzg-datum_rodjenja" ></dateofbirth>
    <sex is="ffzg-spol" ></sex>
    <phone is="ffzg-ml_telefoni_fixed"></phone>
    <mobile is="ffzg-ml_telefoni_mobile"></mobile>

 </mapping>
</ldapserver>

Koristi LDAP rewrite

Da bi sve radilo potrebno je ugasiti ExtendedPatronAttributes na https://10.60.0.252:8443/cgi-bin/koha/admin/preferences.pl?tab=patrons



auth as user promjene (prvi pokušaj)

Koha konfiguracija skoro radi, osim što je LDAP DN login@ffzg.hr umjesto uid=login,dc=ffzg,dc=hr

Ali, kako se spajamo na pravi ldap.ffzg.hr preko naše proxy skripte koja obogaćuje zapis podacima,
na tom mjestu rewritamo i DN u ispravan oblik

i konfiguracijom u /etc/koha/koha-conf.xml

<ldapserver id="ldapserver" listenref="ldapserver">
 <hostname>ldaps://ldap.ffzg.hr</hostname>
 <base>dc=ffzg,dc=hr</base>

 <replicate>1</replicate>  <!-- add new users from LDAP to Koha database -->
 <update>1</update>        <!-- update existing users in Koha database -->
 <mapping>            <!-- match koha SQL field names to your LDAP record field names -->
        <firstname   is="givenname"     ></firstname>
        <surname     is="sn"            ></surname>
        <address     is="ffzg-ml_postanska_adresa_0" ></address>
<!--
        <city        is="ffzg-prebivaliste_mjesto" ></city>
-->
        <city        is="ffzg-ml_postanska_adresa_1" ></city>
        <zipcode     is="ffzg-prebivaliste_postanski_broj"></zipcode>

        <branchcode  is="local-branch"        >FFZG</branchcode>
        <userid      is="hredupersonuniqueid"  ></userid>
        <password    is="userpassword"  ></password>
        <email       is="mail"          ></email>
        <categorycode is="local-categorycode"  >IMP</categorycode>

        <dateofbirth is="ffzg-datum_rodjenja" ></dateofbirth>
        <sex is="ffzg-spol" ></sex>
        <phone is="ffzg-ml_telefoni_fixed"></phone>
        <mobile is="ffzg-ml_telefoni_mobile"></mobile>

 </mapping>
</ldapserver>

ldaps na upstream LDAP

ldaps zahtjeva instalaciju IO::Socket::SSL sa

sudo apt-get install libio-socket-ssl-perl

cardnumber ne dolazi iz ldap-a

Osim kod prvog ulogiravanja korisnika kada mu se postavlja isti kao mail

izbaciti sve promjene izvan Kohe (TRENUTNO RJEŠENJE)

Da bi nam upgrade na novije verzije Kohe bio što jednostavniji, odlučili smo sve LDAP promjene na kraju izbaciti iz Kohe u LDAP rewrite.

Koje podatke imamo u LDAP bazi?

ovo spada pod osnovne podatke:

  * uid - identifikator, korisnicko ime
  * hrEduPersonUniqueID - identifikator, uid@ffzg.hr
  * cn - ime i prezime
  * sn - prezime
  * givenName - ime
  * mail
  * hrEduPersonUniqueNumber - JMBG, JMBAG, LOCAL_NO, PASSPORT_NO i slicni identifikatori..
  * hrEduPersonAffiliation - povezanost s ustanovom, moze biti vise povezanosti
  * hrEduPersonPrimaryAffiliation - temeljna povezanost
  * hrEduPersonExpireDate - datum istek temeljne povezanosti, odnosno korisnockog racuna

"Kada cu produzivati korisnicke racune, ja cu svim studentima
kojima mogu, upisati JMBAG. Kasnije bi to bilo dobro prebaciti
u OIB, koji se vec i spominje u raspravama :)" (Došen)

Linkovi

Koha virtual LDAP, LDAP rewrite

permalink
Zebra indexing


Zebra start i stop

mglavica@koha-upgrade:~$ sudo /usr/share/koha/bin/koha-zebra-ctl.sh start
Starting Zebra Server

mglavica@koha-upgrade:~$ sudo /usr/share/koha/bin/koha-zebra-ctl.sh stop
Stopping Zebra Server

Obnavljanje zapisa u indexu

Za to bi trebao služiti Zebraqueue Daemon, ali ne radi kako treba (koha-zebraqueue-ctl.sh). Umjesto toga index se rebuilda svako malo uz pomoć crona

Pokrenuti kao user koha.

KOHA_CONF=/etc/koha/koha-conf.xml
PERL5LIB=/usr/share/koha/lib

# m h  dom mon dow   command
*/4 * * * *   ps ax | grep -v grep | grep rebuild_zebra.pl || /srv/koha/misc/migration_tools/rebuild_zebra.pl -b -z >/dev/null

Dodavanje polja u pretraživanje

etc/zebradb/marc_defs/marc21/biblios/record.abs
mapping of MARC fields to indexes

etc/zebradb/biblios/etc/bib1.att
list of search indexes and their corresponding Z39.50 use attributes

etc/zebradb/ccl.properties
for searching purposes

UTF-8 to ASCII mappings

http://lists.indexdata.dk/pipermail/zebralist/2007-August/001707.html

Dijakritički znakovi

Situacija: u bazu su povučeni zapisi iz NSK (Voyager) u kojima su naša slova s dijaktiticima zabilježena kao dva znaka (slovo bez dijakritika + dijaktitik).

Nije lijepo da takvi znakovi završe u Koha bazi, ali kad su već unutra, treba ih nekako učiniti pretraživima.
U datoteku /etc/koha/zebradb/etc/word-phrase-utf.chr dodati ekvivalente:

git

# Characters to be considered equivalent for searching purposes
equivalent č(cˇ)
equivalent Č(Cˇ)
equivalent ć(c´)
equivalent Ć(C´)
equivalent š(sˇ)
equivalent Š(Sˇ)
equivalent ž(zˇ)
equivalent Ž(Zˇ)

Sad to dobro radi kad se pretražuje s "normalnim" znakovima. Ostaje problem kod browsanja preko liknova - strgani zapisi nađu samo strgane (pr. http://10.60.0.253/cgi-bin/koha/opac-detail.pl?biblionumber=241488, Pavao Pavličić).

Zebra register i shadow

Veličinu zebra register i shadow treba podesiti sukladno veličini baze. Za oko 120.000 zapisa, dovoljno je 4G. Za FF je sada podešeno 16GB.

Z39.50 server

Dokumentacija

Ali sve je uzalud jer je pravi odgovor na http://www.indexdata.com/zebra/doc/zebrasrv.html

The first two servers, "server1" and "server2", can be reached by both listener addresses - since no listenref attribute is specified.

Pravo rješenje

test-yaz-zebra.sh

Server

služi za razmjenu zapisa

Konfiguracija

Dodati novi public server prema uputama na http://wiki.koha-community.org/wiki/Troubleshooting_Koha_as_a_Z39.50_server

Dokumentacija

Najkorisnije:

Ostalo:

FFZG

yaz-client

dpavlin@koha-dev:~$ yaz-client 
Z> open localhost:9999/biblios
Connecting...OK.
Sent initrequest.
Connection accepted by v3 target.
ID     : 81
Name   : Zebra Information Server/GFS/YAZ
Version: 3.0.52 e687cb7eb87c841f0d1a374174d51d30371f2d97
Options: search present delSet triggerResourceCtrl scan sort extendedServices namedResultSets
Elapsed: 1.605266
Z> find human
Z> show 1
Z> quit
See you later, alligator.

Use Koha's CCL queries:

dpavlin@koha-dev:~$ yaz-client -c /etc/koha/zebradb/ccl.properties localhost:9999/biblios
Connecting...OK.
Sent initrequest.
Connection accepted by v3 target.
ID     : 81
Name   : Zebra Information Server/GFS/YAZ
Version: 4.1.7 c43e561fdfe12989a6040163dae0e28ba0a02453
Options: search present delSet triggerResourceCtrl scan sort extendedServices namedResultSets
Elapsed: 0.001445
Z> querytype ccl2rpn
Z> find (kw,wrdl,rtrn=human ) not Suppress=1
Sent searchRequest.
Received SearchResponse.
Search was a success.
Number of hits: 1935, setno 1
SearchResult-1: term=    human cnt=1935, term=    1 cnt=21
records returned: 0
Elapsed: 0.025643
Z> 

Debug Zebra problems

enable all logging

# add all to http://www.loc.gov/z3950/agency/defns/bib1diag.html
ZEBRAOPTIONS="-v none,fatal,warn,all"

dpavlin@koha-dev:~$ sudo /etc/init.d/koha-zebra-ctl.sh restart
Restarting the Zebra Server

dpavlin@koha-dev:~$ sudo tail -f /var/log/koha/koha-zebradaemon-output.log | grep ERROR
18:45:58-29/03 zebrasrv(1) 605aecf5 [request] Init ERROR 1011 ID:81 Name:ZOOM-C/YAZ Version:4.1.7 c43e561fdfe12989a6040163dae0e28ba0a02453

Lookup error codes at http://www.loc.gov/z3950/agency/defns/bib1diag.html



Problemi

Neki zapisi nestaju u katalogu

Nepoznat obrazac u zapisima koji fale.

Nagađanje 1:

da li su problematični oni zapisi koji imaju različit biblionumber i biblioitemnumber?
To je dozvoljena kombinacija, ne bi trebalo smetati.
Problem je u nečem drugom, no ipak smo odlučili te zapise poindeksirati ponovo, ovako:

mysql> create temporary table foo as select max(id) as id from zebraqueue join biblioitems on biblioitems.biblionumber=zebraqueue.biblio_auth_number and biblionumber <> biblioitemnumber group by biblio_auth_number ;
mysql> update zebraqueue set done = 0 where id in (select id from foo) ;

Nakon toga pokrenuti rebuild_zebra.pl.

I dalje postoje zapisi koji se ne vide u katalogu.

Ovo javi kad se poindeksiraju svi zapisi s rebuild_zebra.pl -b -v -r:

00:24:15-02/02 zebraidx(1490) [log] Records: 238000 i/u/d 238000/0/0
00:24:19-02/02 zebraidx(1490) [log] MARC: Bad directory
00:24:19-02/02 zebraidx(1490) [warn] MARC: Base address does not follow directory
00:24:19-02/02 zebraidx(1490) [warn] MARC: Bad offsets in data. Skipping rest
00:24:19-02/02 zebraidx(1490) [warn] Record didn't contain match fields in (bib1,Local-number)
00:24:19-02/02 zebraidx(1490) [log] error grs.marcxml.record /tmp/gdqck1EhgW/biblio/exported_records 234318986
00:24:31-02/02 zebraidx(1490) [log] Merge 0.4% completed; 38 minutes remaining

Nagađanje 2:

Potrgan MARC

  • napraviti dump MARC zapisa iz Kohe (uz pomoć WebPAC2)
  • provjeriti s marclint

Duplanje zapisa u zebri

mglavica@koha:/etc/koha/zebradb$ diff -u /srv/koha/etc/zebradb/biblios/etc/bib1.att biblios/etc/bib1.att 
--- /srv/koha/etc/zebradb/biblios/etc/bib1.att 2010-02-20 21:41:34.000000000 +0100
+++ biblios/etc/bib1.att       2010-02-22 05:48:19.000000000 +0100
@@ -56,7 +56,7 @@
 att 51   Number-music-publisher
 att 52   Number-db
 att 53   Number-local-call
-att 54   ln
+att 54   language
 att 55   Code-geographic
 att 56   Code-institution
 att 57   Name-and-title

Out of memory

permalink
Koha LDAP config

Provjeriti verziju

dpavlin@koha-dev:/srv/koha$ grep VERSION /srv/koha/C4/Auth_with_ldap.pm 
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS $debug);
        $VERSION = 3.10;        # set the version for version checking

/etc/koha/koha-conf.xml

<ldapserver id="ldapserver" listenref="ldapserver">
<!--
 <hostname>ldaps://ldap.ffzg.hr</hostname>
-->
 <hostname>ldap://localhost:1389</hostname>
 <base>dc=ffzg,dc=hr</base>

 <replicate>1</replicate>  <!-- add new users from LDAP to Koha database -->
 <update>0</update>        <!-- update existing users in Koha database -->

 <auth_by_bind>1</auth_by_bind>
 <principal_name>%s</principal_name> <!-- optional, for auth_by_bind: a printf format to make userPrincipalName from koha userid -->

 <mapping>            <!-- match koha SQL field names to your LDAP record field names -->
    <firstname   is="givenname"     ></firstname>
    <surname     is="sn"            ></surname>
    <address     is="ffzg-ml_postanska_adresa_0" ></address>
<!--
    <city        is="ffzg-prebivaliste_mjesto" ></city>
-->
    <city        is="ffzg-ml_postanska_adresa_1" ></city>
    <zipcode     is="ffzg-prebivaliste_postanski_broj"></zipcode>

    <branchcode  is="local-branch"        >FFZG</branchcode>
    <userid      is="hredupersonuniqueid"  ></userid>
    <password    is="userpassword"  ></password>
    <email       is="mail"          ></email>
    <categorycode is="local-categorycode"  >IMP</categorycode>

    <dateofbirth is="ffzg-datum_rodjenja" ></dateofbirth>
    <sex is="ffzg-spol" ></sex>
    <phone is="ffzg-ml_telefoni_fixed"></phone>
    <mobile is="ffzg-ml_telefoni_mobile"></mobile>

 </mapping>
</ldapserver>

Koristi LDAP rewrite

Da bi sve radilo potrebno je ugasiti ExtendedPatronAttributes na https://10.60.0.252:8443/cgi-bin/koha/admin/preferences.pl?tab=patrons

permalink
Weblog Navigation
Loading...
Weblog Archives
  • Loading...