CGI-skriptid on prak­ti­line lahendus Apache vee­bi­ser­veri koormuse vä­hen­da­miseks. Vajalikud Apache’i sea­dis­tused saab kiiresti paika panna ning ka­ta­loo­gile ja CGI-failidele õiguste andmine on lihtne.

Millised on Apache’i CGI-skriptide nõuded?

Et kasutada CGI- liidest (Common Gateway Interface) skriptide edas­ta­miseks Apache vee­bi­ser­ve­rile, on vaja järgmist sea­dis­tust:

  • pil­ve­ser­ver või vir­tuaalne eraserver (VPS)
  • Linuxi ser­ve­ri­dist­ri­but­sioon, näiteks CentOS 8 või Ubuntu 22.04
  • Apache vee­bi­ser­ver, mis on ins­tal­li­tud ja töötab
Note

Tavalises Linuxi pai­gal­duses on Apache juba eel­ins­tal­li­tud. Kui teie server on loodud mi­ni­maalse pai­gal­dus­va­rian­diga, peate enne jätkamist Apache’i pai­gal­dama ja sea­dis­tama. Lugege meie vastavast artiklist, kuidas Apache’i Word­Pressi jaoks pai­gal­dada ja sea­dis­tada.

Kuidas lubada CGI-skripte Apache’i sea­dis­tus­tes

Apachega Linuxi serveris CGI-skriptide käi­vi­ta­miseks tuleb sea­dis­tada kaks asja:

  • Apache tuleb sea­dis­tada nii, et vee­bi­ser­ver saaks käivitada CGI-skripte.
  • Skript tuleb üles laadida õigesse asukohta ja sellele tuleb anda õiged õigused.

Apache’i seaded CGI-skriptide jaoks CentOS-is

Ava Apache’i kon­fi­gu­rat­sioo­ni­fail httpd.conf re­di­gee­ri­miseks:

sudo nano /etc/httpd/conf/httpd.conf
bash

Leia lõik, kus on kirjas:

#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options None
    Require all granted
</Directory>
text

Asenda rida Options None järgmise kahe reaga:

Options +ExecCGI
AddHandler cgi-script .cgi .pl .py
text

Esimene rida käsib Apache’il käivitada ser­ve­risse ü /var/www/cgi-bin directory laaditud CGI-faile. Teine rida käsib Apache’il käsitleda kõiki faile, mille laiendiks on .cgi, .pl (Perl-skript) või .py (Python-skript), CGI-skrip­ti­dena.

See lõik on nüüd järgmine:

#
# "/var/www/cgi-bin" should be changed to whatever your ScriptAliased
# CGI directory exists, if you have that configured.
#
<Directory "/var/www/cgi-bin">
    AllowOverride None
    Options +ExecCGI
    AddHandler cgi-script .cgi .pl
    Require all granted
</Directory>
text

Salvesta fail ja sulge see. Käivita nüüd Apache uuesti, et muu­da­tu­sed jõus­tuk­sid:

sudo systemctl restart httpd
bash

Apache’i seaded CGI-skriptide jaoks Ubuntu süsteemis

Ubuntu-süs­teemi­des, nagu Ubuntu 22.04, on Apache vaikimisi sea­dis­ta­tud nii, et see lubab CGI-skriptide käi­vi­ta­mist määratud ka­ta­loo­gis /usr/lib/cgi-bin. Apache’i seadeid pole vaja muuta. Enne CGI-skriptide käi­vi­ta­mist tuleb aga Apache’i CGI-moodul ak­ti­vee­rida. Selleks tuleb luua süm­bo­li­line link (symlink):

sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/
bash

Seejärel taas­käi­vita Apache, et muu­da­tu­sed jõus­tuk­sid:

sudo systemctl restart apache2
bash

Kuidas laadida üles CGI-skripti ja määrata õigused

CGI-skripti toimimise kont­rol­li­miseks Apache-serveris soovitame alustada testsk­rip­tiga. Looge fail test.cgi serveri selleks et­te­näh­tud cgi-bin-kataloogi ja avage testsk­ript re­di­gee­ri­miseks:

  • CentOS: sudo nano /var/www/cgi-bin/test.cgi
  • Ubuntu: sudo nano /usr/lib/cgi-bin/test.cgi

Lisa sellesse faili järgmine sisu:

#!/usr/bin/perl
print "Content-type: text/html\n\n"; 
print "<h1>Hello world</h1>";
text

Salvesta fail ja sulge see. Järgmises etapis anna faililevajalikud täit­mis­õi­gu­sed:

  • CentOS: sudo chmod 755 /var/www/cgi-bin/test.cgi
  • Ubuntu: sudo chmod 755 /usr/lib/cgi-bin/test.cgi
Note

chmod 755 pa­ra­meetri abil saab skripti omanik lugeda, muuta ja käivitada. Rühmal ja teistel ka­su­ta­ja­tel on skriptile lu­ge­mis­õi­gus ning võimalus seda käivitada.

Vaata skripti vee­bib­rau­se­ris, kasutades selleks kas do­mee­ninime või IP-aadressi:

http://example.com/cgi-bin/test.cgi
http://192.168.0.1/cgi-bin/test.cgi
text

Kui sea­dis­ta­mine õnnestus, kuvatakse sõnum „Hello world!”.

Kuidas lahendada CGI-skriptide vigu

404-viga: 404-viga tähendab, et URL-i ei leitud. Kontrolli, kas skript on lisatud õigesse kataloogi.

  • CentOS: CGI vaikimisi kataloog on var/www/cgi-bin/
  • Ubuntu: vaikimisi CGI-kataloog on /usr/lib/cgi-bin

Veateade 500: Kui Apache’i CGI-skriptide ka­su­ta­misel ilmub veateade 500, on selle põhjuseks ta­va­li­selt skripti puu­du­li­kud õigused. Kont­rol­lige, kas skriptil on täit­mis­õi­gu­sed (chmod 755).

Go to Main Menu