SaCzech-Uj: Instalace

SaCzech-Uj je pouÚitelnÙ v prostÒedÉ operaÃnÉho syst×mu Unix, pro kter× je dÁle popisovanÙ postup instalace urÃen.

Distribuce programu je uloÚena v souboru

saczechUj.tar.gz
Distribuci je tÒeba rozbalit pouÚitÉm pÒÉkazu
gunzip < saczechUj.tar.gz | tar xvf -
Soubory budou rozbaleny do podadresÁÒe saczechUj. 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:
$homedir
UNIXovÁ cesta na hlavnÉ (login) adresÁÒ uÚivatele.

$user
VirtuÁlnÉ URL cesta (za jm×nem serveru) vedoucÉ na WWW koÒen uÚivatele.

$cgipath
VirtuÁlnÉ URL cesta vedoucÉ k CGI skriptÊm pro zmÅnu kÏdovÁnÉ.
NechÔ napÒ. login adresÁÒ uÚivatele je /home/group/USER,
WWW koÒen tohoto uÚivatele je /home/group/USER/www
a t×to UNIXov× cestÅ odpovÉdÁ virtuÁlnÉ URL cesta http://www.kdesi.ca/~USER/
(tj., vÓechny soubory, kter× uÚivatel umÉstÉ do jak×holiv podadresÁÒe pod /home/group/USER/www jsou k dispozici cel×mu svÅtu - pokud to uÚivatel dovolÉ vhodnÙm nastavenÉm mÏdu jejich pÒÉstupu - vÅtvenÉm z tohoto URL). NechÔ uÚivatel umÉstÉ sv× CGI skripty do
/home/group/USER/www/cgi-bin,
vnejÓÉ svÅt je pak mÊÚe vyvolÁvat jako
http://www.kdesi.ca/~USER/cgi-bin/toASCII.cgi/..., etc.
V tomto pÒÉpadÅ je nutno tÒi vÙÓe uveden× promÅnn× nastavit takto:
$homedir="/home/group/USER";
$user="/~USER";
$cgipath="/~USER/cgi-bin";
(uvÁdÅjte bez zÁvÅreÃnÙch zpÅtnÙch lomÉtek).

Pokud je moÚno skripty instalovat na serveru globÁlnÅ (implicitnÅ do /www/cgi-bin), coÚ je situace odpovÉdajÉcÉ pÊvodnÉmu SaCzechu, budou volÁny jako http://www.kdesi.ca/cgi-bin/toASCII.cgi/~USER/..., etc.
a nastavenÉ pÒÉsluÓnÙch promÅnnÙch je:

$homedir="";
$user="";
$cgipath="/cgi-bin";

$names
PromÅnnÁ, kterÁ urÃuje volbu nÁzvÊ generovanÙch skriptÊ. MÊÚe nabÙvat hodnot "WWWdia" a "EUnet". OdpovÉdajÉ jim dvÅ rÊzn× definice pole @codes. VzÁjemnÙ vztah obou definic je zajiÓÔovÁn asociativnÉm polem %altCodes. PÒiÒazenÉ kÏdÊ a abeced uloÚenÙch v souberech abeceda.* je zajiÓÔovÁno asociativnÉm polem %abcNames.

$cgiprefix
òetÅzec, kterÙm bude zaÃÉnat nÁzev skriptÊ. Jm×no j-t×ho skritptu bude vytvÁÒeno takto: $cgiprefix.$codes[j].$cgisuffix.

%codename
AsociativnÉ pole, obsahujÉcÉ jm×na, pod kterÙmi budou jednotliv× kÏdy vystupovat v skriptu whichcode.cgi.

SaCzech-Uj definuje tyto promÅnnÅ a pole nÁsledovÅ:
if ( $names eq "WWWdia" )
{
$cgiprefix="to";
# nadpisy kodu ve whichcode
$codename{"ASCII"}="ASCII";
$codename{"CP1250"}="MS Win";
$codename{"CP852"}="PC Latin 2";
$codename{"ISO-8859-2"}="ISO Latin 2";
$codename{"ISO-8859-1"}="ISO Latin 1";
$codename{"KEYBCS2"}="KEYBCS2";
$codename{"KOI8-CS"}="KOI8-CS";
$codename{"MAC"}="Mac";
@codes=
 ("ASCII","CP1250","MAC","ISO-8859-2","ISO-8859-1","CP852","KEYBCS2","KOI8-CS");
%abcNames=("ASCII","ASCII","CP1250","CP1250","MAC","MAC",
 "ISO-8859-2","ISO-8859-2","ISO-8859-1","ISO-8859-1","CP852","CP852",
 "KEYBCS2","KEYBCS2","KOI8-CS","KOI8-CS");
%altCodes=("ASCII","ascii","CP1250","1250","MAC","mac","ISO-8859-2","iso",
 "ISO-8859-1","iso1","CP852","852","KEYBCS2","kam","KOI8-CS","koi8-cs");
}
elsif ( $names eq "EUnet")
{
$cgiprefix="";
# nadpisy kodu ve whichcode
$codename{"ascii"}="Ascii";
$codename{"1250"}="CP1250";
$codename{"852"}="PC Latin 2";
$codename{"iso"}="ISO Latin 2";
$codename{"iso1"}="ISO Latin 1";
$codename{"kam"}="Kamenicti";
$codename{"koi8-cs"}="KOI8-CS";
$codename{"mac"}="Mac";
@codes=("ascii","1250","mac","iso","iso1","852","kam","koi8-cs");
%abcNames=("ascii","ASCII","1250","CP1250","mac","MAC","iso","ISO-8859-2",
 "iso1","ISO-8859-1","852","CP852","kam","KEYBCS2","koi8-cs","KOI8-CS");
%altCodes=%abcNames;
}
else { die '$names'." v 'make' se musi rovnat bud \"WWWdia\" nebo \"EUnet\"\n"; }

$whichcodelang
Zde uveÄte jazyk (cesky nebo slovensky), kterÙm bude skript whichcode[.cgi], nabÉzejÉcÉ volbu kÏdu, oslovovat uÚivatele. VÓechny ostatnÉ vygenerovan× skripty jsou identick× pro oba jazyky.

$source
KÏdovÁnÉ zdrojovÙch textÊ strÁnek. Zde uveÄte kÏdovÁnÉ, ve kter×m budou vytvoÒeny vÓechny VaÓe strÁnky. JestliÚe na zaÃÁtku prvnÉho ÒÁdku (jako prvnÉ slovo) strÁnky nenÉ pomocÉ komentÁÒe <!-- MYCHARSET=... --> uveden zdrojovÙ kÏd identickÙ s obsahem promÅnn× $source, bude strÁnka odeslÁna bez pÒekÏdovÁnÉ! (pÒedpoklÁdÁ se o nÉ, Úe je v ASCII). make automaticky provÅÒÉ, zdÁ VÁmi vybranÁ hodnota $source je platnÙm jm×nem kÏdu pro danou volbu promÅnn× $names.


NastavenÉ vÓech ostatnÉch parametrÊ make se ÒÉdÉ stejnÙmi pravidly jako v pÊvodnÉm SaCzechu:
$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).

$cgisuffix
PÒÉpona CGI skriptÊ. 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.

$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.

$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-Uj 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.


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Ê (toXXX[.cgi] nebo yyy[.cgi] a soubor whichcode[.cgi]. 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Ùch promÅnnÙch $cgipath a $homedir - napÒÉklad
mv *.cgi ~/www/cgi-bin/
DoporuÃuji navÉc pro skript whichcode zav×st synonyma to__CHARSET__ (__CHARSET__) a to, protoÚe SaCzech-Uj neprovÁdÉ ÚÁdnou substituci za __CHARSET__. DotyÃnÁ synonyma zajistÉ pÒÉkazy
cd ~/www/cgi-bin
ln -s whichcode to__CHARSET__
ln -s whichcode to
pÒÉpadnÅ
ln -s whichcode.cgi __CHARSET__.cgi
ln -s whichcode.cgi to.cgi

a podobnÅ.
TÉm je instalace ukonÃena.