Při prohlížení Internetu můžeme narazit v zásadě na dva druhy webových stránek:
Naprostá většina webových stránek je dnes dynamických. Klientem je v naprosté většině případů webový prohlížeč.
Webový server příjme pomocí protokolu HTTP požadavek na zaslání webové stránky nebo jiného obsahu (např. obrázku).
Webový server pomocí rozhraní CGI spustí program, kterému předá parametry zaslané klientem spolu s požadavkem.
Spuštěný program na svůj standardní výstup "vytiskne" HTTP hlavičku, kterou ukončí prázdným řádkem.
Dále program na svůj standardní výstup "vytiskne" požadovaný obsah. Nejčastěji je to webová stránka formátovaná pomocí jazyka HTML.
Webový server předá pomocí CGI programem vygenerovanou stránky zpět klientovy.
V souboru /etc/apache2/sites-enabled/000-default.conf
provedeme konfiguraci Apache podle návodu.
<Directory /var/www/>
Options -Indexes FollowSymLinks MultiViews +ExecCGI
AddHandler cgi-script .cgi
AllowOverride None
Order allow,deny
allow from all
</Directory>
`--> stáhnout
Důležité je +ExecCGI
a AddHandler cgi-script .cgi
.
Všechny soubory s příponou .cgi
se budou spouštět a jejich výstup se odešle do webového prohlížeče.
Po změně konfigurace je třeba znovu přesvědčit webový server aby si konfiguraci znovu načetl.
# service apache2 reload
Přejdeme do adresáře /var/www
:
# cd /var/www
vytvoříme soubor index.cgi
.
# mcedit index.cgi
Základem každého skriptu je HTTP hlavička|HTTP header. Minimální hlavička může vypadat např. takto:
Content-Type: text/html;
<prázdný řádek>
Prázdný řádek na konci je důležitý. Více o http můžete najít
v článku List of HTTP header fields nebo Hypertext Transfer Protocol.
Pokud se chcete podívat jak vypadá některá konkrétní http hlavička konkrétní stránky
poslouží vám dobře program Telnet nebo program GET
z balíčku libwww-perl
.
Online služeb je také více například web-sniffer.
Náš zdrojový kód potom může vypadat asi takto
#!/usr/bin/python
# -*- coding: utf8 -*-
import datetime
print "Content-Type: text/html; Charset=utf-8;\n"
print "<h1>Funguje mi to!!! Huráááá!!!</h1>"
td=datetime.datetime.today()
print "<p>Aktuální datum: {}. {}. {}</p>".format(td.day, td.month, td.year)
print "<p>Aktuální čas: {}:{}:{}</p>".format(td.hour, td.minute, td.second)
`--> stáhnout
Nakonec je ještě potřeba nastavit souboru práva pro spouštění...
chmod a+x index.cgi
... a podívat se na výsledek ve webovém prohlížeči.
Název školy: | Vyšší odborná škola a Střední průmyslová škola, Božetěchova 3 |
Autor: | Ing. Marek Nožka |
Anotace: | Princip funkce dynamických webových stránek |
Vzdělávací oblast: | Informační a komunikační technologie |
Předmět: | Počítačové sítě a komunikační technika (PSK) |
Tematická oblast: | Operační systém Linux/Unix |
Výsledky vzdělávání: | Žák vysvětlí základní rozdíl mezi statickou a dynamickou webovou stránkou. |
Klíčová slova: | Linux, Unix, Apache, CGI |
Druh učebního materiálu: | Online vzdělávací materiál |
Typ vzdělávání: | Střední vzdělávání, 4. ročník, technické lyceum |
Ověřeno: | VOŠ a SPŠE Olomouc; Třída: 4L |
Zdroj: | Vlastní poznámky, Vilém Vychodil: Linux Příručka českého uživatele |