CGI- skriptit ovat kätevä tapa keventää Apache-verk­ko­pal­ve­li­men kuor­mi­tus­ta. Tar­vit­ta­vat Apache-asetukset voidaan määrittää nopeasti, ja ha­ke­mis­ton sekä CGI-tie­dos­to­jen käyt­tö­oi­keuk­sien myön­tä­mi­nen on helppoa.

Mitkä ovat CGI-skriptien vaa­ti­muk­set Apache-pal­ve­li­mel­la?

Jotta voit käyttää Common Gateway Interface (CGI) -ra­ja­pin­taa skriptien lä­het­tä­mi­seen Apache-verk­ko­pal­ve­li­mel­le­si, tarvitset seuraavan ko­koon­pa­non:

  • pil­vi­pal­ve­lin tai vir­tu­aa­li­nen yk­si­tyis­pal­ve­lin (VPS)
  • Linux-pal­ve­lin­ja­ke­lu, kuten CentOS 8 tai Ubuntu 22.04
  • asennettu ja käynnissä oleva Apache-verk­ko­pal­ve­lin
Huomio

Apache on valmiiksi asennettu ta­val­li­ses­sa Linux-asen­nuk­ses­sa. Jos pal­ve­li­me­si on luotu ”Minimal”-asen­nus­vaih­toeh­dol­la, sinun on asen­net­ta­va ja mää­ri­tet­tä­vä Apache ennen kuin jatkat. Lue ohjeet Apachen asen­ta­mi­ses­ta ja mää­rit­tä­mi­ses­tä WordPres­siä varten aiheeseen liit­ty­väs­tä ar­tik­ke­lis­tam­me.

Kuinka ottaa CGI-skriptit käyttöön Apache-ase­tuk­sis­sa

Jotta CGI-skriptejä voidaan suorittaa Linux-pal­ve­li­mel­la, jossa on Apache, on mää­ri­tet­tä­vä kaksi asiaa:

  • Apache on mää­ri­tet­tä­vä siten, että verk­ko­pal­ve­lin voi suorittaa CGI-skriptejä.
  • Skripti on ladattava oikeaan si­jain­tiin ja sille on annettava oikeat käyt­tö­oi­keu­det.

Apache-asetukset CGI-sk­rip­teil­le CentOS-käyt­tö­jär­jes­tel­mäs­sä

Avaa Apache-mää­ri­tys­tie­dos­to httpd.conf muok­kaus­ta varten:

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

Etsi kohta, jossa lukee:

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

Korvaa rivi Options None seu­raa­vil­la kahdella rivillä:

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

En­sim­mäi­nen rivi ohjeistaa Apachea suo­rit­ta­maan CGI-tiedostot, jotka on ladattu palvel /var/www/cgi-bin directoryelle. Toinen rivi ohjeistaa Apachea pitämään kaikkia tie­dos­to­ja, joiden tie­dos­to­tun­nis­te on .cgi, .pl (Perl-skripti) tai .py (Python-skripti), CGI-sk­rip­tei­nä.

Kohdan teksti kuuluu nyt seu­raa­vas­ti:

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

Tallenna tiedosto ja sulje se. Käynnistä nyt Apache uudelleen, jotta muutokset tulevat voimaan:

sudo systemctl restart httpd
bash

Apachen asetukset CGI-sk­rip­teil­le Ubuntussa

Ubuntu-jär­jes­tel­mis­sä, kuten Ubuntu 22.04:ssä, Apache on ole­tusar­voi­ses­ti mää­ri­tet­ty sallimaan CGI-skriptien suo­rit­ta­mi­nen mää­ri­te­tys­sä hakemist /usr/lib/cgi-bin. Sinun ei tarvitse muuttaa Apache-asetuksia. Apache-CGI-moduuli on kuitenkin otettava käyttöön, ennen kuin CGI-skriptejä voidaan suorittaa. Tätä varten sinun on luotava symlinkki (sym­bo­li­nen linkki):

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

Käynnistä sitten Apache uudelleen, jotta muutokset tulevat voimaan:

sudo systemctl restart apache2
bash

CGI-skriptin la­taa­mi­nen ja käyt­tö­oi­keuk­sien mää­rit­tä­mi­nen

Var­mis­taak­se­si CGI-skriptin toi­mi­vuu­den Apache-pal­ve­li­mel­la­si, suo­sit­te­lem­me aloit­ta­maan tes­tisk­rip­til­lä. Luo tiedosto test.cgi pal­ve­li­men cgi-bin-kansioon ja avaa tes­tisk­rip­ti muo­kat­ta­vak­si:

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

Lisää seuraava sisältö tähän tie­dos­toon:

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

Tallenna tiedosto ja sulje se. Anna tie­dos­tol­le seu­raa­vas­sa vaiheessatar­vit­ta­vat suo­ri­tusoi­keu­det:

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

Näiden chmod 755 pa­ra­met­rin avulla omistaja voi lukea, muokata ja suorittaa skriptin. Ryhmällä ja muilla käyt­tä­jil­lä on lu­kuoi­keu­det sekä mah­dol­li­suus suorittaa skripti.

Voit tar­kas­tel­la skriptiä se­lai­mes­sa joko verk­ko­tun­nuk­sen tai IP-osoitteen avulla:

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

Jos asennus onnistui, ruudulle ilmestyy viesti ”Hello world!”.

CGI-skriptien virheiden vian­mää­ri­tys

404-virhe: 404-virhe tar­koit­taa, että URL-osoitetta ei löydy. Tarkista, että skripti on lisätty oikeaan kansioon.

  • CentOS: Ole­tusar­voi­nen CGI-hakemisto on var/www/cgi-bin/
  • Ubuntu: Ole­tusar­voi­nen CGI-hakemisto on /usr/lib/cgi-bin

Pal­ve­li­men 500-virhe: Kun virhe 500 ilmenee Apachen CGI-sk­rip­teis­sä, se johtuu yleensä siitä, että sk­rip­til­lä ei ole oikeita käyt­tö­oi­keuk­sia. Tarkista, että sk­rip­til­lä on suo­ri­tusoi­keu­det (chmod 755).

Siirry pää­va­lik­koon