Č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 , 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] <TITLE>OneBig Inc.
Nabídka služeb firmy OneBig Inc.
...další informace...
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