CGI skripti ir praktisks ri­si­nā­jums, lai sa­ma­zi­nā­tu Apache tīmekļa servera slodzi. Ne­pie­cie­ša­mās Apache kon­fi­gu­rā­ci­jas var ātri iestatīt, un atļauju pie­šķir­ša­nas process di­rek­to­ri­jam un CGI failiem ir vienkāršs.

Kādas ir prasības CGI skriptiem Apache vidē?

Lai izmantotu kopējo vārtejas in­ter­fei­su (CGI) skriptu no­sū­tī­ša­nai uz Apache tīmekļa serveri, ir ne­pie­cie­ša­ma šāda kon­fi­gu­rā­ci­ja:

  • mā­koņ­pa­kal­po­ju­mu serveris vai vir­tuā­lais privātais serveris (VPS)
  • Linux servera dis­tri­bū­ci­ja, piemēram, CentOS 8 vai Ubuntu 22.04
  • uzstādīts un darbojošs Apache tīmekļa serveris
Note

Standarta Linux in­sta­lā­ci­jā Apache jau ir iepriekš instalēts. Ja jūsu serveris tika izveidots, iz­man­to­jot in­sta­lā­ci­jas opciju „Minimal“, pirms turpināt, jums būs jāinstalē un jā­kon­fi­gu­rē Apache. Uzziniet, kā instalēt un kon­fi­gu­rēt Apache WordPress va­ja­dzī­bām, lasot mūsu saistīto rakstu.

Kā iespējot CGI skriptus Apache kon­fi­gu­rā­ci­jās

Lai Linux serverī ar Apache varētu palaist CGI skriptus, ir jāveic divas darbības:

  • Apache ir jā­kon­fi­gu­rē tā, lai tīmekļa serveris varētu izpildīt CGI skriptus.
  • Skripts ir jā­aug­šu­pie­lā­dē pareizajā vietā un tam ir jāpiešķir pareizās atļaujas.

Apache ie­sta­tī­ju­mi CGI skriptiem CentOS vidē

Atveriet Apache kon­fi­gu­rā­ci­jas failu httpd.conf, lai to rediģētu:

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

Atrodiet sadaļu, kurā teikts:

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

Aiz­stā­jiet Options None rindu ar šīm divām rindām:

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

Pirmajā rindā Apache tiek norādīts izpildīt CGI failus, kas aug­šu­pie­lā­dē­ti uz /var/www/cgi-bin directory. Otrajā rindā Apache tiek norādīts, ka jebkurš fails ar pa­pla­ši­nā­ju­mu .cgi, .pl (Perl skripts) vai .py (Python skripts) tiek uzskatīts par CGI skriptu.

Tagad šajā sadaļā ir rakstīts:

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

Sa­gla­bā­jiet failu un aizveriet to. Tagad pār­star­tē­jiet Apache, lai izmaiņas stātos spēkā:

sudo systemctl restart httpd
bash

Apache ie­sta­tī­ju­mi CGI skriptiem Ubuntu vidē

Ubuntu sistēmās, piemēram, Ubuntu 22.04, Apache pēc no­klu­sē­ju­ma ir kon­fi­gu­rēts tā, lai atļautu CGI skriptu izpildi no­rā­dī­ta­jā /usr/lib/cgi-bin di­rek­to­ri­jā. Jums nav jāmaina nekādas Apache kon­fi­gu­rā­ci­jas. Tomēr, lai varētu izpildīt CGI skriptus, ir jā­ak­ti­vi­zē Apache CGI modulis. Lai to izdarītu, jums būs jāizveido sim­bo­lis­ka saite (symlink):

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

Tad pār­star­tē­jiet Apache, lai izmaiņas stātos spēkā:

sudo systemctl restart apache2
bash

Kā aug­šu­pie­lā­dēt CGI skriptu un iestatīt piekļuves tiesības

Lai pār­bau­dī­tu CGI skripta darbību jūsu Apache serverī, iesakām sākt ar testa skriptu. Iz­vei­do­jiet failu test.cgi servera no­rā­dī­ta­jā cgi-bin mapē un atveriet testa skriptu re­di­ģē­ša­nai:

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

Pie­vie­no­jiet šim failam šādu saturu:

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

Sa­gla­bā­jiet failu un aizveriet to. Nākamajā solī pie­šķi­riet failamne­pie­cie­ša­mās izpildes tiesības:

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

Iz­man­to­jot chmod 755 pa­ra­met­rus, skriptu var lasīt, rediģēt un izpildīt tā īpašnieks. Grupai un pārējiem lie­to­tā­jiem ir lasīšanas tiesības un iespēja izpildīt skriptu.

Skatīt skriptu pār­lūkprog­ram­mā, iz­man­to­jot domēna vārdu vai IP adresi:

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

Ja uz­stā­dī­ša­na ir iz­de­vu­sies, pa­rā­dī­sies ziņojums „Hello world!”.

Kā novērst CGI skriptu kļūdas

404 kļūda: 404 kļūda nozīmē, ka URL nav atrodams. Pār­bau­diet, vai skripts ir pie­vie­nots pareizajā di­rek­to­ri­jā.

  • CentOS: No­klu­sē­ju­ma CGI katalogs ir var/www/cgi-bin/
  • Ubuntu: No­klu­sē­ju­ma CGI katalogs ir /usr/lib/cgi-bin

Servera 500 kļūda: ja Apache vidē saistībā ar CGI skriptiem parādās 500. kļūda, tas parasti notiek tādēļ, ka skriptam nav pareizās atļaujas. Pār­bau­diet, vai skriptam ir izpildes atļaujas (chmod 755).

Go to Main Menu