CGI-skripti so praktična rešitev za zmanj­ša­nje obre­me­ni­tve spletnega strežnika Apache. Potrebne na­sta­vi­tve Apacheja je mogoče hitro kon­fi­gu­ri­ra­ti, postopek do­de­lje­va­nja dovoljenj za imenik in CGI-datoteke pa je preprost.

Kakšne so zahteve za CGI-skripte v strežniku Apache?

Če želite uporabiti vmesnik CGI (Common Gateway Interface) za po­ši­lja­nje skriptov na svoj spletni strežnik Apache, po­tre­bu­je­te naslednjo kon­fi­gu­ra­ci­jo:

  • strežnik v oblaku ali virtualni zasebni strežnik (VPS)
  • di­s­tri­bu­ci­ja strežnika Linux, kot sta CentOS 8 ali Ubuntu 22.04
  • spletni strežnik Apache, ki je nameščen in deluje
Note

V stan­dar­dni na­me­sti­tvi sistema Linux je Apache že vgrajen. Če ste strežnik ustvarili z možnostjo minimalne na­me­sti­tve, boste morali Apache namestiti in nastaviti, preden na­da­lju­je­te. V našem povezanem članku si preberite, kako namestiti in nastaviti Apache za WordPress.

Kako omogočiti CGI-skripte v na­sta­vi­tvah Apacheja

Za zagon skriptov CGI na strežniku Linux z Apachejem je treba nastaviti dve stvari:

  • Apache je treba nastaviti tako, da lahko spletni strežnik izvaja CGI-skripte.
  • Skript je treba naložiti na pravo mesto in mu dodeliti prava do­vo­lje­nja.

Na­sta­vi­tve Apacheja za skripte CGI v sistemu CentOS

Odpri kon­fi­gu­ra­cij­sko datoteko Apache httpd.conf za urejanje:

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

Poiščite odstavek, ki se glasi:

#
# "/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

Za­me­njaj­te vrstico Options None z na­sle­dnji­ma dvema vrsticama:

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

Prva vrstica Apacheju naroča, naj izvaja CGI-datoteke, ki so naložene na /var/www/cgi-bin directory. Druga vrstica Apacheju naroča, naj vsako datoteko z končnico .cgi, .pl (Perl-skript) ali .py (Python-skript) obravnava kot CGI-skript.

Odstavek se zdaj glasi:

#
# "/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

Shranite datoteko in jo zaprite. Zdaj ponovno zaženite Apache, da se spremembe začnejo upo­ra­blja­ti:

sudo systemctl restart httpd
bash

Na­sta­vi­tve Apacheja za skripte CGI v sistemu Ubuntu

V sistemih Ubuntu, kot je Ubuntu 22.04, je Apache privzeto na­sta­vljen tako, da omogoča izvajanje skriptov CGI v določenem imeniku /usr/lib/cgi-bin. Na­sta­vi­tev Apacheja vam ni treba spre­mi­nja­ti. Vendar pa je treba pred iz­va­ja­njem skriptov CGI omogočiti modul Apache CGI. Za to morate ustvariti sim­bo­lič­no povezavo (symlink):

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

Nato ponovno zaženite Apache, da se spremembe začnejo upo­ra­blja­ti:

sudo systemctl restart apache2
bash

Kako naložiti skript CGI in nastaviti do­vo­lje­nja

Da bi preverili delovanje skripta CGI na vašem strežniku Apache, pri­po­ro­ča­mo, da začnete s pre­sku­snim skriptom. Ustvarite datoteko test.cgi v namenski mapi cgi-bin na strežniku in odprite preskusni skript za urejanje:

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

V to datoteko vnesite naslednjo vsebino:

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

Shranite datoteko in jo zaprite. V na­sle­dnjem koraku datoteki dodelitepotrebna izvedbena do­vo­lje­nja:

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

Z uporabo chmod 755 pa­ra­me­trov lahko skript bere, ureja in izvaja lastnik. Skupina in drugi upo­rab­ni­ki imajo pravico do branja ter možnost izvajanja skripta.

Skript si oglejte v br­skal­ni­ku, in sicer z vnosom do­men­ske­ga imena ali IP-naslova:

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

Če je na­me­sti­tev uspela, se bo prikazalo sporočilo »Hello world!«.

Kako odpraviti napake v skriptih CGI

Napaka 404: Napaka 404 pomeni, da URL-ja ni mogoče najti. Preverite, ali je bil skript dodan v pravi imenik.

  • CentOS: Privzeti imenik CGI je var/www/cgi-bin/
  • Ubuntu: Privzeti imenik CGI je /usr/lib/cgi-bin

Napaka strežnika 500: Kadar se pri CGI-skriptih v strežniku Apache pojavi napaka 500, je to ponavadi posledica tega, da skript nima ustreznih dovoljenj. Preverite, ali ima skript do­vo­lje­nja za izvajanje (chmod 755).

Go to Main Menu