SaCzech Instalace

Sna‘il jsem se instalaci nanejv˜¨ usnadnit. Program vznikal v prost©ed¡ opera‡n¡ho syst‚mu Unix a d le popisovan˜ postup instalace p©edpokl d , ‘e bude provozov n v tomto syst‚mu. Nicm‚nˆ jeho p©enesen¡ do jin‚ho prost©ed¡ by nemˆlo b˜t principi ln¡m probl‚mem.

Distribuce programu je ulo‘ena v souboru saczechXX.tar.gz (kde XX je ‡¡slo verze), kter˜ m–‘ete z¡skat na URL

ftp://www.cesnet.cz/pub/cesnet/software/www/
Distribuci je t©eba rozbalit pou‘it¡m p©¡kazu
gunzip < saczechXX.tar.gz | tar xvf -
Soubory budou rozbaleny do podadres ©e saczechXX. Pot‚ n sleduje f ze p©izp–soben¡ va¨im konkr‚tn¡m podm¡nk m. Ve¨ker‚ z sahy se t˜kaj¡ souboru make, kter˜ je sou‡ st¡ distribuce. Je t©eba jednak zkontrolovat jeho prvn¡ © dek (za‡¡naj¡c¡ znaky #!), zda obsahuje platn˜ p©¡kaz pro spu¨tˆn¡ interpretu jazyka Perl. D le v tomto souboru n sleduj¡ promˆnn‚, jejich‘ hodnoty mo‘n  uzn te za vhodn‚ zmˆnit. Jsou to:
$perl
Mˆla by obsahovat p©¡kaz (v‡etnˆ absolutn¡ cesty) pro spu¨tˆn¡ interpretu jazyka Perl. Bude vyu‘ita pro vytvo©en¡ prvn¡ch © dk– konverzn¡ch skript–, kter‚ se budou spou¨tˆt jako CGI skripty. Uveƒte proto takovou cestu k interpretu, kterou mohou pou‘¡t CGI skripty (pokud v ¨ server p©i spu¨tˆn¡ mˆn¡ ko©en syst‚mu soubor–, m–‘e se li¨it od obvykl‚ cesty).

$source
Implicitn¡ k¢dov n¡ zdrojov˜ch text– str nek. Zde uveƒte k¢dov n¡, ve kter‚m bude pravdˆpodobnˆ vytvo©ena vˆt¨ina Va¨ich str nek. Jestli‘e si str nka nep©edep¡¨e zdrojov˜ k¢d, bude jako v˜choz¡ pro jej¡ p©ek¢dov n¡ pou‘it tento k¢d. Platn‚ n zvy k¢d– zjist¡te z p©¡pon soubor– abeceda.*

$cgipath
Cesta k CGI skript–m. Obsahem t‚to promˆnn‚ by mˆl b˜t za‡ tek cesty (‡ st uv dˆn  bezprost©ednˆ za jm‚nem serveru), kter  povede ke konverzn¡m skript–m. Jestli‘e konverzn¡ skripty ulo‘¡te do obecn‚ho adres ©e, obsahuj¡c¡ho ostatn¡ CGI skripty a budete se na nˆ odkazovat pomoc¡ URL
http://www.kdesi.cz/cgi-bin/toASCII
a podobnˆ, ponechte implicitn¡ hodnotu "/cgi-bin". Cestu uv dˆjte bez z vˆre‡n‚ho zpˆtn‚ho lom¡tka.

$cgisuffix
P©¡pona CGI skirpt–. Pokud v ¨ server vy‘aduje, aby CGI skripty byly vyzna‡ov ny ur‡itou konkr‚tn¡ p©¡ponou (nej‡astˆji .cgi), uveƒte ji jako hodnotu t‚to promˆnn‚. Je-li server dostate‡nˆ inteligentn¡ na to, aby poznal CGI skript podle cesty, doporu‡uji ponechat jako hodnotu promˆnn‚ pr zdn˜ ©etˆzec.

$getmethod
Zp–sob, kter˜m m  SaCzech z¡sk vat k¢dovan‚ texty. M–‘ete si vybrat jednu z n sleduj¡c¡ch alternativ:
file
Soubory budou vyzved v ny p©¡mo ze syst‚mu soubor– po‡¡ta‡e. Tento zp–sob je efektivn¡, ale umo‘¤uje k¢dovat jen texty, kter‚ jsou p©¡tomny v podobˆ soubor–. Nelze nap©. k¢dovat v˜stupy z CGI skript–.

Zvol¡te-li tuto variantu, nem  ‘ dn˜ v˜znam nastaven¡ promˆnn˜ch $socklib a $flag{"decodequery"}.

http
V tomto re‘imu pr ce SaCzech z¡sk v  k¢dovan‚ dokumenty od sv‚ho serveru prost©ednictv¡m HTTP protokolu. Tedy zahraje si na WWW klienta, odstran¡ sv‚ vlastn¡ jm‚no z dotazu, kter˜ mu byl polo‘en, a polo‘¡ serveru tento modifikovan˜ dotaz. Data, kter  z¡sk  jako odpovˆƒ, posoud¡ a buƒ p©ek¢duje (jestli‘e se jedn  o text, p©esnˆji MIME typ text/html nebo text/plain) nebo propust¡ beze zmˆny.

Tento zp–sob je podstatnˆ m‚nˆ efektivn¡ (obslou‘en¡ ka‘d‚ho dotazu vyvol v  jeden dotaz nav¡c), umo‘¤uje v¨ak p©ek¢dovat v¨e, co je na serveru k dispozici - v‡etnˆ v˜stup– z CGI skript–.

Zvol¡te-li tuto variantu, nem  ‘ dn˜ v˜znam nastaven¡ promˆnn˜ch $defaultfile, $dirdelim a p©¡znak– timeservices a $ifmodifiedsince.

guess
SaCzech se pokus¡ automaticky ur‡it pro ka‘d˜ dotaz, kterou z v˜¨e uveden˜ch metod m  pou‘¡t. Vyu‘¡v  k tomu hodnotu promˆnn‚ $cgipath. Jestli‘e ije za‡ tek cesty ke k¢dovan‚ informaci (‡ st URL, uveden  za vol n¡m skriptu) shodn˜ s $cgipath, pou‘¡je pro z¡sk n¡ dokumentu HTTP. V opa‡n‚m p©¡padˆ jej vyzvedne p©¡mo ze syst‚mu soubor–.

Metoda guess se sna‘¡ o rozumn˜ kompromis mezi p©edchoz¡mi alternativami. Ur‡en¡, kdy pou‘¡t kter˜ zp–sob, v¨ak rozhodnˆ nen¡ dokonal‚.

$socklib
Existence t‚to promˆnn‚ je zp–sobena nejr–znˆj¨¡mi nekompatibilitami a z drhely p©i pou‘¡v n¡ s¡Ÿov˜ch slu‘eb v Perlu. SaCzech p©i z¡sk v n¡ text– protokolem HTTP (pou‘¡v  se p©i metod ch http a guess) pot©ebuje komunikovat se soketem. P©i jeho otev©en¡ vy‘aduje dvˆ konstanty - SOCK_STREAM a AF_INET. Standardn¡m zp–sobem je br t tyto £daje ze syst‚mov˜ch knihoven, av¨ak
  1. jejich existence nen¡ samoz©ejmost¡ - mus¡ se spou¨tˆt h2ph
  2. je to neefektivn¡ (zbyte‡nˆ se interpretuj¡ pomˆrnˆ rozs hl‚ knihovny)
Zkr tka je to komplikovan‚ a pomal‚. Proto jsem jako minim ln¡ variantu pou‘il vlastn¡ definici zm¡nˆn˜ch konstant. Jejich hodnoty by mˆly b˜t stejn‚ v¨ude. Kromˆ toho jsou v souboru make p©ipraveny alternativy pro Perl verze 4.0 a 5.0. Pokud v m vlastn¡ definice nevyhovuje, sta‡¡ p©¡slu¨n˜m zp–sobem upravit koment ©ov‚ znaky, kter˜mi je vybr na jedna z nab¡zen˜ch alternativ.

$defaultfile
Obsahuje jm‚no souboru, kter˜ m  b˜t u‘ivateli p©edlo‘en, pokud zad  pouh‚ jm‚no adres ©e. Vˆt¨inou se pro tento £‡el pou‘¡v  index.html. Pokud u‘ivatel po‘aduje /texty/, ve skute‡nosti obdr‘¡ /texty/index.html.

$dirdelim
Znak, pou‘¡van˜ v dan‚m opera‡n¡m syst‚mu pro oddˆlov n¡ adres ©–. Bude pou‘it v regul rn¡ch v˜razech, proto je t©eba jej p©¡slu¨nˆ vybavit ochrann˜mi zpˆtn˜mi lom¡tky. Nejbˆ‘nˆj¨¡ hodnoty (lom¡tko a zpˆtn‚ lom¡tko) jsou p©ipraveny v souboru make.

$barczhead, $barcztail, $barenhead, $barentail
Texty, kter‚ SaCzech vkl d  do str nky p©ed (...head) a za (...tail) nab¡dku k¢d–. Jsou ve dvou jazykov˜ch verz¡ch - ‡esk‚ (...cz...) a anglick‚ (...en...).
%codename
Asociativn¡ pole, obsahuj¡c¡ jm‚na, pod kter˜mi budou jednotliv‚ k¢dy vystupovat v automaticky generovan‚ nab¡dce k¢d–. Nedoporu‡uji mˆnit. Dost na tom, ‘e m me spoustu k¢d–. Pokud se je¨tˆ budou na r–zn˜ch str nk ch r–znˆ ozna‡ovat, bude v tom £pln˜ gul ¨...
$flag{"timeservices"}
Jedn  se o prvn¡ z p©¡znak–. Jejich p©¡pustn˜mi hodnotami jsou 0 (nula - vypnuto) nebo 1 (jedni‡ka - zapnuto). P©¡znak timeservices ud v , zda se lze spolehnout v˜sledky funkce stat programovac¡ho jazyka Perl, kterou SaCzech vyu‘¡v  pro z¡sk n¡ informac¡ o velikosti a dobˆ vzniku souboru.

Volba je ur‡ena p©edev¨¡m pro opera‡n¡ syst‚my jin‚ ne‘ Unix, ve kter‚m by funkce stat mˆla fungovat bez probl‚m–. U odli¨n˜ch syst‚m– je t©eba vˆc vyzkou¨et.

$flag{"ifmodifiedsince"}
M  skript reagovat na hlavi‡ku If-Modified-Since? Pokud v mi pou‘¡van˜ server nep©ed v  CGI skript–m informace z HTTP hlavi‡ek dotazu (v promˆnn˜ch prost©ed¡ HTTP_hlavi‡ka), nedost v  SaCzech pot©ebn‚ informace. V takov‚m p©¡padˆ volbu vypnˆte.

$flag{"decodequery"}
M  b˜t dotaz (p©i vol n¡ pomoc¡ GET obsah promˆnn‚ prost©ed¡ QUERY_STRING podle specifikace CGI, p©i vol n¡ pomoc¡ POST pak tˆlo dotazu), p©ed van˜ serveru p©i komunikaci protokolem HTTP (metoda http nebo guess), p©ek¢dov n do v˜choz¡ho k¢du (definov n promˆnnou $source)? Je-li tato vlastnost zapnuta, budou p©ek¢dov na data, p©ich zej¡c¡ skriptu jako dotaz. P©edpokl d  se p©i tom, ‘e u‘ivatel je zad  ve stejn‚m k¢du, do kter‚ho si nech v  p©elo‘it dokumenty.

Pokud chcete pou‘¡vat slovenskou verzi programu, p©ejmenujte soubor whichsl.tpl na which.tpl a nahraƒte tak p–vodn¡ ‡esk˜ which.tpl. Na z kladˆ tohoto souboru bude instala‡n¡m programem vytvo©en skript whichcode, nab¡zej¡c¡ u‘ivateli volbu k¢du. Jazyk, kter˜m whichcode oslov¡ u‘ivatele, je jedin˜m rozd¡lem mezi ‡eskou a slovenskou verz¡.

T¡m je ukon‡ena konfigura‡n¡ f ze. Jako dal¨¡ krok spusŸte

./make
Jeho v˜sledkem by mˆla b˜t skupina soubor– toXXXX (kde XXXX jsou n zvy jednotliv˜ch k¢d–) a soubor whichcode. Tyto soubory p©esu¤te do adres ©e s CGI skripty tak, aby jejich um¡stˆn¡ vyhovovalo identifikaci, uveden‚ ve v˜¨e zmi¤ovan‚ promˆnn‚ $cgipath - nap©¡klad
mv to* whichcode /www/cgi-bin/
Doporu‡uji nav¡c pro skript whichcode zav‚st synonyma to__CHARSET__ a to, pokud odkaz na nˆkter˜ k¢dovan˜ soubor nepro¨el SaCzechem nebo j¡m pro¨el se ztr tou des¡tky. Doty‡n  sysnonyma zajist¡ p©¡kazy
cd /www/cgi-bin
ln -s whichcode to__CHARSET__
ln -s whichcode to
T¡m je instalace ukon‡ena.

P©enos do jin‚ho opera‡n¡ho syst‚mu

Podle m‚ho n zoru (mo‘n  naivn¡ho) by SaCzech mˆl b˜t nep©¡li¨ obt¡‘nˆ p©enositeln˜ do prost©ed¡ odli¨n‚ho od Unixu. Jedin‚, co pot©ebujete k instalaci a provozov n¡ programu, je interpret jazyka Perl. Samoz©ejmˆ je t©eba rozbalit distribu‡n¡ soubor, ale tar a GNU zip jsou dostupn‚ pro lecjak‚ syst‚my.

Potenci ln¡mi zdroji probl‚m– mohou b˜t:

Velmi bych p©iv¡tal, kdyby se na SaCzech pod¡val nˆkdo posti‘en˜ serverem v prost©ed¡ MS-Windows NT nebo nˆ‡¡m podobn˜m a sdˆlil mi, zda je skute‡nˆ v tˆchto podm¡nk ch pou‘iteln˜ (p©¡padnˆ jak upravit distribuci, aby byl) nebo zda si m m sundat r–‘ov‚ br˜le.


Tato str nka je sou‡ st¡ on-line dokumentace programu SaCzech.

Pavel Satrapa
28. kvˆtna 1996