Jak CGI skripty běží na webových serverech: vysvětleno cgi-bin

12

Většina webových serverů se spoléhá na standardizovaný mechanismus pro spouštění dynamického obsahu. Tento mechanismus se nazývá Common Gateway Interface (CGI). Není to magie. Je to struktura složek a sada pravidel, která serveru říkají, aby přestal považovat kód za statický text a začal s ním zacházet jako se spustitelným programem.

Klíčovým prvkem je speciální podadresář s názvem cgi-bin. Když nastavujete webový server, vytvoříte tuto složku v kořenovém adresáři dokumentů. Server je nakonfigurován tak, aby pečlivě sledoval tento adresář. Jakýkoli soubor požadovaný z cgi-bin způsobí jiné chování než standardní HTML stránka.

Místo čtení souboru a odeslání jeho nezpracovaného obsahu do vašeho prohlížeče server soubor spustí. Je to výstup generovaný z tohoto provedení, který je doručen klientovi. To umožňuje serveru spouštět kód za běhu a generovat odpovědi na základě vstupu uživatele, databázových dotazů nebo jiné dynamické logiky.

Programy uložené v tomto adresáři jsou obvykle buď zkompilované binární soubory (například ty vytvořené kompilátorem C) nebo interpretované skripty. Oboru dominuje jeden jazyk: PERL. Je to základ skriptování CGI po celá desetiletí, protože zvládá manipulaci s textem a interakci se serverem s úžasnou lehkostí.

Podívejme se na konkrétní příklad. Do prohlížeče zadáte tuto URL: https://www.howstuffworks.com/cgi-bin/search.pl.

Server vidí cestu. Rozpozná, že search.pl se nachází ve složce cgi-bin. Nepošle vám zdrojový kód. Spouští search.pl. Skript PERL zpracuje požadavek – možná přistupuje k indexu vyhledávání – a vrátí výsledek ve formátu HTML. Váš prohlížeč zobrazí tento výsledek. Zdrojový kód se nikdy nedostane na vaši obrazovku.

Chcete si to sami vyzkoušet? Je to možné, ale budete potřebovat dvě věci.

Nejprve musíte znát programovací jazyk vhodný pro CGI. Tradiční standardy jsou C a PERL. Musíte porozumět tomu, jak vypisovat hlavičky HTTP a zpracovávat vstup serveru.

Za druhé, potřebujete přístup k webovému serveru, který může provozovat CGI. Pokud používáte placeného poskytovatele hostingu, s největší pravděpodobností již tuto funkci máte. Většina sdílených hostingových plánů ve výchozím nastavení podporuje CGI. Potvrďte to v dokumentaci poskytovatele hostingu. Možná budete muset nahrát své skripty konkrétně do adresáře cgi-bin.

Pokud nemáte hostingový účet, můžete si na svůj domácí počítač nainstalovat webový server. To vám poskytne úplnou kontrolu. Můžete experimentovat s různými konfiguracemi a ladit chyby v reálném čase. Je to složitější než použití hostingové služby. Serverový software, zabezpečení a přístupová práva budete muset spravovat sami. Ale křivka učení je zde strmá, ale obohacující. Přesně pochopíte, jak web funguje zevnitř.

Toto nastavení funguje, protože serveru je výslovně řečeno, aby důvěřoval a spouštěl kód v této konkrétní složce. Mimo cgi-bin server zachází se soubory jako se statickými daty. Interně jsou to programy. Právě tento rozdíl umožňuje dynamické webové aplikace.

Server spustí program a odešle výstup do prohlížeče. Zdrojový kód zůstává skrytý.

Je to nejmodernější způsob vytváření webových aplikací? Ne. Moderní rámce často používají jiné architektury. Ale CGI spustilo vzorec. Dokázal, že servery mohou spouštět externí programy pro generování obsahu. Každý dynamický web, který dnes navštívíte, má svůj původ v této jednoduché adresářové struktuře.

Hranice mezi statickým a dynamickým obsahem je určena konfigurací serveru. **