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
- jejich existence nen¡ samoz©ejmost¡ - mus¡ se spou¨tˆt h2ph
- 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:
- Dlouh jm‚na soubor–.
- Zp–sob vol n¡ interpretu. V Unixu je program, kter˜ m zpracov vat
doty‡n˜ soubor, identifikov n jeho prvn¡m © dkem ve form tu
#!program. V–bec netu¨¡m, zda se v MS-Windows NT ‡i
nˆ‡em podobn‚m d tato informace zakomponovat p©¡mo do
interpretovan‚ho souboru a jak se tam vlastnˆ spou¨tˆj¡ CGI skripty.
- Pou‘it¡ funkce chmod(). Ta se pou‘¡v na dvou m¡stech
instala‡n¡ho programu make k tomu, aby byly v˜sledn‚ skripty
pova‘ov ny syst‚mem za spustiteln‚. V jin‚m prost©ed¡ budete
pravdˆpodobnˆ muset spustitelnost vznikl˜ch program– to* a
whichcode vyzna‡it jinak.
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