CGI pagrindai

 

Pagrindinės sąvokos

Pasaulinio www pagrindą sudaro Web-serveriai, laukiantys užklausų iš klientinių programų (dažniausiai tai internetinės naršyklės) ir grąžinantys joms atitinkamą informaciją. Informacija paprastai grąžinama HTML formato faile, kuris atvaizduojamas nutolusio kompiuterio, siuntusio užklausą, ekrane.

CGI (Common Gateway Interface) - tai Web serverio dalis, galinti saveikauti su kitomis programomis (pvz. DBVS), veikiančiomis tame pačiame serveryje. CGI  - tai tarsi vartai kliento duomenų perdavimui duomenų bazei bei apdorotos informacijos grąžinimui klientui t .y. Web naršyklei. CGI sąveikai su programomis naudoja aplinką (t.y. spec.kintamuosius) bei komunikacinius protokolus.

 

Pav.1 CGI veikimo principas

 

CGI pagalba internetiniai puslapiai tampa interaktyvūs, klientai gali formuoti užklausas bei gauti juos dominančius atsakymus. Tam panaudojamos HTML formos. CGI - tai interneriniai vartai, leidžiantys klientui pasiekti inforamciją esančią duomenų bazėse, nes tai uždrausta atlikti tiesiogiai. Duomenų bazių užklausoms gali būti naudojamos DBI priedai, skirti SQL užklausų formavimui ir informacijos  nuskaitymui iš duomenų bazės. Gauta informacija formatuojama ir siųsti klientui. Žemiau parodyta, kaip CGI programa atlieka vartų funkciją pasiekiant Oracle DB.

 

Pav.2 CGI programa veikia kaip vartai

 

Bendra CGI darbo schema atrodytų taip:

  1. Web-serveris gauna informaciją iš web-naršyklės. Duomenys web-serveriui perduodami naudojant HTML formas, kurias sudaro tokie įvedimo laukai, kaip selektoriai, opcijos, teksto įvedimo laukai, valdymo mygtukai ir kt.
  2. Gauti duomenys iš HTML formos perduodami CGI programai, kuri juos apdoroja. Jei CGI programa negali pateikti reikiamos informacijos, ji formuoja užklausą atitinkamai duomenų bazių valdymo sistemai.

  3. CGI programa, gavusi duomenis iš DBVS formuoja dinaminį HTML dokumentą ir siunčia jį kliento web-naršyklei.

 



W
eb serverio konfigūravimas

Tam, kad web serveris galėtų vykdytų CGI skriptus, reikia jį atitinkamai sukonfigūruoti. Dažniausiai naujai suinstaliuoti web serveriai automatiškai konfigūruojami taip, kad palaikytų CGI, tačiau verta būtų pasitikrinti. Plačiau panagrinėsime Apache HTTP serverio konfigūravimą.

Apache serverio konfigūracija saugoma keliuose failuose t. y. httpd.conf, srm.conf, .htaccess, magic. Tiesa, šių failų pavadinimai kartais gali šiek tiek skirtis. Pavyzdžiui Linux Mandrake, kartu su httpd.conf failu papildomai naudojami ir commonhttpd.conf failas ar kitas. Čia bus pateikti tik httpd.conf failo konfigūravimo ypatumai, nes to pakanka, kad Apache serveris pradėtų vykdyti CGI skriptus.

Pirmiausiai patikrinkite ar httpd.conf faile teisingai nurodytas katalogas, kuriame suinstaliuota serverio programa:

ServerRoot          /usr/local/etc/httpd

Toliau patikritnkite ar teisingas CGI skriptų katalogas ir jo alias'as.

ScriptAlias         /cgi-bin/        /usr/local/etc/httpd/cgi-bin/

Pavyzdžiui, jei naršyklėje surenkama URL adresas www.adresas.lt/cgi-bin/welcome, tai vykdoma programa /usr/local/etc/httpd/cgi-bin/welcome.cgi

Saugumo sumetimais galima naudoti ir kelis CGI skriptų katalogus:

ScriptAlias         /cgi-bin/        /usr/local/etc/httpd/cgi-bin/
ScriptAlias         /my-cgi-bin/     /usr/local/etc/httpd/my-cgi-bin/


Jei konfigūraciniame faile httpd.conf bus patalpinta sekanti eilutė, tai Apache serveris paleidinės failus su tokiais plėtiniais .pl .sh .cgi . Tačiau tai nėra saugu!

AddType       application/x-httpd-cgi          .pl .sh .cgi

Taip pat būtina pasitikrinti skriptų katalogo teises, apibrėžtas direktyva <Directory /usr/local/etc/httpd/cgi-bin/> . Pasižiūrėkite ar teisingai nurodytos direktyvos Options Order ir Allow. Pavyzdys:

<Directory /usr/local/etc/httpd/cgi-bin >
    AllowOverride All
    Options ExecCGI
    Order allow,deny
    Allow from all
</Directory>

 


HTML formos sintaksė

 

 

Į turinį