aneb suchá teorie
Obecně - Kořenový adresář - Startovní soubor - Procházení souborů - Subdomény - Přístup na heslo - Přesměrování - Logování (sledování provozu) - Patičky - Ošetření chyb - Spouštění programů - FTP přístup - FrontPage Extensions
Server jsou dvě věci:
Ten počítač má nastavenou nějakou IP a doménovou adresu (www.něco.cz) a je zajímavý i z jiných hledisek (například se nevypíná:-).
Softwarový server je například:
U každého doménového jména webu se dají na serveru nastavit některé věci. Hlavní ale je, že se to v každé verzi softwarových serverů dělá jinak.
Na Apachi si správce upravuje soubor httpd.conf a uživateli někdy dovolí některá nastavení přenést do soboru .htaccess, který je vedle souborů stránek a autor si je spravuje sám.
V IIS a PWS pod Windows jsou na to grafické prográmky, tam se dají nastavit věci i pro jednotlivé složky. Většinou to musí udělat správce serveru nebo prostě někdo, kdo na to má práva, ale není to nic těžkého (když se ví jak).
Smiřte se s tím, že správce vašeho serveru je polobůh. Mluvte s ním slušně, prokazujte mu úctu a chvalte ho. Následující text vám může pouze naznačit, co po svém polobohovi můžete chtít. Pokud polobožstvo nebude nakloněno, máte smůlu.
Jiná situace by měla být, pokud si hosting platíte. Pak by měl správce vycházet vstříc. Měl by :-)
Jako příklady uvádím nastavení serveru Apache. V jiném velmi rozšířeném Internet Information Serveru jsou to grafická okna, která se mi sem nechce natahovat.
V první řadě se na serveru nastavuje kořenový adresář (root), v jehož podadresářích (neboli složkách) jsou vlastní internetové stránky. Server pak ví, na jakém místě na svém normálním disku má stránky hledat.
Na Apachi je to v konfiguračním souboru httpd.conf řádek DocumentRoot, např.
DocumentRoot "/apache/htdocs" nebo
DocumentRoot "c:/www"
Doporučuji neměnit, ale dá se to. Na některých serverech musejí mít všechny složky jméno společné. Většinou to bývá index.html či default.htm. Zpravidla je to více různých jmen -- když server nenajde první, hledá druhý atd.
Na Apachi se to dělá několika řádky do httpd.conf instrukcí DirectoryIndex, např.:
<IfModule mod_dir.c>
DirectoryIndex index.html default.htm index.php
</IfModule>
To IfModule se většinou vynechává, protože mod_dir.c bývá ve všech instalacích.
Jméno startovního souboru si autor může upravit v .htaccess (je-li povoleno). Příklad syntaxe:
DirectoryIndex start.html
Pokud složka neobsahuje startovní soubor, vypíší se jména souborů a složek. Pokud není directory listing povoleno, server prohlížeči nahlásí chybu 403 jako že "Nemáte oprávnění ..." nebo prostě "Forbiden".
Procházení souborů se ve win-terminologii jmenuje directory listing, na Apachi je to indexing. Na IIS je implicitně vypnuté, na Apachi zapnuté.
V .htaccess se dá nastavit procházení adresářů takto:
Options +Indexes
Nebo naopak procházení zakázat:
Options -Indexes
Pokud vlastníte třeba doménu www.něco.cz, můžete si zvolit, že nějaký adresář na serveru (klasicky nějaký podadresář) se bude zobrazovat (mapovat) jako třeba http://cokoliv.něco.cz. Jinými slovy, v rámci své domény druhé úrovně můžete zřizovat domény úrovně třetí. Taky se tomu říká subdomény. Na Apachi se to tuším dělá direktivou VirtualHost, ale fakt nevím. Za subdomény se někde platí.
Zdaleka ne na všech serverech si můžete nastavit, že čtení nějaké složky bude na heslo. A i pak to funguje jenom na serverech, které mají dobře nadefinované skupiny uživatelů. Na Apachi se do dělá pomocí souborů .htaccess a nějakým divným generováním hesel, moc tomu nerozumím. Lepší je napsat si to v PHP nebo použít tajnou adresu (více možností).
Opět funguje jenom někde. Ale je to lepší, než pro totéž používat meta tagy nebo javascript, protože to dělá rovnou server. Více o různých možnostech přesměrování.
Správce serveru si může nastavit, že bude sledovat, kdy a z jaké IP adresy si vaše stránky někdo čte. Většinou se to ale nedělá, protože to plní disk serveru mnoha zbytečnými daty.
Na disku serveru se někde vytvoří soubory .log, které obsahují datum, čas, adresu stránky, IP adresu klienta a metodu přístupu, někdy i adresu, odkud klient přišel.
Na Apachi to vypadá nejčastěji takto:
LogFormat "%h %l %u %t \"%r\" %s %b" common
CustomLog logs/access.log common
LogFormat nastavuje, jak bude vypadat složení položek, CustomLog určuje soubor, kam se to bude zapisovat (common je jméno formátu).
Je docela těžké potom z těch .log souborů potom získat nějakou kloudnou informaci o přístupu na stránky, mimo jiné protože jsou hrozně veliké. Nejlepší způsob je použít nějak intelignetně unixové příkazy grep, sort, cut, uniq a podobné. Primitivnější způsob je nainportovat je třeba do Excelu a prohlížet pomocí kontingenčních tabulek (v nabídce Data).
Nastavíte-li pro celý web logování, může se (na IIS) hodit nějakou podsložku vypnout. Nejčastěji se vypínají složky s pomocnými soubory a obrázky. V Apachi to myslím nejde.
Všiml jsem si u IIS, že dokáže vkládat na konec každé stránky kus html kódu z určeného souboru, ale prakticky jsem to nezkusil. Apache to umí pomocí SSI, musí se to zapnout, nevím jak.
Nejčastější chyba je 404 - stránka nenalezena. Dá se nastavit, že v případě této chyby server načte konkrétní stránku, která se pošle klientovi. Na serveru Apache stačí přidat jeden řádek do globálního souboru httpd.conf, nebo si to každý autor udělá sám v souboru .htaccess:
ErrorDocument 404 /missing.html
Samozřejmě si můžete nechat zobrazit libovolnou jinou stránku. V tomto příkladě se ten soubor s informací o chybě se jmenuje missing.html a je v kořeni stránek (a tedy společný pro celou doménu). Vizte návod na ErrorDocument pro Apache. Na IIS nevím, jak se to nastavuje, ale jde to. Podobně lze ošetřit i jiné chyby, ne pouze 404 stránka nenalezena.
Z bezpečnostních důvodů bývá v každé složce zpravidla vypnuto. Hodí se pouze v případě, že používáte CGI skripty, SHTML, ASP nebo PHP, prostě nějaké serverové programy. (Pro ASP má server IIS ještě speciální volbu Allow Scripts.) Bývá zvykem mít pro takové programy vyhrazený jediný adresář, ve kterém je povoleno jejich spouštění, většinou se jmenuje cgi-bin.
(Nic z toho se netýká skriptů na klientovi (JavaScript, VBScript), Flashí nebo Javy, to běží nezávisle na serveru.)
Aktivně generované stránky se musejí na server doinstalovat. Instalačky se většinou stahují z Internetu. Zpravidla je to drsná alchymie, nic pro amatéry (ovšem pokusy se dají dělat i doma). Na některých serverech jsou podpory nainstalovány implicitně (na IIS bývají ASP, na Apachi PHP, na Netscapovských serverech Cold Fusion), ale ani pak to nemusí fungovat správně.
Základní způsob, kterým se stránky posílají od autora na server. Správce serveru musí každému autorovi nastavit FTP heslo a jméno (bývá shodné s uživatelským jménem). Dále se nastavuje, do které složky (adresáře) bude FTP primárně koukat. Někdo nastavuje cestu přímo do kořene autorových dokumentů, někdo nastavuje nějaký nadřazený adresář, soubory stránek jsou potom v nějaké podsložce. Nejčastěji se ta podsložka jmenuje "www" nebo stejně jako uživatelské jméno.
Na některých serverech z bezpečnostních důvodů FTP nepracuje. Soubory se pak musejí kopírovat prostřednictvím ssh (zřídka telnetu) příkazem scp (secure copy).
Prográmky, které umožňují chod tzv. FronPage Component, což jsou šílenosti, které vkládá do stránek program FrontPage a FrontPage Express. Na serveru to je několik divných skrytých adresářů, které nejdou dlouhodobě smazat. Instalují se například z cédéčka FrontPage. Je to potřeba, pokud chcete využívat některých funkcí programů FrontPage.
Pomocí Extensions se dají stránky také nahrávat na server (nemusí se pak používat FTP) a dají se dokonce vzdáleně upravovat. Každému uživateli využívajícímu extensions se musí nastavit práva a další heslo v jednom takovém prográmku.
Hrůzná věc z minulého století. FrontPage Extensions fakt nechcete.
Jak psát web píše Yuhů, Dušan Janovský. Kontakt.