Kuidas lubada CGI-skripte Apache'is
CGI-skriptid on praktiline lahendus Apache veebiserveri koormuse vähendamiseks. Vajalikud Apache’i seadistused saab kiiresti paika panna ning kataloogile ja CGI-failidele õiguste andmine on lihtne.
Millised on Apache’i CGI-skriptide nõuded?
Et kasutada CGI- liidest (Common Gateway Interface) skriptide edastamiseks Apache veebiserverile, on vaja järgmist seadistust:
- pilveserver või virtuaalne eraserver (VPS)
- Linuxi serveridistributsioon, näiteks CentOS 8 või Ubuntu 22.04
- Apache veebiserver, mis on installitud ja töötab
Tavalises Linuxi paigalduses on Apache juba eelinstallitud. Kui teie server on loodud minimaalse paigaldusvariandiga, peate enne jätkamist Apache’i paigaldama ja seadistama. Lugege meie vastavast artiklist, kuidas Apache’i WordPressi jaoks paigaldada ja seadistada.
Kuidas lubada CGI-skripte Apache’i seadistustes
Apachega Linuxi serveris CGI-skriptide käivitamiseks tuleb seadistada kaks asja:
- Apache tuleb seadistada nii, et veebiserver 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 konfiguratsioonifail httpd.conf redigeerimiseks:
sudo nano /etc/httpd/conf/httpd.confbashLeia 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>textAsenda rida Options None järgmise kahe reaga:
Options +ExecCGI
AddHandler cgi-script .cgi .pl .pytextEsimene rida käsib Apache’il käivitada serverisse ü /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-skriptidena.
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>textSalvesta fail ja sulge see. Käivita nüüd Apache uuesti, et muudatused jõustuksid:
sudo systemctl restart httpdbashApache’i seaded CGI-skriptide jaoks Ubuntu süsteemis
Ubuntu-süsteemides, nagu Ubuntu 22.04, on Apache vaikimisi seadistatud nii, et see lubab CGI-skriptide käivitamist määratud kataloogis /usr/lib/cgi-bin. Apache’i seadeid pole vaja muuta. Enne CGI-skriptide käivitamist tuleb aga Apache’i CGI-moodul aktiveerida. Selleks tuleb luua sümboliline link (symlink):
sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/bashSeejärel taaskäivita Apache, et muudatused jõustuksid:
sudo systemctl restart apache2bashKuidas laadida üles CGI-skripti ja määrata õigused
CGI-skripti toimimise kontrollimiseks Apache-serveris soovitame alustada testskriptiga. Looge fail test.cgi serveri selleks ettenähtud cgi-bin-kataloogi ja avage testskript redigeerimiseks:
- 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>";textSalvesta fail ja sulge see. Järgmises etapis anna faililevajalikud täitmisõigused:
- CentOS:
sudo chmod 755 /var/www/cgi-bin/test.cgi - Ubuntu:
sudo chmod 755 /usr/lib/cgi-bin/test.cgi
chmod 755 parameetri abil saab skripti omanik lugeda, muuta ja käivitada. Rühmal ja teistel kasutajatel on skriptile lugemisõigus ning võimalus seda käivitada.
Vaata skripti veebibrauseris, kasutades selleks kas domeeninime või IP-aadressi:
http://example.com/cgi-bin/test.cgi
http://192.168.0.1/cgi-bin/test.cgitextKui seadistamine õ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 kasutamisel ilmub veateade 500, on selle põhjuseks tavaliselt skripti puudulikud õigused. Kontrollige, kas skriptil on täitmisõigused (chmod 755).