CGI skriptai yra prak­tiš­kas spren­di­mas, pa­de­dan­tis sumažinti Apache ži­nia­tink­lio serverio apkrovą. Reikiamus Apache nu­sta­ty­mus galima greitai su­kon­fi­gū­ruo­ti, o leidimų suteikimo procesas katalogui ir CGI failams yra ne­su­dė­tin­gas.

Kokie rei­ka­la­vi­mai keliami CGI skriptams „Apache“ aplinkoje?

Norėdami naudoti bendrąją vartų sąsają (CGI) skriptams siųsti į savo „Apache“ ži­nia­tink­lio serverį, turite atlikti šiuos nu­sta­ty­mus:

  • debesų serveris arba virtualus privatus serveris (VPS)
  • Linux serverio dist­ri­bu­ci­ja, pvz., CentOS 8 arba Ubuntu 22.04
  • įdiegtas ir vei­kian­tis „Apache“ ži­nia­tink­lio serveris
Note

Stan­dar­ti­nė­je „Linux“ insta­lia­ci­jo­je „Apache“ jau yra įdiegta. Jei jūsų serveris buvo sukurtas pa­si­rin­kus mi­ni­ma­laus diegimo parinktį, prieš tęsdami turėsite įdiegti ir su­kon­fi­gū­ruo­ti „Apache“. Kaip įdiegti ir su­kon­fi­gū­ruo­ti „Apache“ „WordPress“ sistemai, su­ži­no­si­te mūsų straips­ny­je šia tema.

Kaip įjungti CGI skriptus „Apache“ kon­fi­gū­ra­ci­jo­se

Norint vykdyti CGI skriptus Linux serveryje su Apache, reikia atlikti du nu­sta­ty­mus:

  • „Apache“ reikia su­kon­fi­gū­ruo­ti taip, kad ži­nia­tink­lio serveris galėtų vykdyti CGI sce­na­ri­jus.
  • Skriptas turi būti įkeltas į tinkamą vietą ir jam turi būti suteikti tinkami leidimai.

„Apache“ nu­sta­ty­mai CGI sce­na­ri­jams „CentOS“ sistemoje

Ati­da­ry­ki­te „Apache“ kon­fi­gū­ra­ci­jos failą httpd.conf redaguoti:

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

Raskite skyrių, kuriame rašoma:

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

Options None eilutę pa­kei­s­ki­te šiomis dviem eilutėmis:

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

Pirmoji eilutė nurodo „Apache“ vykdyti CGI failus, įkeltus į /var/www/cgi-bin directory. Antroji eilutė nurodo „Apache“, kad bet kuris failas, kurio plėtinys yra .cgi, .pl (Perl sce­na­ri­jus) arba .py (Python sce­na­ri­jus), laikomas CGI sce­na­ri­ju­mi.

Šis skyrius dabar skamba taip:

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

Iš­sau­go­ki­te failą ir už­da­ry­ki­te jį. Dabar pa­lei­s­ki­te „Apache“ iš naujo, kad pa­kei­ti­mai įsi­ga­lio­tų:

sudo systemctl restart httpd
bash

„Apache“ nu­sta­ty­mai CGI sce­na­ri­jams „Ubuntu“ sistemoje

„Ubuntu“ sistemose, pa­vyz­džiui, „Ubuntu 22.04“, „Apache“ pagal nu­ma­ty­tuo­sius nu­sta­ty­mus yra su­kon­fi­gū­ruo­tas taip, kad CGI sce­na­ri­jai būtų vykdomi nu­ro­dy­ta­me kataloge /usr/lib/cgi-bin “. Jums nereikia keisti jokių „Apache“ nustatymų. Tačiau, norint vykdyti CGI sce­na­ri­jus, reikia įjungti „Apache“ CGI modulį. Tam reikės sukurti simbolinę nuorodą (symlink):

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

Tada pa­lei­s­ki­te „Apache“ iš naujo, kad pa­kei­ti­mai įsi­ga­lio­tų:

sudo systemctl restart apache2
bash

Kaip įkelti CGI scenarijų ir nustatyti teises

Norėdami pa­tik­rin­ti CGI skripto veikimą savo „Apache“ serveryje, re­ko­men­duo­ja­me pradėti nuo bandomojo skripto. Sukurkite failą test.cgi serveryje esančiame kataloge „cgi-bin“ ir ati­da­ry­ki­te bandomąjį skriptą redaguoti:

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

Į šį failą įtraukite šį turinį:

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

Iš­sau­go­ki­te failą ir už­da­ry­ki­te jį. Kitu žingsniu suteikite failuireikiamas vykdymo teises:

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

Nau­do­da­mas chmod 755 parametrų, sa­vi­nin­kas gali skaityti, redaguoti ir vykdyti scenarijų. Grupės nariai ir kiti var­to­to­jai turi skaitymo teises bei galimybę vykdyti scenarijų.

Per­žiū­rė­ki­te scenarijų nar­šyk­lė­je, naudodami domeno vardą arba IP adresą:

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

Jei nu­sta­ty­mas pavyko, ekrane pasirodys pra­ne­ši­mas „Hello world!“.

Kaip išspręsti CGI scenarijų klaidas

404 klaida: 404 klaida reiškia, kad URL nerastas. Pa­tik­rin­ki­te, ar sce­na­ri­jus įkeltas į tinkamą katalogą.

  • CentOS: Nu­ma­ty­ta­sis CGI katalogas yra var/www/cgi-bin/
  • Ubuntu: nu­ma­ty­ta­sis CGI katalogas yra /usr/lib/cgi-bin

Serverio 500 klaida: Kai naudojant CGI skriptus „Apache“ serveryje pasirodo 500 klaida, daž­niau­siai tai atsitinka dėl to, kad skriptui suteikti netinkami leidimai. Pa­tik­rin­ki­te, ar skriptui suteikti vykdymo leidimai (chmod 755).

Go to Main Menu