ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE FAKULTA

Transkript

ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE FAKULTA
ČESKÁ ZEMĚDĚLSKÁ UNIVERZITA V PRAZE
FAKULTA PROVOZNĚ EKONOMICKÁ
Internetové technologie na straně serveru
Autor: David Suchopár
Vedoucí bakalářské práce: doc. Ing. Zdeněk Havlíček Csc.
Prohlášení
Prohlašuji, že jsem bakalářskou práci na téma: ,,Internetové
technologie na straně serveru“ vypracoval samostatně a použil jen pramenů,
které uvádím v seznamu literatury.
V Praze dne:
Podpis:
Poděkování
Chtěl bych poděkovat doc. Ing. Zdeněku Havlíčekovi Csc., své rodině
a všem ostatním, kteří mi při tvorbě této bakalářské práce pomáhali.
Internetové technologie na straně serveru
Internet server side technologies
Souhrn
Tato práce mapuje v třívrstvé architektuře sítě stranu serveru. Práce je
tématicky rozdělena do tří částí. První část je zaměřena nejniží vrstvu
realizace strany serveru, včetně softwarové základny, kterou tvoří operační
systém. Druhá část popisuje možnosti a prostředky komunikace s klientem.
Poslední část práce se zabývá prostředky pro tvorbu webových aplikací,
bežících na staně serveru.
Využití těchto technologií je demontrováno na příkladu fiktivního
podniku, který se zabývá poskytovaním informací na internetu.
Klíčová slova:
Server, rack, základní deska, procesor, Windows, Unix, web, protokol, skript,
servlet, Java kontejner
Summary
Key words:
Server, rack, motherboard, procesor, Wnidows, Unix, web, protocol, script,
servlet, Java contenier
6
Obsah
1. Úvod..............................................................................................................................8
2. Cíl práce a metodika....................................................................................................11
3. Servery – Hardware, software, web server..................................................................12
3.1 Pojem server..........................................................................................................12
3.3.1 Operační systémy používané na serverech....................................................16
3.4.1. Charakteristika webu a webového serveru...................................................18
3.4.3. Protokol HTTP.............................................................................................26
4. Server side skripty.......................................................................................................32
4.1. Charakteristka skriptu..........................................................................................32
4.2. Server - Side Includes..........................................................................................32
4.3. Server - Side skripting.........................................................................................34
4.4 CGI (Common Gateway Interface).......................................................................35
5. Systém PHP - charakteristika, bezpečnost ..................................................................39
5.1 Skriptovací prostředí na straně serveru.................................................................39
5.2. Charakteristika PHP.............................................................................................40
5.3 Možnosti PHP.......................................................................................................41
5.4 Provoz PHP...........................................................................................................41
5.4 Alternativy k PHP na serveru Apache...................................................................42
6. Příklad řešení - Linuxový server, PHP, MySQL .........................................................45
6.1. Modelový podnik............................................................................................45
6.2. Instalace systému Linux..................................................................................46
6.3. Instalace redakčního systému e107 a kolaboračního serveru Desknow.........49
7. Závěr............................................................................................................................52
8. Seznam literatury.........................................................................................................54
9. Přílohy.........................................................................................................................55
7
1. Úvod
1. Úvod
Hybatelem dnešního světa techniky, je jednoznačně počítač. Co se světa
informačních medií týče, je to pak především internet. Zkuste najít jediného
člověka, který by neznal slovo internet. Vše je dnes otázkou prezentace
myšlenek a cílů a co je jednoduší, než je prezentovat na internetu. Kdyby
existoval systém placení za prohlížení stránek, většina dnešních periodik by již
v plné míře publikovala převážně jen na internetu. Dnes se tomu tak sice již
začíná dít, ale množství informací, které je tímto způsobem (oproti tištěné
podobě) prezentováno, je stále značně zredukováno. Dnešní internet je živ
především z reklam. Jinak tomu není ani v případě společností, které bezplatně
poskytují aktuální novinky ze světa a jiné služby na internetu. Existují ale i
webová sídla, která nemají žádný zdroj příjmů a přitom nabízejí stejně hodnotné
informace jako jejich komerční konkurenti. Z toho důvodu jsou tato webová
sídla realizována technologiemi, které jsou nabízeny bezplatně a jejich provoz
je také zcela zdarma.
Rychlé rozšíření internetu může být do značné míry připisováno
dostupnosti jeho technologie. Na úplném začátku byly internetové prohlížeče
volně distribuovány. Internet (web) poskytuje informační rozhraní, které je
jednoduché, intuitivní a poskytuje odkazy na miliony webových sídel po celém
světě. Nyní máme přístup k nesmírnému množství informací a většina z nich je
volně dostupná.
Bylo to naše neúnavné intelektuální zlepšování sebe sama, co vedlo
většinu z nás ke stažení prvního internetového prohlížeče do PC, nebo snad
neukojitelná potřeba informací, které by nám pomohly vykonávat zaměstnání
efektivněji? Těžko usuzovat. Pravdou je, že charakter dávných internetových
sídel měl hodně co dělat s okamžitou popularitou webu. Co uživatele webu
8
1. Úvod
přitahovalo na nových kombinacích textu a barevné grafiky?
Web je pouhé slovo. Za tímto slovem se skrývá server či servery, klienti a
protokol, pomocí nehož je definovaná komunikace. Tyto tři prvky lze spojit do
jednoho schématu. Existují dva způsoby spojení. Jednak lze chápat toto spojení
jako dvouvrstvé (obrázek 1).
obrázek 1: Schéma dvouvrstvá architektura [6]
Druhý způsob, který je častěji prezentován, rozdělí stranu serveru na dva
nezávislé objekty. Toto schéma představuje třívrstvou síťovou architekturu,
která je znázorněna na obrázku 2.
9
1. Úvod
obrázek 2: Schéma třívrstvé architektura [6]
Možností realizace vzdálené strany od uživatele (strana serveru) je
mnoho. Rozlišit je lze snad podle ekonomického hlediska, přičemž na jedné
straně je možnost realizace s jedním vkladem (práce) a na straně druhé je
nutnost více vkladů (práce, kapitál na zakoupení a provoz technologií).
10
2. Cíl práce a metodika
2. Cíl práce a metodika
Cílem této práce je:
–
Charakterizovat stranu serveru v třívrstvé architektuře
–
Prozkoumat možnosti softwarového vybavení na straně serveru za.
použití open – source a komerčních technilogií.
–
Analyzovat možně řešení na straně serveru za použití pouze open –
source technologií v fiktivním podniku
Vzhledem k obrovskému množství publikací o každé popisované
technologii, obsahuje tato práce fakta, která se více opírají na praktické
zkušenosti, než na samotnou literaturu. Proto jsou zde zmiňovány technologie,
které dnes stále najdou své uplatnění nebo na své uplatnění teprve čekají.
Z literatury je čerpáno minimálně, protože žádná literatura není natolik
stručná a obecná, aby byla pro výše zmíněné cíle použitelná. Proto bylo použito
především stránek samotných popisovaných technologií a osobních zkušeností
s těmito technologiemi.
11
3. Servery – Hardware, software, web server
3. Servery – Hardware, software, web server
3.1 Pojem server
Slovo server je anglické slovo, odvozené ze slova serve, což znamená
sloužit. Server poskytuje služby ostatním členům, kteří se účastní komunikace.
Server slouží klientům či jiným serverům. Server nese název dle služby, kterou
poskytuje. Například názvem DNS se označuje server (jmenný server), který v
počítačové sítí překládá unikátní IP adresy na doménové názvy (hostname
nebo URL) a opačně. Zároveň DNS server může být spojen s jiným DNS
serverem
Tedy server je stroj v počítačové síti, který vyřizuje požadavky klientů dle
stanovených pravidel a postupů (komunikačních protokolů)
3.2 Realizace serveru pomocí hardwaru
Počítače
specializovaných
určené
skříní
pro
síťový
provoz
označovaných
se
anglickým
převážně
slovem
instalují
rack.
Jde
do
o
obvodovou skříň, jenž má na svých bočních stěnách horizontálně zamontovány
příčky, které plní funkci kolejnic, na které se pak připevní vlastní tělo serveru,
které je tak pohodlně manipulovatelné. Takto se do racku sloupcovitě upevňují
servery, switche, patch panely, systémy záložních napájení (UPS) a jiná
zařízení. Takto osazený rack pak tvoří kompletní systém, souhrně označován
jako server. Každá tato vzálenost (pozice) mezi kolejnicemi se označuje a
zároveň pojmenovává písmenem U (z anglického Unit). Skříně (case) pro
servery, switche a jiná zařízení se vyrábějí ve velikostech násobku velikosti této
pozice a jsou označeny xU, kdy písmeno x vyjadřuje počet pozic, které tato
case zabere v rack skříni. Tedy kupříkladu server v case označené jako 4U,
12
3. Servery – Hardware, software, web server
zabere čtyři pozice v rack skříni.
obrázek 3:Velikosti case montovaných do skříní rack [8]
Tyto rack skříně se sdružují, spojují v jeden centrálně spravovaný celek.
V tomto celku říkáme každé rack skříni cluster.
13
3. Servery – Hardware, software, web server
obrázek 4: Ukázka skříní rack [7]
Popis uvedený výše, je profesionální realizace serveru, na druhé straně
může být serverem i klasický stolní počítač.
Servery se staví do rack skříní kvůli odvětrávání komponent. Tyto skříně
jsou navrhovány a koncipovány tak, že jejich systém chlazení je velice účelový
a výkonný. Vzduchové proudnice, které vytváří větráky, jsou rozváděny přes
uměle vytvořené přepážky ke každé součástce, která produkuje enormní
množství tepla. Takto chlazený systém má velikou šanci na nepřerušovaný
chod bez výpadků.
Základní deska serveru, je jakákoliv deska, buď obyčejná deska do
stolních počítačů nebo speciální deska určená speciálně pro servery. Tyto
14
3. Servery – Hardware, software, web server
speciální desky bývají tvarově přizpůsobené pro skříně určené do rack skříní.
Jsou většinou multiprocesorové, tedy mají více (většinou dva) slotů pro
procesory. Tyto základní desky mívají dále integrované řadiče disků s podporou
RAID technologií. V dnešní době již desky mají řadiče specifikace SATA2, které
navíc plně podporují technologii HOTPLUG1, tedy možnosti vyjmutí disku bez
nutnosti vypnout počítač. Tato technologie se snaží nahradit stále používanou
avšak již zastaralou variantu SCSI. Tyto řadiče SCSI a RAID bývají obvykle
vybaveny slotem pro speciální paměť a záložní baterií pro účel počítaní parity2
RAID polí.
Procesor je shodný a ničím se neliší od běžně dostupných. Jen některé
firmy, zabývající se výrobou procesorů, vyrábí modely, které jsou svými
specifikacemi vhodné pro použití v serverech. Tyto procesory mají větší L1 a L2
cache3 a odlišnou instrukční sadu. Především se jedná o firmu AMD se svými
procesory řady Opteron, které ovšem v poslední době našly oblibu i u uživatelů
domácích počítačů. U konkurenční firmy Intel, jsou to pak procesory řady
Pentium 4 (plně využívané i na trhu osobních počítačů) a starší, stále vyvíjená
řada Pentium Xeon (až 2MB L2 cache).
Operační paměti jsou stejného typu, jako ty používané ve stolních
počítačích. Dále se server svým hardwarem nikterak neodlišuje od stolních
počítačů. Má stejné zdroje napájení, stejné disky, mechaniky CDROM,
disketové mechaniky a jiné příslušenství.
1 Technologie HOTPLUG se poprvé objevila právě u rozhraní SCSI, kdy byla nutnost přidávat či měnit
disky bez přerušení provozu serveru. Tato technologie je doprovázena propracovaným softwarem,
který zabezpečuje bezproblémové vyjmutí disku přesunem právě používaných dat na disky, které se
neodpojují. Tento software je implementován přímo v řadiči a instalovaný software je pouze v roli
uživatelského prostředí.
2 Parita je nejednoduší způsob zabezpečování integrity dat, jedná se o stupeň zabezpečení, kdy je možné
identifikovat vznik chyby, ovšem již ji nelze nalézt a opravit. Parita je doplňková informace k
samotným datům, k bloku dat (8 bitů) je přidán jeden paritní bit, který se porovnává s vypočteným
paritním bitem při manipulaci s daty. Na základě porovnání se vyhodnotí správnost dat.
3 Jedná se o pamět nacházející se přímo v čipu procesoru, slouží pro ukládaní kódu prováděných
instrukcí a dat, které tyto instrukce potřebují (operandy). Stále platí, ze velikost cache určuje
výpočetní rychlost procesoru, proto není překvapení, že procesory určené pro nasazení do serverů
mají cache řádově dvojnásobnou než jiné procesory.
15
3. Servery – Hardware, software, web server
3.3. Server reprezentován jako software
3.3.1 Operační systémy používané na serverech
V současné době jsou na trhu operačních systému dva dominantní
produkty za kterými stojí společnost Microsoft a lidé kolem operačních systémů
Unix (jak už placených, tak volně širitelných verzí). Společnost Microsoft
produkuje systémy určené pro pracovní stanice i výhradně pro servery
(tehnologie NT4). Tyto produkty a jejich předurčení zachycuje tabulka 1.
Operační systém
Vhodnost použití na
pracovní stanici
Vhodnost použití na serveru
Windows 95


Windows 98


Windows 98 SE


Windows NT


Windows 2000


Windows XP


Windows 2003


Tabulka 1: Systémy Windows a jejich nejčastější využití
Systém Unix je na uživatelské úrovni reprezentován operačními systémy
Linux, které jsou jakousi odnoží rodičovského systému Unix. Jsou více
přizpůsobeny běžnému použití odstraněním vazby na zdroje všech programů.
4 NT není vlastně plnohodnotnou zkratkou, ani sami tvůrci nevědí, čeho je to zkratka. Původní smysl
byl „New Technologies“, ale posléze se začalo říkat NT technologie, tedy tento výklad postrádal
smysl. Jeden čas linuxoví příznivci zkratku NT překládali jako „Nice Try“, kdy bylo zřejmé, že tyto
verze operačních systémů Windows přišly na popud rostoucí oblibě operačních systémů Unix. NT
technologie byla důležitý krok pro systém Windows, odpoutala se od systému, které pracovaly v
chráněném režimu procesorů a technologicky stály na operačním systému DOS. Systémy NT měly
hardwarově nezávislou vrstvu jádra a poprvé podporovaly preemptivní multitasking. A jako první
Windows nabízely možnost víceuživatelského přístupu pomocí aplikace Terminal Server.
16
3. Servery – Hardware, software, web server
Tato vazba je v Linuxu nahrazena distribučním systémem již zkompilovaných
programů, které se pod systémy Unix musí kompilovat samostatně na každém
systému zvlášť. Právě tyto distribuční systémy rozdělily rodinu Linuxu do
takzvaných distribucí, které se liší nejen zmiňovaným distribučním systémem
komponentů systému, ale i samotným uspořádáním a fungováním dané
distribuce.
Unixové operační systémy
Distribuce Unixové varianty operačních
systémů - Linux
FreeBSD
Gentoo
OpenBSD
Slackware
NetBSD
Debian (Ubuntu)
DragonFly BSD
Fedora Core
Solaris
SuSe
Linux
Knopix
Mac OS X
Mandriva
Tabulka 2: Přehled nejznámějších Unixových operačních systémů [12]
Zřídka se vyskytují operační systémy OS/2 či stařičký DOS (nutný běh pro
systému Novell - NDS). Výjimečně se objeví i speciálně navržené operační
systémy, které mají velice úzkou vazbu na samotný hardware počítače a jsou
uvažovány a distribuovány jako celek. Takovéto systémy jsou vyvíjeny po vzoru
systému Linux. Někdy jsou i natolik úspěšné, že se oddělí od své hardwarové
závislosti a začnou se distribuovat samostatně. Příkladem pro toto oddělení
může být operační systém StarOS, který vznikl jako operační systém pro síťové
routery a
nyní je používán pro ty samé učely. Ovšem lze jej spustit a
provozovat na jakémkoliv počítači. Tento systém je malý a nalezneme i jeho
takzvanou disketovou distribuci, což znamená, že systém lze spouštět z tři a půl
palcové diskety s kapacitou 1.44 MB, tedy na počítači, který nemá pevný disk.
Od uživatele Windows jsou očekávany obecné znalosti. Grafické
prostředí s průvodci, které nabízí systém Windows, je dostatečnou pomůckou
17
3. Servery – Hardware, software, web server
pro bezproblémové nastavení a správu systému. Pro operační sytémy Windows
existuje mnoho internetových stránek, kde jsou podrobně popisovány způsoby
nastavování systému, jedním z nich je velmi pěkně zpracovaná stránka
www.windowsnetworking.com, která popisuje všechny síťové možnosti systému
Windows.
Základním nástrojem, pomocí něhož lze operační systém Linux
nakonfigurovat, je systém konfiguračních souborů, které je nutno editovat.
Existují i grafické nástroje podobné těm v systémech Windows, ovšem jejich
výskyt a možnosti jsou závislé na konkrétní distribuci a konkrétní instalaci
systému Linux. Nutno podotknout, že zkušení uživatelé systému Linux tyto
nástroje nevyužívají, ba ani je do svých systému neinstalují. Pro instalaci a
správu systému Linux jsou nutné pokročilé znalosti. Na první pohled se může
zdát, že administrace systému Linux je složitá díky nutnosti editace několika
souborů, ale pravé tato modularita se ve výsledku ukazuje jako výhodná při
hledání závad a problémů, kdy není nutné přenastavovat celky, ale jen
problémovou část. Co se týče dokumentace systému Linux je situace podobná
jiným systémům, navíc existují dokumenty pojmenované howto5. Právě internet
je základní znalostní bází operačních systémů Linux. Dalšími znalostními
bázemi jsou dnes již velice objemná diskuzní fóra, kde lze nalézt řadu odpovědí
na různá témata a jsou také velmi užitečným zdrojem informací při řešení
specifických problémů.
3.4. Webový server
3.4.1. Charakteristika webu a webového serveru
Po vzniku webu se času, strávenému používání nového systému
5 Howto, tedy česky „jak na“ jsou textové nápovědy ve formě průvodců krok za krokem.
18
3. Servery – Hardware, software, web server
distribuce informací, se začalo jednoduše říkat „browsing“ webu. Systém
odkazů, který umožňuje, aby jedna stránka odkazovala na jinou a ta zase na
další je to, co otevřelo web obrovskému, většinou netechnicky založenému
publiku. Žádné konkurenční schéma výměny informací, nemělo proti webu
šanci. Základním kamenem návrhu webu je hypertextový odkaz (hyperlink).
Odkazy na webové stránce mohou odkazovat na prostředky umístěné kdekoliv
na světě. Návrháři prvního hypertextového informačního systému začali právě
tímto konceptem. Aby mohl tento koncept pracovat v ohromném měřítku,
musely být vytvořeny tři části webu. Musela existovat univerzálně přijatelná
metoda jedinečné definice každého webového prostředku. Toto schéma názvů
se nazývá URL (Uniform Resource Locator). Druhou věc představovalo schéma
formování přenášených dokumentů, aby bylo možné do dokumentu vkládat
odkazy na tyto prostředky s názvy. Toto schéma formování je HTML (HyperText
Markup Language). Třetí část webu představují prostředky pro spojení všeho
do jednoho obrovského informačního systému. Tato část skládačky je síťový
komunikační protokol http (HyperText Transfer Protocol).
Odkaz vložený do stránky formátované pomocí HTML je pouze jedním
způsobem použití URL, ale byl to odkaz, který umožnil vznik webu. Pokud
bychom se museli uchýlit k výměně URL pomocí jejich zapisování na ubrousky,
neexistoval by žádný web. Většina lidí přemýšlí o webu jako o navštěvování
webových sídel, ale mechanismus nespočívá v „chození“ někam, ale načítání
prostředků, obvykle reprezentovanými webovými stránkami, po síti pomocí
jedinečného identifikátoru prostředku, tedy již zmiňovaného URL.
URL mohou být také ručně vloženy do pole adresy webového prohlížeče
nebo uloženy jako záložka pro pozdější snadné vyhledání. Většina dnešních
poštovních programů umožňuje vkládaní URL do těla zprávy, aby na ně mohl
příjemce jednoduše klepnout a načíst daný prostředek. Některé poštovní
programové balíky umožní vkládat obrázky do těla zprávy pomocí jejich URL.
Když je zpráva načítána, načte se samostatně obrázek, ten se tedy nemusí
19
3. Servery – Hardware, software, web server
nacházet v počítači uživatele, ale kdekoliv na jakémkoliv internetovém serveru.
obrázek 5: Komunikace mezi web serverem a klientem [9]
Webový server je softwarová aplikace, která umožňuje uživatelům,
připojeným na síť internet čerpat jejich obsah. Uživatel na počítači nevnímá
žádný software, na který klade požadavek o zobrazení dat pomocí specifického
identifikátoru v síti, takzvaném URI (Uniform Resource Identifier). Ale na
volaném počítači běží web server, pozorně poslouchá na svém portu a čeká až
se naváže na tomto portu komunikace. Stane-li se tak, server čeká až přijde
požadavek od klienta, většinou realizovaný skrze webový prohlížeč. Ten zachytí
a dle obsahu požadavku náležitě zpracuje formou odeslání zpět klientovi
požadovaná data, formo HTML. Toto zpracování může mít různou povahu, buď
je možné, že web server najde na svém pevném disku pouze potřebná data
(uloženou HTML stránku, či jiný dokument), nebo vykoná jisté výpočetní kroky,
aby mohl poskytnout dynamicky vygenerovanou stránku na základě dat
obdržených od klienta.
Toto vše se děje pomocí síťových protokolů, vývojem bylo dáno, že se
využije protokolu TCP/IP, jenž pracuje s IP adresami, které jednoznačně
identifikují počítač v síti, ovšem v síti internet je tato adresa spojena s URL
adresou, jakožto řídícím identifikátorem pro webový server. Pomocí tohoto
protokolu je možné se propojit se vzdáleným počítačem a po tomto protokolu
přenést data, ale již není možné předat požadavek a obdržet odpověď.
20
3. Servery – Hardware, software, web server
Podíváme-li se na samotné webové servery, je dnes na výsluní silná
dvojka, která opět tvoří duopol. Je to jednak web server od firmy Microsoft a
jeho IIS (Internet Information Server) a pak volně šiřitelný a podlehající licencím
GNU/GPL
webový
server
Apache.
Právě
posledně
jmenovaný
je
nejrozšířenějším webovým serverem na světě. Podle posledních statistik je
využíván na 64% všech internetových webových serverech (viz tabulka 3).
Těžko spekulovat proč tomu tak je. Je zde několik aspektů, které tento jev
vysvětlují, jednak je to jeho časová dominance (kterou zachycuje obrázek 6).
Apache zde byl dříve než IIS, pak je to jeho bezprostřední kvalita a bezpečnost
(dostal již několik certifikátů jako nejbezpečnější webový server) a v neposlední
řadě je faktem to, že je zkompilován pro všechny operační systémy a druhy
hardwaru, tudíž je nasaditelný na jakémkoliv počítači s jakýmkoliv operačním
systémem. Vzhledem k vyjmenovaným vlastnostem tohoto webového serveru si
myslím, že je záhodno tomuto webovému serveru věnovat část této práce, a
blíže Vás sním seznámit i s jeho možnostmi.
Developer
Apache
Microsoft
Sun
Zeus
May 2006
52819517
20764239
1917950
550437
Percent
64,76
25,46
2,35
0,67
June 2006
52389885
25415611
1311822
531399
Percent
61,25
29,71
1,53
0,62
Tabulka 3: Statistika používání webových serverů [5]
21
3. Servery – Hardware, software, web server
obrázek 6: Graf zachycující vývoj používání webových serverů [5]
3.4.2. Vývoj webových technologií
Slovo web jenž jen vyjmuto ze sousloví Word Wide Web, tedy součást
známé zkratky „WWW“, je již ustáleným výrazem, označujícím právě tyto
technologie. Za vznikem těchto technologií stojí mnoho lidí, ovšem za jejich
zakladatele, je považován Tim Bernes - Lee. Tento člověk v roce 1989 [3]
předložil návrh výzkumného projektu CERN (Conseil Européen pour la
Recherche Nucléaire) v Ženevě. V návrhu Bernes - Lee ukázal systém,
založený na hypertextu, tedy dnešní podobou webu. Tento návrh ovšem neřešil
technickou stránku systému a neřešil problematiků síťových protokolů, které by
tento hypertext přenášely. Navrhovaný systém byl faktickým rozšířením
systému Hypercard, jenž byl používán v počítačích Apple Macintosh, které byly
propojeny v lokální síti. Tento navrch byl myšlen jako umožnění komunikace na
vyšší úrovni jen nějakých subjektů. To do jakých globálních rozměrů přerostl, by
22
3. Servery – Hardware, software, web server
si tenkrát nikdo nepomyslel.
Již v roce 1990 [3] začal CERN práci na prvním grafickém systému pro
přenos hypertextu, tedy prvním webovém prohlížeči. CERN již v tuto dobu
uvolňoval své technické poznatky a technické prostředky, které umožňovali
jiným subjektům vyvíjet svoje vlastní aplikace, dalo by se tedy říct, že toto byl
prvopočátek neuvěřitelné expanze tohoto systému. Na základě těchto
vypouštěných informací začaly vznikat vlastní webové servery. Tyto webová
sídla byla experimentální a byla výhradně ve vlastnictví akademických celků.
Díky této rozšířenosti v prvopočátcích již vznikaly principielní korektury procedur
a funkcí tohoto systému. Tyto servery byly velice jednoduché a většinou byly
technicky realizované několika řádky kódu v jazyce C, odvozené od
poskytnutých kódů od CERN.
O dva roky později čítala pomyslná síť webových serverů, založených na
kódu CERN, skromných 26 serverů po celém světě. V roce 1993 [3] CERN
zpřístupnil svůj vlastní webový server včetně instrukcí, jak tento server
zkompilovat a zprovoznit, na většině tehdejších druhů hardwaru. Ve stejné době
byl vypuštěn z University of Illinois pod hlavičkou NCSA (National Center for
Supercomputing Applications) prohlížeč NCSA Mosaic. Tento software byl
jakýmsi katalyzátorem pro neočekávaný růst počtu webových serverů na
tehdejším internetu. Tento růst se později ukázal jako trvalý a způsobil expanzi
internetu mimo subjekty univerzit. NCSA v té době nabídl svou vlastní verzi
webového serveru, který byl volně šiřitelný a byl velice jednoduchý a jednoduše
instalovatelný. Časem se server NCSA používal více než server CERN a tím
otevřel cestu doplňování a vylepšování samotného serveru.
V roce 1994 [3] byl nejpoužívanější webovým serverem na světě NCSA,
který nesl název httpd (http deamon6). Dále NCSA vedlo vývoj svého
klientského prohlížeče Mosaic. Ovšem až idylická jednotnost ve vývoji web
6 Démon z anglického deamon proto, že sytém linux takto pojmenovává trvale běžící služby na pozadí,
tedy a aplikace bežící na pozadí.
23
3. Servery – Hardware, software, web server
technologií netrvala dlouho a v polovině roku 1994 [3] se projekt NCSA rozdělil,
a to v okamžiku, kdy odešel vývojář Rob McCool. Tato událost neznamenala nic
drastického spíše naopak. Díky tomu že NCSA vše poskytovala veřejnosti
mohla být technologie bez problému vyvíjena dál, ovšem již ne především
organizací NCSA. Veřejnost pracovala na vylepšení dosavadního webového
serveru NCSA, ovšem problém byl v neorganizovanosti a decentralizovanosti
tohoto úsilí při vývoji. Tento menší chaos trval do roku 1995 [3], kdy spatřil
světlo světa webový server Apache.
Server Apache byl sestaven a vypuštěn počátkem roku 1995 jako sada
opravných záplat (patches) pro webový server NCSA httpd verze 1.3. Název
Apache je odvozen přímo od tohoto počinu jako soubor záplat, tedy odtud v
angličtině „a patchy server“. Tyto záplaty byly tvořeny mnoha nezávislými
programátory, kteří byli sdružováni do nezávislého konsorcia nazývaného
Apache Group.
Od této doby se počet webových serveru zvyšuje geometrickou řadou.
Již za rok nahradil server Apache webový server organizace NSCA httpd v roli
nejpoužívanějšího webového serveru a v roce 1997 překročil počet webových
serverů Apache jeden milión. Důvodů takového nástupu serveru Apache bylo
hned několik. Jednak to byla absolutní kompatibilita se serverem NSCA,
přičemž server Apache byl mnohem vybavenější. Dále to byl fakt, že byl
jednoduše instalovatelný a měl funkci plné náhrady za server httpd od NSCA,
protože používal stejné konfigurační soubory a choval se stejně. Stačilo
původní instalaci serveru httpd přepsat instalací Apache při zachování plné
funkčnosti a stávajícího nastavení. Další jasné důvody byly spolehlivost, která
díky koncepci záplat byla daleko vyšší a rychlejší, optimalizace programového
kódu samotného jádra serveru Apache a v neposlední řadě pro mnohé
rozhodující možnost rozšíření v podobě modulů. V té době se každý správce
serveru Apache stal významným článkem při vývoji serveru Apache. Tato
myšlenka je zachována dodnes, a to pomocí e-mailových konferencí a
24
3. Servery – Hardware, software, web server
takzvaných bug-trackerů.
Tato podpora(velmi silná) ve formě možnosti podílet se na vývoji, byla v
pozdějších letech hlavním důvodem odlivu správců a uživatelů od tehdy
dostupných komerčních řešení webových serverů. Jak již bylo řečeno, server
Apache má možnost využívat externí moduly třetích stran7, a to díky otevření a
zveřejnění interních funkcí jádra serveru Apache a zformování do sad API
(Application Programing Interafce). API nejen že umožňují tvorbu modulů, což
se ukázalo jako velmi chytrý tah, ale umožňuje i samotné přepsaní serveru
Apache jako takového. Ale nakonec se ukázalo, že většina vývojářů sady API
používá právě pro vývoj modulů. V této době vzniklo hodně modulů, které byly
mnhody natolik oblíbené, že nakonec byly zaintegrovány jako součást instalace
Apache. Díky této expanzi serveru Apache a stále větší přízni a oblibě mezi
běžnými uživateli, byly zastaveny vývoje projektů CERN a NCSA a tyto projekty
byly plně nahrazeny vývojem serveru Apache.
V současné době je server Apache nejpoužívanějším webovým serverem
na celém internetu, ovšem existuje zde i konkurence, která si dělí oněch 34 %
internetu. Jedná se především o produkty firem Microsoft a Netscape. Důvodem
jejich stálosti výskytu na internetu není jejich technická převaha oproti serveru
Apache, ale jakési mylné podvědomí, že volně šiřitelný software je především
experimentální,
nehodící
se
do
komerčního
produkčního
prostředí,
neschopného srovnatelného výkonu a nemůže nahradit spolehlivostí komerčně
vyvíjený software. Tato myšlenka je produkována hlavně rozsáhlými firmami,
které většinou komerční webový server obdrží jako součást nějaké webové
databázové aplikace. Těmto aplikacím se mimo jiné říká ERP (Enterprise
Resouce Planning). Tímto způsobem zaintegrované webové servery mohou být
použity samostatně mimo aplikaci, se kterou byly distribuovány.
Právě Apache a jemu podobné programy pomáhají odstraňovat podobné
7 Modul třetí strany je řádně zkomipilovaná funkce, která je plně funkční s jádrem serveru, ale není
standartním vybavením serveru.
25
3. Servery – Hardware, software, web server
předsudky, které jsou přímo spojovány i s operačními systémy Linux. Ale již
několik studií shledalo systém Linux jako vhodnější operační systém použitelný
na serverech než jeho konkurenti. V září roku 2001 [10] obdržel server Apache
významné potvrzení své spolehlivosti od společnosti Gartner Research Group,
která vydala prohlášení, v němž doporučila společnostem upustit od použití
nejvíce zavedeného komerčního serveru ve prospěch Apache, který považuje
za mnohem bezpečnější.
3.4.3. Protokol HTTP
Web se skládá ze všech webových serverů na internetu a milionů
klientských systémů, které se s nimi mohou dočasně spojit a vyměňovat si data.
Základním prvkem, který drží web pohromadě, je sada univerzálních standardů,
umožňujících klientům propojující se na webový server a samotným webovým
serverům výměnu informací skrze internet. Tyto dobře definované standardní
kroky a metody komunikace v síti se nazývají protokoly. Pro pochopení
fungování webu je důležité pochopit právě tyto protokoly, které jej utvářejí a
definují.
Slovo protokol popisuje předepsané chování ve společnosti při jistých
situacích. V počítačových sítích tento termín označuje také pravidla chování.
Jen se aplikují na dvě strany síťového spojení. V tomto smyslu protokol HTTP
definuje chování očekávané od klienta (prohlížeče) a serveru (web serveru)
komunikující právě skrze internet po tomto protokolu. Prohlížeč bude funkční
právě tehdy, bude-li vědět co od něj očekávají servery, ke kterým se bude chtít
připojit, tedy pokud je toto spojení definováno specifikací protokolu – HTTP.
Když tedy webový server pracující s protokolem HTTP přijme požadavek
od klienta, provede jednu z následujících akcí. Buď na požadavek odpoví
zasláním dokumentu (staticky či dynamicky vytvořeného), nebo odmítne na
požadavek odpovědět zasláním stavového číselného kódu, který svou
26
3. Servery – Hardware, software, web server
hodnotou vyjadřuje, proč se tak stalo. Tyto kódy mají podobu trojciferného čísla.
Čísla jsou rozčleněna do skupin dle povahy informace, kterou představují (viz
tabulka 3).
Kategorie
Rozsah
stavových
kódů
Popis
Informační
100 - 199
Zprávy definované konkrétní
aplikací.
Úspěch
200 - 299
Požadavek byl úspěšně
zpracován.
Přesměrování
300 - 399
Klient musí pro konečné
zpracování požadavků vykonat
určitou činnost. O této činnosti
se uživatel nemusí dovědět.
Chyba klienta
400 - 499
Problémy na straně klienta.
Chyba serveru
500 - 599
Problémy na straně serveru.
Tabulka 4 Stavový kód a stavové hlašení [11]
Webový server nemůže vnutit prohlížeči načítání prostředku z jiného
místa. Posílá stavový kód ukazující, že server nemohl vyhovět požadavku
prohlížeče společně s direktivou Location: indikující
alternativní místo
prostředku. Prohlížeč je zdvořile požádán o přesměrování svého požadavku na
toto místo. Důležitá věc, na kterou je potřeba myslet, je to, že server neovládá
chování prohlížeče, ale jednoduše doporučí nebo požádá o určitou akci. Toto je
podstata
protokolu, která spočívá v jednoduchém kódování správného a
očekávaného chování všech částí systému na síti internet.
Protokol, který musí podporovat všechny webové servery i prohlížeče, je
právě protokol HTTP. Protokol HTTP není ve skutečnosti tak složitý jako jiné
27
3. Servery – Hardware, software, web server
protokoly používající se pro síťovou komunikaci. První verze protokolu HTTP8
byla extrémně jednoduchá. Byla navržena pouze pro čistý přenos dat mezi
klientem
a
serverem
po
internetu.
Dřívější
webové
servery,
které
implementovaly tuto verzi HTTP (0.9) odpovídaly na jednoduché požadavky
jako například:
GET /index.html
Po přijetí takového požadavku webovým serverem, odpoví posláním obsahem
souboru index.html. Zde je nutno podotknout, že příkaz GET nemůže mít
prázdný argument. Argument musí vždy obsahovat alespoň ono lomítko, které
označuje základní adresář webového serveru označovaný jako DocumentRoot.
Po zaslaní takového požadavku, tedy
GET /
server standardně vrací obsahy souborů v tomto adresáři, které nesou jméno
index.html, index.htm nebo default.html. Pokud by takový soubor neexistoval v
daném umístění, server by zaslal dokument s chybovým stavovým kódem.
8 V době vzniku protokolu HTTP nebyla nijak označována, ale pro pozdější vývoj tohoto protokolu
byla nutnost rozlišit jednotlivé verze protoklu. Proto byl zpětně označen verzi 0.9, který se zapisoval
HTTP/0.9
28
3. Servery – Hardware, software, web server
obrázek 7: Komunikace s webovým serverem pomocí telnetu prosřednictvím protokolu HTTP [9]
obrázek 8: Komunikace s webovým serverem pomocí telnetu prosřednictvím protokolu HTTP [9]
Verze protokolu HTTP
Dokumenty popisující protokol HTTP
HTTP/0.9
-
HTTP/1.0
RFC 1945
HTTP/1.1
RFC 2616
Tabulka 5: Vývoj protokolu HTTP [3]
HTTP verze 1.0 obsahoval důležitou změnu oproti HTTP verze 0.9, a to
použití hlaviček, které jednoznačně popisují přenášená data. Jsou to hlavičky,
které říkají prohlížečům jak mají naložit s přijatými daty od webového serveru.
Nejčastější hlavičkou používanou na webu je asi tato:
Content-Type: text/html
Tato hlavička říká prohlížeči, že data, která následují, tvoří text formátovaný
pomocí HTML. Formátovací kódy HTML vložené do textu popisují, jak má
29
3. Servery – Hardware, software, web server
prohlížeč stránku zobrazit.
Protokol HTTP verze 1.1 je platným a nejnovějším protokolem HTTP.
Většina vlastnosti HTTP/1.1 oproti předchůdci je nezměněna. HTTP/1.1 je
koncipováno na optimalizaci přenosu dat mezi serverem a klientem. To je
docíleno použitím vyrovnávací cache implementovanou do jádra proxy serverů,
tedy s využitím proxy serverů a protokolu HTTP/1.1 lze zvýšit výkon. Jedna z
vlastností HTTP/1.1 je identifikace názvu hostitele, což je způsob, jímž server
určuje, který z několika virtuálních hostitelů by měl přijmout požadavek. To
využívají hostingové společnosti, které mají jeden webový server, na kterém se
nachází víc webových sídel, odlišených pouze názvem URL. Tedy víc URL
adres směřuje na jednu IP, přičemž se očekává vrácení odpovídající odpovědi
na požadavek. Tomuto principu fungování se říká virtuální hosting. Další
podstatnou novinkou v protokolu HTTP/1.1 je vlastnost takzvané dojednávání
obsahu, kdy prohlížeč a server pomocí odeslaných hlaviček si dojednají
společné nastavení přenosu, které budou používat. V neposlední řadě se
změny v protokolu týká dodání nových metod požadavků, a to konkrétně čtyř.
Takto dnes protokol HTTP/1.1 čítá konečných osm požadavků.
Verze protokolu HTTP
Metody implemetované do protokolu
HTTP/0.9
Get
HTTP/1.0
Head, Post
HTTP/1.1
Put, Option, Delete, Trace, Connect
Tabulka 6: Přehled metod, přidaných do jednotlivých verzí protokolu HTTP [12]
Ukázka komunikace klienta s webovým serverem prosřednictvím
protokolu HTT/1.1 může vypadat takto:
GET /clanky/http-metods.html HTTP/1.1
30
3. Servery – Hardware, software, web server
Host: gate.arteee.net
User-Agent: Mozilla/5.0 Gecko/20040803
Firefox/0.9.3
Accept-Charset: UTF-8,*
Odpověď od serveru by mohla vypadat takto:
HTTP/1.0 200 OK
Date: Fri, 15 Oct 2004 08:20:25 GMT
Server: Apache/1.3.29 (Unix) PHP/4.3.8
X-Powered-By: PHP/4.3.8
Vary: Accept-Encoding,Cookie
Cache-Control: private, s-maxage=0, max-age=0,
must-revalidate
Content-Language: cs
Content-Type: text/html; charset=utf-8
Dále by následoval prázdný řádek a samotný obsah HTML stránky.
31
4. Server side skripty
4. Server side skripty
4.1. Charakteristka skriptu
Původem sputitelného programu je jeho kód, napsanán v některém
programovacím jazyce. Tento kód je posleze zkompilován a je tak vytvořen
program, který spustitelný a je tak šířen. Skript lze chápat jako kód programu,
který není potřeba kompilovat. Toto platí za předpokladu, že se samotným
kódem je šířen i kompilátor, který se o kód postará.
Skriptem může být jednoduché makro napsané pro editor Word, či sada
příkazů systému Linux, uložených v textovém souboru. Podoba skriptů je různá,
ale jedno mají společné. Jedná se o čitelný kód, ze kterého nejde přímo vytvořit
spustitelný program.
4.2. Server - Side Includes
Server - Side Includes (dále jen SSI) představuje nejjednodušší způsob
přidávání dynamického obsahu do webové stránky. Nutno podotknout, že SSI je
individuelní pro každý typ webového serveru. To znamená, že použití příkazů či
funkcí, které SSI nabízí je zcela závislé na tom, kde je tato stránka umístěna.
Každý webový server přijme požadavek na stránku, která může obsahovat
příkazy SSI, které provede a a nahradí je jejich výstupem v podobě HTML kódu.
Příkazy SSI jsou vesměs velmi jednoduché konstrukce, které například
zobrazí aktuální datum, poslední změnu dokumentu a jiné jednoduché nebo
složitější funkce. SSI příkazy jsou ve stránkách kódu interpretovány jako
komentáře HTML, a jsou uzavřeny do páru značek <!-- a -->, které zároveň
tvoří i speciální význam pro modul, který příkazy SSI zpracovává.
32
4. Server side skripty
Apache obsahuje SSI již dlouho a jsou implementovány jako volitelný
modul (mod_include), proto zde existuje i možnost používaní SSI zakázat.
Tento modul je přítomen v každé instalaci Apache a bývá po instalaci aktivní.
Důvodem proč tomu tak je, je že právě vložení data poslední úpravy dokumentu
do stránky pomocí příkazu SSI je mnohem jednoduší, než pro tento účel
vytvářet jakýkoliv skript (CGI).
SSI je
dostatečně
výkonným
nástrojem
pro
generování celých
dynamických stránek, dále jako nástroj pro propojení s databázemi nebo
cokoliv, co jinak dnes nahrazují programovací jazyky. Bohužel rozsah SSI
příkazu je omezený, a proto je mnohdy nutno sáhnout po plnohodnotných
skriptovacích systémech a právě tyto mezery jsou zřejmě příčinou toho, proč se
na internetu SSI příliš nepoužívá.
Verze obsažená v serveru Apache XSSI (eXtended Server - Side
Includes) je používána tak dlouho, že je všeobecně považována za standard
SSI. Jiná verze, která se také používá, je SSI+, která má navíc od XSSI několik
funkcí, které jsou především určeny pro platformu Windows, tedy obsahuje
WIN32 API. Nejdůležitější z těchto funkcí je funkce ODBC, používaná pro
načtení dat z databází pomocí ovladačů ODBC (Open DataBase Connectivity)
od společnosti Microsoft.
Příklad použití SSI pro vkládaní předem vytvářených podpisů do stránek,
obsažených v souboru signature.inc. [9]
<HTML>
<HEAD>
<TITLE>OneBig Inc.</TITLE>
</HEAD>
<BODY>
<H1>Nabídka služeb firmy OneBig Inc.</H1>
...další informace...
<!--#include virtual="/include/signature.inc"-->
</BODY>
</HTML>
33
4. Server side skripty
obrázek 9: Stránka s patičkou vloženou pomocí SSI [9]
4.3. Server - Side skripting
V počátcích webu programování (tvorba internetových aplikací) obvykle
obnášelo přidávání do stránek funkce, které umožňovaly jednoduchou interakci
s uživatelem nebo možnost přístupu k některým funkcím a datům serveru
(nejčastěji různé statistiky). V podstatě se jednalo o programování pro web, kdy
byl uživatelský vstup interpretován generováním určitého obsahu pro tohoto
uživatele dynamicky („za běhu“). Klasický příklad může být vyhledávání dat dle
zadaných kriterií.
Postupem času byly možnosti interakce s uživatelem a automatizace
webových stránek, z důvodu nedostatečné pružnosti a omezených možností
tehdejších prostředků, donuceny k vylepšování. Dnes takové aplikace
představují velice složité a komplexní programy, uživatelská pro databázím.
34
4. Server side skripty
Takovéto systémy jsou většinou tvořeny ze tří vrstev (viz obrázek 2). Na horní
vrstvě je složitý databázový systém, který nemá žádnou možnost interakce s
uživatelem, na střední vrstvě se nachází webové prostředí, tedy funkční kód
tohoto systému, a na spodní vrstvě je prohlížeč a uživatel.
Web jíž není jednoduchým přenosovým médiem pro statické dokumenty
(stránky), již dávno překročil svůj prvotní účel, se kterým byl stvořen. Dnes
pokud se vyvíjí internetová aplikace, je skoro jisté, že se tak děje jako součást
internetové obchodní strategie. Schopnost napsat takovou aplikaci je pro
dnešní úspěch v těchto strategiích velice kritickou složkou.
Na tento popud vznikla řada metod, podle kterých lze takové aplikace pro
web vyvíjet. Žádná z nich nepředstavuje tu nejlepší variantu pro všechny
aplikace. Tyto metody jsou zastoupeny konverzí všeobecně známých
programovacích jazyků do prostředí internetu. Z těchto důvodů by volba
programovacího jazyka při vývoji aplikace pro internet neměla být založena na
hlasech stoupenců a zastánců (mnohdy až fanatických zastáncům) některého z
uvažovaných jazyků, ale rozhodně na reálných možnostech, které jazyk nabízí
v konfrontaci s potřebami a dovednostmi, kterými disponují uživatelé, kteří se
budou podílet na vývoji aplikace.
Metody které padají v úvahu jsou v současnosti jazyky PHP, ASP, JSP
(realizované přes další server Apache/Tomcat) a příliš nerozšířený Server –
Side JavaSkript (spuštěný přes server firecat) nebo používaní jákeho koliv
programovacího jazyku přes rozhraní CGI. Přičemž všechny mohou být použity
na stejném serveru a mohou běžet ve stejnou chvíli.
4.4 CGI (Common Gateway Interface)
CGI je velmi jednoduchý, ale mocný nástroj, který umožňuje webovému
serveru spouštět, na žádost uživatele, programy, jejich výstupy zachytávat a
navracet je ve sbalené formě webovému prohlížeči jako HTTP hlavičky. CGI je
35
4. Server side skripty
všudypřítomný9 mechanismus na základní operace obdobné funkcím SSI, jen s
tím rozdílem, že pro stejnou funkci je nutno tento kód funkce napsat. Například
pro zjištění změny data dokumentu stačí jeden řádek pomocí SSI, kdežto s
využitím CGI je nutno volat několik programu (či jiný program, k tomu účelu
vytvořený), které nám vrátí již pouze data ve formě datumu. Lze říci, že metody
přístupu přes CGI jsou omezeny pouze na operačním systém, na kterém
webový server běží. Tento fakt zahrnuje i vlastnoručně napsané programy v
programovacím jazyce C nebo C++, kdy není nutná kompilace. O tuto kompilaci
se postará právě jádro CGI (společně s modulem k tomu určeným), které
podporuje i ne příliš rozšířené programovací jazyky COBOL nebo Fortran. V
dnešní době existuje aktuální verze rozhraní CGI 1.1, která je platná již od roku
1995 [3], a která byla používána již v prvních serverech NSCA httpd. Tato verze
CGI je i stále konceptem standardu IETF, ačkoliv v současné době je ve vývoji
rozhraní CGI verze 1.2, který se ovšem značně prodlužuje.
CGI je branou pro skripty, programy, či dávkové soubory k využití jejich
funkcí pro vygenerování stránky, která je plně dynamická a nabízí možnost
interakce s uživatelem. To, co je spustitelné v operačním systému, na němž
běží webový server, je použitelné prostřednictvím CGI k vygenerovaní webové
stránky. Vzhledem ke skutečnosti, že rozhraní CGI má vazbu na servery NCSA
a tedy i Apache, je jasné, že první rozhraní CGI bylo především používáno na
serverech s operačním systémem Unix či Linux. Proto není divu, že
nejrozšířenější přístup pro tvoření skriptů na straně serveru byl přístup, jenž
kombinoval skriptovací jazyk Perl a rozhraní CGI. Většina tehdejších a mnoho
ještě dnešních webových aplikací je tedy psáno právě v jazyce Perl a je
spouštěno přes CGI. Dobrým příkladem může být oblíbená webová aplikace,
simulující e-mailového klienta Open Webmail. Webová aplikace vytvořená
pomocí skriptů a s webem spojená přes CGI měla výhodů i v samotné správě.
Skript je velmi lehce upravitelný a není nutnost po každé změně v kódu tento
9 Pokud říkám všudypřítomný, pak myslím na webových server Apache, kdy modul CGI je vždy
obsažen v nejzákladnější instalaci.
36
4. Server side skripty
kód překompilovávat. U CGI je tato výhoda zachována i u jazyků, které je nutno
pro spuštění kompilovat (rodina jazyků C). Kromě samotného umožnění
spouštění programů a předání výsledku tohoto volání, zprostředkovává CGI i
předávání parametrů a dat právě těmto spouštěným programům. Z tohoto
důvodu není psaní skriptů pro web nijak odlišné od psaní skriptů pro samotný
operační systém.
CGI se stal přímím konkurentem vnitřních programovacích systémů
implemetovaných ve webových serverech. U společnosti Netscape to je NSAPI,
u společnosti Microsoft ISAPI, dokonce Apache group zaimplementovalo do
Apache také programovací prostředí, a to navzdory faktu, že v té době již byl
Apache distribuován s modulem podpory CGI.
CGI nabízí výhody především v nezávislosti na architektuře, na které
rozhraní běží a především, jak již bylo řečeno, nezávislost ve výběru jazyka, ve
kterém je možno psát webové aplikace. Další výhodou je izolace procesů, které
CGI spouští. Tyto procesy jsou nezávislé na webovém serveru. CGI je většinou
implementován jako modul, tedy o jeho fungování se stará jádro operačního
systému a CGI pouze předává dohodnutým způsobem (definovaném právě
modularitou) data webovému serveru, který je zpracovává. Toto je důležitý
bezpečností, ale zároveň i nevýhodný prvek. CGI je spouštěno mimo prostředí
webového serveru, což vede k samotné ochraně webového serveru před útoky,
ale zároveň otevírá cestu pro útok na samotný operační systém prostřednictvím
volaných skriptů. Tedy je nutné v návaznosti na toto riziko psát skripty s
důrazem na jejich nezneužitelnost, která by mohla vést k nestabilitě samotného
serveru. Proto vzniklo mnoho dokumentů, které popisují jak správně psát skripty
pro použití s rozhraním CGI. Jedním velice obsáhlým a uceleným dokumentem
je internetová stránka www.w3.org/Security/Faq/.
Poslední výhodou rozhraní CGI je možnost absolutní kontroly a nabízí
dostatečné nástroje ke zvládnutí problémů. Dále je dostatečně výkonné
(rychlé), rychlejší zpracování nabízí snad jen vnitřní programovací rozhraní
37
4. Server side skripty
vlastního serveru. K výkonu se váže nedávně vydaná podpora modulu
mod_cgid v Apache, který umožňuje vláknové zpracování procesů, a tedy vede
ke značnému zvýšení výkonu spuštěných procesu přes CGI.
Poslední věcí, kterou je nutno zmínit u CGI je jeho bezpečnost. Rozhraní
CGI je často kritizováno jako nebezpečný způsob spouštění programů na
webovém serveru. I když byly nalezeny v mnoha běžně používaných skriptech
CGI bezpečnostní díry, není výskyt této bezpečnostní díry důsledkem vnitřních
chyb rozhraní CGI. Problémy v těchto skriptech, které jsou někdy publikovány i
jako ukázkové, jsou výsledkem nepozornosti a nedostatečného uvažování při
jejich vzniku, tedy rozhraní CGI je v tomto případě v nevinně. Na tyto
bezpečnostní díry bývá velice záhy po jejich vypuštění upozorňováno, a to vede
k tomu, že jsou vydané nové verze těchto skriptů.
38
5. Systém PHP - charakteristika, bezpečnost
5. Systém PHP - charakteristika, bezpečnost
5.1 Skriptovací prostředí na straně serveru
Je-li řeč o technologiích na straně serveru v prostředí internetu, je
nepochybně na místě se zmínit o nějakém konkrétním prostředku, který nám
umožní interakci s uživatelem a umí využít všech prostředků technologií,
popsaných v předešlých kapitolách. To, o čem je zde řeč je skriptovací jazyk,
implementovatelný do webového serveru, který nemusí nutně využit rozhraní
CGI. Pokud by se vycházelo z této myšlenky, máme na výběr již z menšího
množství skriptovacích jazyků, ale pokud by jsme měli jmenovat, budou to často
používané skriptovací jazyky ASP (Active Server Pages), dále stále se
rozšiřující využití jazyka JAVA, který má podobu takzvaných servletů
označovaných zkratkou JSP (Java Server Pages). Tyto dva skriptovací jazyky
jsou v popředí komerční scény a jsou často nasazovány na rozsáhlejší projekty.
ASP od společnosti Microsoft vychází a strukturou je velice podobné
programovacímu jazyku Visual Basic, kdežto JSP od společnosti Sun
Mcirosystems je plnou integrací programovacího jazyku Java do prostředí
webu. Pokud se podíváme na oblast, která se hlasí k open – source komunitě,
nabízí se zde neméně mocné skriptovací jazyky jako jsou Perl, Python a velice
oblíbený, rozšířený a plně konkurence schopný systém PHP. Právě posledně
zmiňovaný skriptovací jazyk je na místě si představit, a proč? Odpověď na tuto
otázku je velice jednoduchá. PHP jako jediný ze zde zmíněných jazyků, je
určen právě pouze pro tvorbu webových aplikací10.
10 I když tento fakt již není platný, PHP se za své léta existence dočkalo možnostem, jak tento jazyk
využít i jinde než na webu. Dnes systém PHP lze využít na tvorbu skriptů pro shell systému Linux, a
také se již v nedávných dobách objevily kompilátory, které udělají z aplikace napsané v PHP
spustitelnou aplikaci.
39
5. Systém PHP - charakteristika, bezpečnost
5.2. Charakteristika PHP
PHP byl vyvinut v roce 1994 [2] jako jednoduchý nástroj, vkládaný do
HTML a určený pro tvorbu jednoduchých dynamických stránek. Jeho první
verze, které autor Rasmus Lerdorf vytvořil, nebyly uvažovány jako plně funkční
skriptovací prostředí. Na počátku jednoduché programy napsané v Perlu, které
měly za úkol zaznamenávat a obstarávat evidenci přístupu na stránky. Ale
vzhledem k faktu, že spuštění interpretů Perlu velmi zatěžovalo server, autor
přepsal celý systém do jazyka C. Ačkoliv tento systém byl vytvořen pro osobní
použití, zalíbil se i u ostatních uživatelů, kteří jej začali používat. Autor tedy
uvolnil tento systém včetně dokumentace a dal mu jméno Personal Home Page
Tools, který se s příchodem vylepšení změnil na Personal Home Page
Construction Kit. Již na počátku si lidé tento název různými způsoby zkracovali
a po přejmenování bylo jasné, že zůstane u zkratky tvořené z prvních třech
slov. Tento systém nabýval na oblíbenosti a Rasmus Lerdorf vytvořil konferenci,
skrze kterou nabídl uživatelům prostor, kde mohli vyjádřit, co by v systému rádi
měli, či co by se mělo změnit. Posléze byl do systému zakomponován systém
pro práci s databázemi skrze jazyk SQL. Tento systém byl šířen pod názvem
PHP/FI. Světovou popularitu ovšem nalezla až verze PHP/FI 2.0, která
znamenala významný krok pro vývoj tohoto systému, kdy se na něm začali
podílet i jiní vývojáři. V současné době je již v užívání verze PHP 5.0.
Podíváme-li se zpět, je vidět obrovský skok ve vývoji tohoto systému, třikrát se
změnilo samotné jádro systému, a ne jinak tomu je i u současné verze 5.0.
Zřejmě nejvýznamnější změnou bylo vypuštění verze PHP 4.0, která měl
kompletně přepracované skriptovací jádro, zahrnující analyzátor jazyka Zend
Engine od Zend Technologies Ltd. Hlavní výhodou integrace komerčního
produktu Zend Engine do open - source produktu byl Zend Optimizer, který
zkoumá samotný PHP kód a provádí optimalizace, jež „prý“ zdvojnásobují
rychlost spouštěné PHP aplikace. A co vlastně nabízí zmiňované spojení Zend
40
5. Systém PHP - charakteristika, bezpečnost
Technologies Ltd s PHP Group? Kromě dodání a implementování Zend Engine
a podpory přijetí PHP v komerční sféře, jsou to především nástroje Zend
Accelerator (zvyšují propustnost jádra Zend), Zend Studio (vývojové prostředí s
grafickým prostředím) a Zend Encoder, který umožňuje distribuci PHP aplikací
ne na úrovni open - source, ale v obdobné podobě jako vytváří
pseudokompilátor jazyka Java, který šiří kódy jazyka v takzvaném bytcode, tedy
pro člověka nečitelný kód. Vzhledem k současné podobě systému již zkratka
PHP nevyjadřuje svůj původní význam a bylo nutné nalézt jiný ekvivalent, který
se nakonec ustálil na PHP: Hypertext procesor.
5.3 Možnosti PHP
Vzhledem k počtu příznivců, vývoj PHP asi nebude nikdy ukončen. Do
systému jsou stále přidávány nové možnosti, které napomáhají vytvářen
efektivní dynamické stránky. Systém PHP je udržován ve stavu, ve kterém
podporuje nejnovější technologie. Dobrým příkladem je, když se podíváme na
počet databázových strojů, se kterými systém PHP umí komunikovat. Systém
PHP má funkce pro úpravu a tvorby grafiky, pro práci s databázemi, se
souborovými systémy, s většinou síťových protokolů, pro správu a tvorbu a
odesílání e-mailů. Dále funkce pro komunikaci a možnosti nastavení samotných
webových serverů, na kterých je systém nainstalován a mnoho dalších funkcí,
jako je například komunikace se servery Lotus Notes, které mají vlastní nástroje
na prezentaci svých databází a vnitřních aplikací. Celý rozsah působnosti
tohoto systémů lze nalézt v dokumentaci jazyka na stránkách www.php.net, kde
lze také nalézt i aktuální verzi systému PHP ke stažení.
5.4 Provoz PHP
Systém PHP na serveru Apache je možné provozovat ve dvou režimech.
41
5. Systém PHP - charakteristika, bezpečnost
Jedna možnost je spouštět PHP skripty skrze rozhraní CGI (FastCGI). Krom
výše popsané výhody (nezávislost na platformě) používaní CGI, má tento
způsob i svou nevýhodu. Pro každou stránku napsanou v PHP nebo obsahující
kód PHP je nutné spustit překladač PHP, který se postará o provedení kódu a
posléze se ukončí. Toto volání je zdlouhavé a náročné a nenabízí žádnou
výhodu oproti použití jakéhokoliv jiného jazyka použitelného skrze CGI.
Druhá možnost, která je specifická pro webový server Apache, je
zakompilovat překladač systém PHP jako modul Apache, který pak stále běží
společně s každou instancí serveru. Takto nám pak odpadají veškeré potřeby a
systémové prostředky pro zpracování stránky napsané v PHP a ze
systémových prostředků je jen potřeba to, co sám kód PHP využije. Další
výhodou této metody spuštění systému PHP se nalézá ve využitelnosti funkcí
PHP, které
umožňují využít vnitřní mechanismy serveru Apache (např.
proměnné serveru, ve kterých se nachází stavové informace včetně kontroly
přístupu k dokumentům).
5.4 Alternativy k PHP na serveru Apache
Jedním z horkých kandidátu na post největšího konkurenta systému PHP
je stále systém ASP, ačkoliv hrozí, že ho v dohledné době nahradí velmi mocná
Java. ASP je produktem firmy Microsoft a po mnoho let bylo i favoritem pro
tvorbu dynamických stránek. Tak velké slávy jako PHP se ovšem nikdy
nedočkal, a to z jednoho prostého důvodu. Tím důvodem byl fakt, že systém
ASP byl pevně spjat s webovým serverem firmy Microsoft IIS, který je určen
pouze pod systém Windows (komerční a nepříliš levné řešení). V nedávné
minulosti se objevil open - source modul pro Apache psaný v Perlu,
Apache::ASP, který umožňuje skrze PerlScript psát stránky v jazyku ASP.
Dále zde existují dva komerční moduly pro Apache, které umožňují plně
využívat možností systému ASP, jsou jimi InstantASP, od společnosti Halcyon
42
5. Systém PHP - charakteristika, bezpečnost
Software (je nutné provozovat na serveru s podporou Java servletů) a modul od
společnosti Chili!Soft, a to Sun ONE ASP, jakožto volně šiřitelnou verzi ASP
(jedná se o napodobeninu ASP). Dále stojí za zmínku nástroj, který vytvořil
Michael Kohn, který konvertuje stránky psané v ASP do kódu PHP, je tedy
určen pro potřeby subjektů, které přecházejí ze systému ISS + ASP na Apache
+ PHP. Tento nástroj se nazývá asp2php.
Dalším vážným konkurentem je jazyk Java využitý na internetu pro
tvorbu webových aplikací. Je to opravdu horký kandidát na post leadra souboje
o nejvhodnější nástroj pro vývoj webových aplikací. Tento post Javy potvrzuje
sám Microsoft svým chování, v době, kdy Java spatřila světlo světa. Okamžitě
to byl silný nástroj, který předpovídal konec nadvlády systému PC a Windows
(což se doposud nestalo). Jazyk Java byl od prvopočátků tvořen pro internetové
použití a prvními pokusy, jak toho docílit, bylo použití Javy ve formě takzvaných
apletů. Aplety si uživatel stáhnul, posléze spustil pod speciálním prostředním
pro běh Java aplikací (JVM – Java Virtual Machine, dnes šířeno jako JRE –
Java Runtime Environment). Tento aplet používal okno prohlížeče se stránkou,
kde se nalézal (tento proces se odehrává zcela automaticky, bez asistence
uživatele). Ke smůle rozvoje jazyka Java se tento způsob využití na internetu
příliš nezažil, směr Javy se zaměřil na využití v rozsáhlých aplikací pro firemní
účely s velmi těsnou vazbou na databáze. Toto dalo popud k rozšiřování
kontejneru servletu, který je jednoduše nástrojem ke spuštění kódu jazyka Java
jako webové aplikace. V roce 1998 Sun Microsystems a Apache Software
Fundation vytvořili projekt Jakarta pro vytvoření oficiální implementace
specifikace Java Server Pages, běžící jako servlet, který se drží poslední
specifikace Java API. Pod záštitou projektu Jakrata vznikl Tomcat jako
plnohodnotný kontejner servletu pro jazyk Java. Možná se divíte, proč Tomcat
je pouze kontejnerem servletu a ne plnohodnotným webovým serverem s novou
funkcí. Důvodu je hned několik. Jednak již v době vzniku Tomactu je server
Apache velmi rozsáhlým a robustním nástrojem a pak Tomcat nebyl vyvinut,
43
5. Systém PHP - charakteristika, bezpečnost
aby byl schopen zvládnout příliš požadavků v jeden okamžik. Pak je zde
možnost zakomponovat Tomcat do Apache, pokud by uživatel nechtěl
provozovat Javu, byla by to nadbytečná součást. Proto Tomcat je vyvíjen
samostatně, ale s ohledem na spojení s webovým serverem Apache. Tomcat
běží na pozadí jako deamon, stejně jako Apache a jen čeká na požadavek
webového serveru Apache. V případě kladného vyřízení požadavku, server
Apache předá řízení serveru Tomcat, který spustí požadovanou stránku
napsanou v jazyce Java a sám vrátí výsledek jako samostatný webový server.
Možností spojení se serverem Apache je víc. Buď může Tomcat běžet jako
samostatný webový server, na který bude přesměrován provoz v případě
nutnosti (tento způsob je velmi pomalý), nebo můžeme využít modulů pro
Apache, které jsou vyvíjeny samostatně. Jsou to moduly mod_webapp a
mod_jk, které definují protokoly komunikace mezi Apachem a Tomcatem.
44
6. Příklad řešení - Linuxový server, PHP, MySQL
6. Příklad řešení - Linuxový server, PHP, MySQL
6.1. Modelový podnik
Mějme skupinu 20 lidí, sdružených do začínajícího podniku, který má za
cíl poskytovat informace z různých sfér světa (ekonimka, sport, věda atd.).
Tento podnik bude neziskový a zároveň lidé, jakožto zaměstnanci, nebudou
nijak odměňovány. Tedy podnik, který své cíle bude realizovat bude využívat
technologií open – source. Podnik bude využívat již hotových aplikací pro
publikaci informací a ke své činosti potřebuje systém, jenž zabezpečí
organizovaný chod podniku. Podnik bude využívat především webové aplikace.
Byl zde popsán skriptovací systém PHP, v tomto ohledu se nabízí dvě
možnosti, jak tento systém využít. První je redakční systém naprogramovat v
tomto jazyku, druhý je použít existující redakční systém, který je šířen pod
licencí GNU/GPL11. Vzhledem k požadavkům podniku je přípustná pouze druhá
varianta. V tom případě je na výběr z mnoha systému, které se těší všeobecné
popularitě a mají silnou vývojářskou základu (minimální riziko ukončení
podpory). Výčtem uvedu ty nejznámější systémy: PHP Nuke, phpRS, e107,
Mambo. Všechny tyto systémy jsou dobře funkčně vybavené, jsou velmi složité
a plně administrovatelné.
Z posledních technologií byla zmiňována Java s běhovým prostředím
realizovaným serverem Tomcat. Funkčnost tohoto systému si ukážeme na
kolaboračním serveru, který je celý tvořen v jazyce Java a je celý napsán jako
webová aplikace. Je to aplikace Desknow. Tato aplikace bude prostředkem pro
celkovou organizaci, a to díky implementovaným funkcím: Skupinový kalendář,
nástěnky, web – based file server, web – based mail server, online messaging a
jiné.
11 Zkratka GNU/GPL označuje dokument, který stanoví podmínky pro poskytování a šíření softwaru pod
záštitou open-source... tento dokument v plném znění naleznete v příloze.
45
6. Příklad řešení - Linuxový server, PHP, MySQL
6.2. Instalace systému Linux
Pro výběr vhodné konfigurace serveru je nutné pohlížet na minimální
nároky
provozovaných
aplikací. Asi
nejnáročnější
aplikací
z
hlediska
systémových požadavků je aplikace kolaboračního serveru Desknow, která
požaduje procesor alespoň s kmitočtem 500MHz a alespoň 128MB operační
paměti.
S ohledem na výše zmíněné nároky bude stačit obyčejný počítač, který
bude obsahovat základní desku s chipsetem VIA KT133 osazenou procesorem
AMD Duron 800MHz a 512MB SDRAM operační pamětí. Dále bude počítač
obsahovat 40GB pevný disk, jednotku CDROM a síťovou kartu s přenosovou
rychlostí 100Mb/s. Tento počítač je připraven na instalaci operačního systému.
Hardware v něm obsažený je natolik používaný, že by žádný operační systém
neměl mít problémy s jeho funkčností.
Dalším krokem je výběr vhodné distribuce systému Linux. Prakticky je
jedno, jakou distribuci vybrat, jde jen o osobní preference kladené na jeho
administraci a již předešlé znalosti. Pokud budeme vybírat z binárních
distribucí, sáhneme asi po ověřené distribuci Debian. Aktuální verzi distribuce
tohoto systému naleznete na adrese www.debian.org, či českém portálu
www.debian.cz. Ke stažení je několik verzí systému v několika podobách.
Aktuální verze jsou většinou tři a verze se označují jak číselným označením, tak
označením slovním, kdy existuje i slovní ekvivalent pro číselné označení
(kódové označení). Verze označovaná jako „stable“ je nejnovější verze oficiálně
vydaná, která je autory doporučována jako primární. Současná „stable“ verze
nese kódové označení „Sarge“. Druhá verze, „testing“, obsahuje balíčky, které
nebyly oficiálně přijaty do verze „stable“ a pouze na to čekají. Tedy není
garantována stabilita systému, ale výhodou je aktuálnost obsaženého softwaru.
Současná verze „testing“ nese kódové označení „Etch“. A poslední verzí
systému Debian je verze „unstable“, která je totožná s vývojovým stupněm
46
6. Příklad řešení - Linuxový server, PHP, MySQL
systému Debian, tedy v této verzi se rodí příští „stable“ verze systému. Tuto
verzi používají především vývojáři systému a označují ji jako verzi „Sid“.
Podrobné informace o vývoji systému Debian naleznete na stránkách
http://www.debian.org/releases/, kde jsou uvedeny jak aktuální, tak již starší
verze systému.
Verze „stable“ tedy verze 3.1r2 s označením „Sarge“ je správnou volbou
vzhledem k požadavkům kladeným na operační systém, který ma bežet bez
přerušení (stabilta). Nyní je na řadě stáhnout potřebné věci k instalaci. Nabízí
se nám několik variant, jednak minimální instalace na jednom disku CD, která
obsahuje jádro systému a dále programy které zabezpečí rozšiřování systému
ze sítě internet. Získání kompletní instalace je druhou variantou. Tato instalace
je nabízena ve dvou variantách a to na jednom disku DVD, či na dvou, dle
softwarové vybavenosti (verze na dvou discích DVD je především určena pro
provoz na pracovních stanicích). K potřebám podniku bude stačit minimální
instalace v podobě jednoho disku CD.
Po výběru instalace už jen stačí z disku CD spustit počítač a řídit se
pokyny instalátoru. Prvním krokem je výběr verze kernelu. Na výběr jsou dvě
možnosti, a to kernel verze 2.4, který je starší, ale stále vyvíjený, nabízí větší
stabilitu, ale za cenu nedostatečné podpory nových technologií, které je nutno
posléze do systému ručně přidat. Nebo verze 2.6, která naopak podporuje nové
technologie a je
spíše určena, díky své filozofii (výkonější využití
vícevláknového zpracování procesů), pro provoz na serverech a nových
pracovních stanicích. Dalším krokem při instalaci je výběr jazyka, kterým budete
systém komunikovat (doporučuje se ponechat anglický jazyk). Dále následuje
detekce hardwaru, nastavení síťového prostředí a samotná instalace systému.
Po úspěšné instalaci instalátor nastaví nástroj apt-get, který umožňuje
instalaci nových programů do systému.
Po nainstalování je nutné doinstalovat potřebné programy, které v rámci
našeho cíle jsou potřeba. Je to webový server, datábazový server, jádro
47
6. Příklad řešení - Linuxový server, PHP, MySQL
skriptovacího jazyka PHP a vše potřebné pro běh jazyka JAVA na webu.
To uděláme pomocí příkazu:
# apt-get install apache mysql-server php5 php5mysql
Program apt-get z názvů balíčků nainstaluje vše potřebné, tedy i přidružené
programy a knihovny, které potřebují instalované programy k vlastnímu běhu.
Tyto balíčky nám nainstalují webový server Apache verze 1.3, databázový
server MySQL aktuální verze 4.x (již existuje verze MySQL verze 5, ale je
natolik odlišná, že je distribuována samostatně, tedy ne jako náhražka
předchozí verze), skriptovací jazyk PHP a potřebný modul pro komunikaci PHP
se serverem MySQL. Po instalaci je vše potřebné nastaveno a spuštěno12. V
této fázi již máme vše potřebné pro bezproblémový běh redakčního systému
psaného v jazyce PHP. Pro běh kolaboračního serveru Desknow je nutné mít v
systému funkční server Tomcat. Naštěstí aktuální verze programu Desknow jej
obsahuje již v sobě, proto stačí na stránkach www.desknow.com stáhnout
archiv, který obsahuje soubory potřebné pro běh na serveru. Takto nabytý
archiv obsahuje implementovaný server Tomcat, tedy naší prací jen bude tento
server propojit s webovým serverem, aby server Tomcat byl přístupný skrze
internet. K tomuto cíli je nutné stáhnout modul Apache mod_jk, který tuto funkci
obstarává.
Tento
modul
najdeme
na
stránkách
projektu
Jakarta
(http://jakarta.apache.org/), který má na starosti vývoj serveru Tomcat a vše
kolem něj. Ačkoliv se nám nabízí použít implementovaný modul Apache
mod_webapp, stahovaný modul mod_jk nabízí rychlejší a pružnější komunikaci
mezi serverem Apache a serverem Tomcat. Modul mod_webapp je obecný
modul, kdežto mod_jk je vyvinut pouze pro tuto funkci.
12 Taková instalace sebou nese i konfigurační soubory, které mají standartní nastavení, které je sice
funkční, ale není bezpečné, proto je nutné nastavit každý systém individuelně.
48
6. Příklad řešení - Linuxový server, PHP, MySQL
V dalších krocích je potřeba se řídit přiloženou dokumentací aplikace
Deksnow, která zahrnuje i dokumentaci, jak správně použít mod_jk.
6.3. Instalace redakčního systému e107 a kolaboračního serveru Desknow
Před instalací je nutno si obstarat aktuální verzi tohoto systému, což
učiníme na stránkách projektu www.e107.org, kde nalezneme jednak rozsáhlou
dokumentaci, fungující fórum pro řešení problémů, tak odkazy na spřátelené
webové stránky, které pomáhají vyvíjet tento projekt, prostřednictvím plug-inů
(zásuvných modulů, vylepšující nebo přidávajících nějakou funkci do systému),
vizuálních témat a tak podobě. Po stažení instalace je nutno jí přenést do
patřičného adresáře na webového serveru a dále postupovat dle přiložené
dokumentace (postup instalace se liší dle verze). Ale samotná instalace je
složena z několika webových stránek, které napodobují průvodce instalací.
Postupně na stránkách jsou vyžadovány údaje o adrese databázového serveru,
jménu uživatele s heslem, který má přístup k databázi, určené pro redakční
systém. Nechybí ani stránka s kontrolou potřebných nastavení prostředí
webového serveru nutný pro správný chod redakčního systému. Po zadání a
kontrole všeho potřebného, instalační skript připravý databázi, vytvořením
tabulek a vložením dat, nutných pro první přihlášení do systému. Po této
operaci lze systém plně využívat. Ovšem systém jako takový je teď prázdný, s
jediným uživatelem, a to se správcem systému. Ten má možnost systém měnit
a určit funkce celého systému (změna vzhledu, použití plug-inů, operace nad
uživateli apod.). Toto vše provádí skrze administrátorské rozhraní, klasický
vzhled tohoto rozhraní, nejen v redakčním systému e107 může vypadat jako
ukazuje obrázek 4.
49
6. Příklad řešení - Linuxový server, PHP, MySQL
obrázek 10: webová stránka s administrátorským rozhraním
Tento redakční systém využívá nejmodernějších technik psaní skriptů
PHP pro internet, drží se všech standardů pro psaní bezpečných skriptů. Dále
využívá nejmodernějších internetových technologií jako jsou inteligentní metody
vkládání dat AJAX, nebo rozhraní pro vkládání textu WYSIWYG. Spojením
těchto technologií nabudí dojem, že nepracujeme se statickou stránkou na
internetu, ale se zcela funkčním samostatným programem.
Nejinak tomu je i u kolaboračního serveru Desknow, u kterého se
postupuje obdobně. Po úspěšném provedením instalačních procedur, kdy je
vytvořena struktura databáze používaná serverem a spojení serveru Tomcat a
serveru Apache, lze přejít na stránky tohoto serveru. Podle technik popsaných
dříve server Apache předá požadavek na zpracování serveru Tomcat a ten bez
povšimnutí uživatele, že byl přesměrován, požadavek vyřídí. Základní stránka
tohoto serveru vypadá jak ukazuje obrázek 5. Lze si povšimnout, že vzhled a
posléze i funkčnost se velmi blíží klasickým komerčně nabízeným programům
pro PC (nejvíce pak asi softwaru Microsoft Outlook).
50
6. Příklad řešení - Linuxový server, PHP, MySQL
obrázek 11: hlavní stránka uživatele v systému Desknow
51
7. Závěr
7. Závěr
Představené technologie drží současnou podobu internetu pohromadě, a
ještě dlouho to tak bude. Jediné co se bude měnit bude velikost přízně, kterou
tyto technologie dostávají. Na základě této přízně se budou více využívat a tedy
jediné co se bude měnit bude pomyslný post „nejlepšího“.
V předložené práci byly řešeny vytčené tři cíle. Lze konstatovat, že tyto
cíle byly splněny, a to takto:
–
Charakteristika strany serveru:
ukázala, jak může být chápan pojem server a jak lze takový
server realizován. Popis uvedený v této práci nepřímo ukázal
ekonomický pohled na realizaci strany serveru. Server jako
profesionální systém za desítky až stovky tisíc korun nebo server
jako počítač bežně využívaný v domáctnostech za několik desítek
tisíc korun. V poslední kapitole byl předveden funkční server pro
podnik, který je v dnešní době takřka „zadarmo“ vzhelem k
současným technologiím.
–
Software na straně serveru:
je základním kamenem pro tvorbu kvalitních webových aplikací.
Ať už je zde reč o samotném operačním systému nebo
technologiích pro běh a tvorbu aplikací. Dnešní scéna softwaru je
rozdělena do sféry placeného softwaru a volně poskytovaného
softwaru. Zde není pochyb o tom, která sféra je ekonomočtější,
ale otázkou stále zůstává, zda jsou si obě sféry rovny z pohledu
funkčnosti a nabízených možností. V této práci je popisován
webový
server Apache
jako
představitel
open
–
source
technologií, který již prokázal nadřazenost svým komerčním
52
7. Závěr
konkurentům v podobě certifikátů, které prohlašují tento server
obecně lepší. Ale stále zůstavají kolem open – source technologií
předsudky,
které
hlásají,
že
se
nevyrovnají
komerčním
technologiím. Pro popření těchto předsudků zde byl představen
skriptovací systém PHP, který směle konkuruje komerčním
řešením, které zastupuje hlavně jazyk ASP. Ikdyž PHP není v
současnosti již ryzí open – source technologie, hlavně díky
integraci s Zend Technologies Ltd. Díky nástrojům od této firmy,
lze skripty psané v PHP rozšiřovat v nečitelné podobě, a tudíž již
nevyhovují filozofii open – source. Nemohlo být zapomenuto ani
na technoligi, která se probojovává na post nejlepšího řešení pro
tvorbu webových aplikací. Je jím jazyk JAVA, která je pro potřeby
na internetu interpretována (kompilována) v kontejneru (server
Tomcat), který může být spojen s webovým serverem.
–
Analýza možného řešení:
možnost
uplatenění
vzpomínaných
technologií
dnes
není
neobvyklá zaležitost, ba naopak. Velké firmy, které jsou pravě
producenty oněch předsudků na adresu open – source technoligií,
požadují specializované řešení svého problemů a tedy technolojií
open – source nevyužívají. Ale tyto firmy příliš neřeší finanční
stránku řešení problému, za to malé podniky, či jednotlivci ano. V
poslední kapitole byly představeny pouze open – source
technologie a byly spojeny v jeden funkční celek. Cena realizace
tohoto celku by tvořila pouze částka, která by odpovídala ceně
počítače, na kterém je vše provozováno. Ovšem pokud by jsme
chtěli obdobný systém realizovat komerční cestou, která by
vývojově odpovídala zde uvedenemu řešení, byla by částka za
realizace řádově hodně
vyskoká. Tak kupříkladu pro operační
systém Windows 2003, by již samotný počítač nevyhovoval
53
7. Závěr
doporučeným
požadavkům
pro
provoz
tohoto
operačního
systému. Tedy potřebná částka by se zvyšovala nejen o cenu
operačního systému ale i o cenu počítače vhodného pro tento
operační systém. Pokud by měl být systém Desknow nahrazen
komerčním produktem, pak by to byl poštovní server Microsoft
Exchange s využitím programu Microsft Outlook. Tedy opět nárůst
ceny hned o dva komerční produkty. Ekonomické výhodné
hledisko open – source technologií je tedy zatím neotřesitelné.
54
8. Seznam literatury
8. Seznam literatury
[1] Hlavenka, Jiři a kol. Vytváříme WWW stránky a spravujeme moderní web
site. Computer Press, 2000, ISBN 80-7226-293-9
[2] Kosek, Jiří. PHP – Tvorba interaktivních internetových aplikací. Grada
Publishing, 2000, ISBN 80-7169-860-1
[3] Aulds, Charles. Linux administrace serveru Apache, Grada Publishing, 2003,
ISBN 80-247-0640-7
[4] Lacko, Luboslav. Web a databáze. Computer Press, 2001, ISBN 80-7226555-5
[5] Netcraft web side. Web Server Survey Archive,
http://news.netcraft.com/archives/web_server_survey.html
[6] CHL web side. FM2000 Fund Manager,
http://www.chl.co.uk
[7] TechPro web side,
http://www.techpro.com/images/cabling/cable_server_rack.jpg
[8] Internet shop, Yahoo.net,
http://lib.store.yahoo.netlibserverrackserver-rack-blank-panels.jpg
[9] Kosek, Jiří ml. Aplikace na webu, www.kosek.cz, 1999
[10] Apache Software Foundation web side, www.apache.org
[11] Jakel, Milan. Stavové kódy a hlášení v odpovědi protokolu HTTP,
www.interval.cz, 2002
[12] Wikipedia, Free Encyclopedia,
http://wikipedia.org
55
9. Přílohy
9. Přílohy
56