Log in


Forgot your password?
prijatelji LUGoNSa
gnu.gif
linuxzasve.jpg
hulk.jpg
zextras_logo.png
 
You are here: Home / Uputstva / Opšte / Omogućavanje rada cgi skripti pod različitim web serverima

Omogućavanje rada cgi skripti pod različitim web serverima

by Goran Mekić last modified Oct 11, 2007 11:33 AM
Veliki broj ljudi koristi cgi skripte za neku svoju prezentaciju. Evo kako da i Vi uradite slično

Uvod

CGI je skraćenica za Common Gateway Interface. To je jedan od načina da imate dinamičke stranice. Naime, CGI su skripte/programi koji, kada se pokrenu, daju izlaz HTML stranice, te je moguće pisati sajtove (da se tako neformalno izrazim) u nekom programskom jeziku. FastCGI je slična stvar. Tačnije, on omogućava da CGI skripta bude pokrenuta pod drugim nalogom a ne pod onim pod kojim trči WEB server, a to je uvek root, pa je samim tim sigurniji način povezivanja CGI skripti i WEB servera. Naravno, razlike postoje i u implementaciji, pa nije moguće jednostavno CGI skriptu pokrenuti kao FastCGI.


Apache


Pre početka

Prva stvar koja Vam je potrebna je da imate instaliran apache paket. O tome ovde neće biti reči pošto se procedura razlikuje od distribucije linux-a do distribucije.


Konfiguracija

Da bi apache mogao pravilno da funkcioniše sa cgi skriptama dovoljno je osnovnoj konfiguraciji dodati sledeće :

u httpd.conf :
Posle #BindAddress * ako nema treba dodati sledeće module da se učitaju.

LoadModule vhost_alias_module libexec/apache/mod_vhost_alias.so
LoadModule dir_module libexec/apache/mod_dir.so
LoadModule cgi_module libexec/apache/mod_cgi.so
LoadModule alias_module libexec/apache/mod_alias.so

ClearModuleList
AddModule mod_vhost_alias.c
AddModule mod_dir.c
AddModule mod_cgi.c
AddModule mod_alias.c

Ako ovo već postoji onda preskočite ovaj deo.
<Directory />
Options FollowSymLinks ExecCGI
AllowOverride None
</Directory>

<IfModule mod_dir.c>
DirectoryIndex index.html index.htm index.shtml index.cgi index.php
</IfModule>

ispod ScriptAlias /cgi-bin/ "/var/www/cgi-bin/" direktive treba da stoji

<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
AddHandler cgi-script .cgi .pl
AddType text/html .cgi

U slučaju da ne želite da cgi skripte držite u DocumentRoot folderu možete da uradite sledeće.U httpd.conf

ScriptAlias /test/ /home/toxie/cgi-bin/
<Directory /home/toxie/cgi-bin/>
AllowOverride None
Options ExecCGI –MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
Pa kada u browser unesete npr. http://localhost/test/test.cgi skripta koja se nalazi u

/home/toxie/cgi-bin/ će se izvršiti.

Naravno na kraju ni u kom slučaju ne sme izostati podešavanje prava izvršavanja .cgi skripte.To se radi sa

chmod a+x ime_cgi_skripte.cgi

Sve što je napisano sa podebljanim slovima znači da to još treba dodati.



Lighttpd



Pre početka

Prva stvar koja Vam je potrebna je da imate instaliran lighttpd paket. O tome ovde neće biti reči pošto se procedura razlikuje od distribucije linux-a do distribucije. Druga stvar koju morate znati je da postoji dve vrste cgi protokola. Prvi je tradicionalni cgi, a drugi "fast cgi" ili brzi cgi. Ovde ćemo objasniti kako postaviti perl preko cgi i php preko fast cgi.


Konfiguracija

Pretpostavka je da imate konfigurisan lighttpd za osnovne potrebe. U većini slučajeva je konfiguracija koja stiže uz server dovoljna za obične (statičke) stranice. Evo kako da dodate podršku za cgi i fcgi:

lighttpd.conf:

include "mod_cgi.conf"
include "mod_fastcgi.conf"


mod_cgi.conf:

server.modules += ("mod_cgi")

# Za ovo Vam je potreban mod_alias
alias.url = (
     "/cgi-bin/"            =>      var.basedir + "/cgi-bin/"
)

#
# Da bi gornji alias funkcionisao
# morate učitati mod_alias.
#

$HTTP["url"] =~ "^/cgi-bin/" {
    # Zabrani listanje direktorijuma
    dir-listing.activate = "disable"
    # Dodeljivanje interpretera cgi skriptama
    cgi.assign = (
                ".pl"   =>      "/usr/bin/perl",
                ".cgi"  =>      "/usr/bin/perl"
        )
}


mod_fastcgi:

server.modules += ("mod_fastcgi")
fastcgi.server = ( ".php" =>
                            ( "localhost" =>
                                    (
                                            "socket" =>              "/var/run/lighttpd/lighttpd-fastcgi-php-" + PID + ".socket",
                                            "bin-path"  =>              "/usr/bin/php-cgi"
                                    )
                            )
                    )

Sadržaj mod_cgi i mod_fastcgi fajlova je mogao biti upisan u lighttpd.conf, ali je meni ovako čitljivije. Na Vama je da odlučite da li ćete konfiguraciju držati u logički odvojenim celinama ili u jednom fajlu.

Related content
Lighttpd HOWTO

Document Actions