Od CGI k FastCGI. Uvedené dílo podléhá licenci Creative Commons Uved te autora 3.0 Česko.



Podobné dokumenty
Instalace a konfigurace web serveru. WA1 Martin Klíma

Demo: Multipath TCP. 5. října 2013

Nginx v roli web serveru

Server-side technologie pro webové aplikace

Platební systém XPAY [

Nginx aneb jde to i bez Apache

rychlý vývoj webových aplikací nezávislých na platformě Jiří Kosek

OpenSSL a certifikáty

BI-AWD. Administrace Webového a Databázového serveru Virtualizace HTTP serveru

Semestrální projekt do předmětu SPS

Triky s OpenSSH. 4. listopadu Uvedené dílo podléhá licenci Creative Commons Uved te autora 3.0 Česko.

Webové Aplikace (6. přednáška)

Nové jazykové brány do Caché. Daniel Kutáč

Nejprve je třeba spustit správce serveru: V něm je třeba vybrat přidání rolí:

Serverové skriptovací technologie

ové služby a IPv6

Správa linuxového serveru: Redmine: Thin a Nginx

1 Správce licencí Správce licencí Správce licencí Start > Všechny programy > IDEA StatiCa > Správce licencí Soubor > Správce licencí Licence

Pánem World Wide Webu! aneb povídání o chybě hloupé tak, až to bolí

Instalace systému Docházka 3000 na operační systém ReactOS Zdarma dostupné kompatibilní alternativě k systému Windows

BI-AWD. Administrace Webového a Databázového serveru Instalace webového serveru Apache httpd

C2110 Operační systém UNIX a základy programování

Osnova. GIOP a IIOP IDL IOR POA. IDL Klient Server. 2 Historie. 3 Princip a základní pojmy. 4 Implementace. 5 Aplikace CORBA

Bakalářská práce, FEL ČVUT Praha. Michal Turek. červenec 2007

IB111 Programování a algoritmizace. Programovací jazyky

Základní pojmy spojené s webovým publikováním ~ malý slovníček pojmů~ C3231 Základy WWW publikování Radka Svobodová, Stanislav Geidl

Přenos souborů pomocí AceFTP (pdf verze pro tisk KB)

Tvorba WWW stránek. přehled technologií používaných na webu principy jednotlivých technologií a možnosti jejich vzájemného kombinování

Služba ve Windows. Služba (service) je program

1 Uživatelská dokumentace

PHP PHP je skriptovací programovací jazyk dynamických internetových stránek PHP je nezávislý na platformě

Úvod do Web Services

Implementace LMS MOODLE. na Windows 2003 Server a IIS 6.0

OpenVPN. Uvedené dílo podléhá licenci Creative Commons Uved te autora 3.0 Česko. Ondřej Caletka (CESNET, z.s.p.o.) OpenVPN 3. března / 16

Internet Information Services (IIS) 6.0

Protokol HTTP 4IZ228 tvorba webových stránek a aplikací

Zadání Vytvoříme jednoduchý multithread HTTP server v jazyce Java Spustíme si ho na lokálním počítači A otestujeme ho Zdrojový kód je v

1. Úvod do Ajaxu 11. Jak Ajax funguje? 13

Skriptovací jazyky. Obsah

Webový server lapache

Opensource antispamová ochrana

2015 GEOVAP, spol. s r. o. Všechna práva vyhrazena.

Použití programu WinProxy

JSON API pro zjišťování cen MtG karet

Úvod do počítačových sítí

ové služby na IPv6-only

Koláčky, sezení. Martin Klíma

Úvod do OpenWRT. Ondřej Caletka. 1. března Uvedené dílo podléhá licenci Creative Commons Uveďte autora 3.0 Česko.

Obsah. KELOC CS, s.r.o... v ý v o j a p r o d e j e k o n o m i c k é h o s o f t w a re

DUM č. 11 v sadě. 36. Inf-12 Počítačové sítě

VÝUKOVÝ MATERIÁL. Bratislavská 2166, Varnsdorf, IČO: tel Číslo projektu

Linux RAID, LVM. 27. listopadu Uvedené dílo podléhá licenci Creative Commons Uved te autora 3.0 Česko.

StartSSL: certifikáty zdarma

MATLABLINK - VZDÁLENÉ OVLÁDÁNÍ A MONITOROVÁNÍ TECHNOLOGICKÝCH PROCESŮ

Platební systém XPAY [

PSK3-9. Základy skriptování. Hlavička

Knot DNS Knot Resolver

11. Přehled prog. jazyků

HTTPS na virtuálních web serverech

IPv6 v OpenWRT. Ondřej Caletka. 5. října Uvedené dílo podléhá licenci Creative Commons Uveďte autora 3.0 Česko.

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

java remote method invocation Kateřina Fricková, Matouš Jandek

Ročníkový projekt DYNAMICKÉ HTML. Projektová dokumentace. Jan Ehrlich, Petr Marek, Tomáš Marván, Martin Paľo. Vedoucí projektu: RNDr.

Modul pro PrestaShop 1.7

Platební systém XPAY [

Využití OOP v praxi -- Knihovna PHP -- Interval.cz

Artlingua Translation API

WNC::WebNucleatCreator

BankKlient. FAQs. verze 9.50

language="javascript">... </script>.

HTTP hlavičky pro bezpečnější web

Jak se měří Internet

Load Balancer. RNDr. Václav Petříček. Lukáš Hlůže Václav Nidrle Přemysl Volf Stanislav Živný

Obsah. Předmluva Kapitola 1 Úvod 1. Web v kostce 1 Kdo je webmaster? 4 Doporučená literatura 4. Kapitola 2 Přehled jazyka HTML 5

PHP. nejen pro začátečníky. $c; echo { Martin Pokorný. Vzdìlávání, které baví Nakladatelství a vydavatelství.

Nastavení programu pro práci v síti

Úvodem 9. Zpětná vazba od čtenářů 10 Zdrojové kódy ke knize 10 Errata 10. Než začneme 11

Internet 2 css, skriptování, dynamické prvky

Platební systém XPAY [

Architektura rodiny operačních systémů Windows NT Mgr. Josef Horálek

STRUČNÝ NÁVOD K POUŽITÍ

Současný svět Projekt č. CZ.2.17/3.1.00/32038, podpořený Evropským sociálním fondem v rámci Operačního programu Praha adaptabilita

Vstupní požadavky, doporučení a metodické pokyny

Střední odborná škola a Střední odborné učiliště, Hořovice

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Obsah přednášky. Představení webu ASP.NET frameworky Relační databáze Objektově-relační mapování Entity framework

Zabezpečení proti SQL injection

INSTALACE DATABÁZE ORACLE A SYSTÉMU ABRA NA OS WINDOWS

PROGRAMOVÁNÍ V C++ CVIČENÍ

Knot DNS Resolver. Modulární rekurzivní resolver. Karel Slaný

Soketové připojení Klient InetAddress getbyname() UnknowHostException SecurityException Socket getinputstream() getoutputstream() IOException Server

VÝVOJ INTERNETOVÝCH APLIKACÍ - VIA

Popište rozdíly HTTP/1.0 a 1.1 "Host" hlavicka pro name-based vhosty keepalive chunked encoding. (chce to malinko rozvést).

Linux a Vzdálená plocha

Měření teploty na RaspberryPi

Střední odborná škola a Střední odborné učiliště, Hořovice

EIS JASU CS. Název souboru: Dokumentace EIS - Dokumentace EIS - Kontrola odběratelů v ISIR 1_7

Zabezpečená middleware komunikace

Úvod Virtuální kanál TCP Datagramová služba UDP URL TCP, UDP, URL. Fakulta elektrotechnická

Třídy a objekty. Třídy a objekty. Vytvoření instance třídy. Přístup k atributům a metodám objektu. $z = new Zlomek(3, 5);

Transkript:

Od CGI k FastCGI Ondřej Caletka 5. října 2013 Uvedené dílo podléhá licenci Creative Commons Uved te autora 3.0 Česko. Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 1 / 18

Obsah 1 Common Gateway Interface 2 FastCGI 3 Volací konvence FastCGI 4 Programování FastCGI aplikací Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 2 / 18

Common Gateway Interface první interaktivní obsah na webu webserver namísto předání souboru spustí spustitelný program HTTP hlavičky jsou předány jako proměnné prostředí data od klienta jsou předány na standardní vstup standardní výstup je předán klientovi chybový výstup se zapíše do logu webserveru podpora ve všech web serverech Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 3 / 18

Nejjednodušší CGI skript #!/bin/dash echo -n "Content-type: text/plain\r\n" echo -n "Cache-Control: no-store, " echo -n "no-cache, must-revalidate\r\n" echo -n "\r\n" echo -n "Hello World, " echo -n "your address is $REMOTE_ADDR" Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 4 / 18

Testování CGI skriptů $ mkdir cgi-bin $ cat >cgi-bin/hello.cgi... $ chmod +x cgi-bin/hello.cgi $ python2 -m CGIHTTPServer Serving HTTP on 0.0.0.0 port 8000... Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 5 / 18

Nevýhoda CGI pro každý požadavek klienta musí server nastartovat proces, který po obsluze klienta zanikne není možné držet spojení, např. s databází složitější skripty spotřebují spoustu prostředků na inicializaci Na druhou stranu ale: není problém s úniky paměti nepřicházejí-li požadavky, jsou prostředky serveru uvolněny Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 6 / 18

FastCGI vzniklo kolem roku 1996 (jako CESNET ) cílem je zefektivnit CGI důraz na vysokou kompatibilitu s CGI FastCGI proces nezaniká na konci požadavku, čeká na další binární protokol pro komunikaci s HTTP serverem, založený na unixových a TCP/IP soketech knihovny pro jazyky C, C++, Perl a Java Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 7 / 18

Volací konvence FastCGI 1 ve výchozím stavu FastCGI program neběží 2 do HTTP serveru přijde požadavek 3 HTTP server založí soket (unix/tcp) a pošle do něj požadavek 4 zároveň spustí FastCGI program tak, že mu na na FD0 předá listening socket 5 FastCGI program obslouží požadavek a zůstane běžet 6 další požadavky jsou jen předávány běžícímu programu 7 server také může spustit více instancí a paralelizovat Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 8 / 18

Příklad volání FastCGI Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 9 / 18

Zpětná kompatibilita FastCGI FastCGI skript může na základě stavu deskritorů při spuštění detekovat, zda je spuštěn v režimu CGI nebo FastCGI je-li mu předán standarní vstup a výstup, přepne do režimu CGI a po obsluze prvního požadavku skončí existuje také utilita cgi-fcgi umožňující připojit k FastCGI skriptu HTTP server, který podporuje jen CGI Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 10 / 18

Jednoduchý FastCGI program #include "fcgi_config.h" #include <stdlib.h> #include <unistd.h> #include "fcgi_stdio.h" int main() { int count = 0; while (FCGI_Accept() >= 0) { printf("content-type: text/plain\r\n" "\r\n" "Hello World, your address is %s.\n" "Request number %d, Process ID: %d\n", getenv("remote_addr"), ++count, getpid()); } /* while */ return 0; } Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 11 / 18

Testujeme FastCGI neexistuje mnoho FastCGI HTTP serverů vhodných pro ad-hoc použití díky podpoře zpětné kompatibility stačí spustit FastCGI stejně jako CGI k testování chování jako FastCGI můžeme využít cgi-fcgi cgi-bin/hellofcgi.cgi #!/usr/bin/cgi-fcgi -f -connect /var/tmp/fcgiapp.sock /var/tmp/hello.fcgi Nastartujte FCGI pomocí cgi-fcgi -start -connect /var/tmp/fcgiapp.sock /var/tmp/hello.fcgi 2 Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 12 / 18

FastCGI jako samostatný server některé HTTP servery (jako nginx) nepodporují spouštění procesů FastCGI očekávají adresu soketu, na kterém bude poslouchat FastCGI server vytvoření soketu a jeho předání FastCGI programu zařídí bud cgi-fcgi nebo spawn-fcgi od tvůrců Lighttpd výhodou je, že FastCGI skript může běžet pod jiným uživatelem než HTTP server Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 13 / 18

FastCGI jako samostatný server Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 14 / 18

PHP FastCGI Process Manager vylepšený spawner PHP interpreteru pro FastCGI (php-cgi) preferovaná cesta nasazení PHP prostřednictvím FastCGI dokáže spouštět PHP workery podle potřeby umí restartovat worker po n požadavcích je možné provozovat nezávislé pooly (pro každého uživatele samostatný) Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 15 / 18

Jméno URL u FastCGI u CGI je zvykem mít jeden CGI pro jednu funkci pro FastCGI naopak dává smysl kombinovat všechny funkce do jednoho programu volaná URL se detekuje třeba pomocí proměnně SCRIPT_NAME přístup Apache: pomocí modrewrite přepíšeme všechna URL na FastCGI soubor přístup Lighttpd: určíme podoblast URL, která bude celá obsluhovaná FastCGI skriptem Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 16 / 18

FastCGI jako Authorizer FastCGI může fungovat také jen jako autorizační brána Příchozí požadavek je předán FastCGI aplikaci Když FCGI odpoví 200 OK, je uživateli namísto výstupu FCGI poslán soubor z cesty v URL Příklad využití: download server pro e-shop: Při příchodu požadavku FCGI aplikace zkontroluje, zda stahuje oprávněný zákazník Pokud ano, vlastní odbavení statického souboru provede HTTP serverech Zjednodušení FCGI aplikace a úspora prostředků Nepodporováno v nginx Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 17 / 18

Závěr Děkuji za pozornost Ondřej Caletka (CESNET, z.s.p.o.) Od CGI k FastCGI 5. října 2013 18 / 18