Omogućavanje rada cgi skripti pod različitim web serverima
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/Pa kada u browser unesete npr. http://localhost/test/test.cgi skripta koja se nalazi u
<Directory /home/toxie/cgi-bin/>
AllowOverride None
Options ExecCGI –MultiViews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
/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.
Дејства на документ