CGI- scripts zijn een prak­ti­sche oplossing om de belasting van de Apache-webserver te ver­lich­ten. De benodigde Apache-con­fi­gu­ra­ties kunnen snel worden ingesteld en het proces voor het verlenen van rechten voor de map en de CGI-bestanden is eenvoudig.

Wat zijn de vereisten voor CGI-scripts op Apache?

Om de Common Gateway Interface (CGI) te kunnen gebruiken om scripts naar uw Apache-webserver te verzenden, hebt u de volgende con­fi­gu­ra­tie nodig:

  • een cloud­ser­ver of virtuele pri­vé­ser­ver (VPS)
  • een Linux-ser­ver­dis­tri­bu­tie zoals CentOS 8 of Ubuntu 22.04
  • een Apache-webserver die is ge­ïn­stal­leerd en actief is
Opmerking

Bij een standaard Linux-in­stal­la­tie is Apache al ge­ïn­stal­leerd. Als uw server is aan­ge­maakt met de optie Minimale in­stal­la­tie, moet u Apache in­stal­le­ren en con­fi­gu­re­ren voordat u ver­der­gaat. Lees in ons ge­re­la­teer­de artikel hoe u Apache voor WordPress in­stal­leert en con­fi­gu­reert.

Hoe CGI-scripts in de Apache-con­fi­gu­ra­ties in­scha­ke­len

Er moeten twee dingen worden ingesteld om CGI-scripts op een Linux-server met Apache te kunnen uitvoeren:

  • Apache moet worden ge­con­fi­gu­reerd zodat de webserver CGI-scripts kan uitvoeren.
  • Het script moet naar de juiste locatie worden geüpload en de juiste mach­ti­gin­gen krijgen.

Apache-in­stel­lin­gen voor CGI-scripts op CentOS

Open het Apache-con­fi­gu­ra­tie­be­stand httpd.conf om het te bewerken:

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

Zoek het gedeelte met de tekst:

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

Vervang regel Options None door de volgende twee regels:

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

De eerste regel vertelt Apache om CGI-bestanden uit te voeren die zijn geüpload naar de /var/www/cgi-bin directory. De tweede regel vertelt Apache dat elk bestand dat eindigt op .cgi, .pl (Perl-script) of .py (Python-script) wordt beschouwd als een CGI-script.

De sectie luidt nu als volgt:

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

Sla het bestand op en sluit het af. Start Apache nu opnieuw op zodat de wij­zi­gin­gen van kracht worden:

sudo systemctl restart httpd
bash

Apache-in­stel­lin­gen voor CGI-scripts op Ubuntu

Op Ubuntu-systemen zoals Ubuntu 22.04 is Apache standaard ge­con­fi­gu­reerd om de uit­voe­ring van CGI-scripts in de aan­ge­we­zen /usr/lib/cgi-bin toe te staan. U hoeft geen Apache-con­fi­gu­ra­ties te wijzigen. De Apache CGI-module moet echter worden in­ge­scha­keld voordat CGI-scripts kunnen worden uit­ge­voerd. Hiervoor moet u een symlink (sym­bo­li­sche link) maken:

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

Start Apache ver­vol­gens opnieuw op zodat de wij­zi­gin­gen van kracht worden:

sudo systemctl restart apache2
bash

Hoe u een CGI-script uploadt en mach­ti­gin­gen instelt

Om de func­ti­o­na­li­teit van het CGI-script op uw Apache-server te con­tro­le­ren, raden we u aan te beginnen met een testscript. Maak het bestand test.cgi aan in de daarvoor bestemde cgi-bin van de server en open het testscript om het te bewerken:

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

Voeg de volgende inhoud toe aan dit bestand:

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

Sla het bestand op en sluit het af. Geef het bestand in de volgende stap denodige uit­voer­rech­ten:

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

Met behulp van de chmod 755 pa­ra­me­ters kan het script door de eigenaar worden gelezen, bewerkt en uit­ge­voerd. Voor de groep en andere ge­brui­kers is er lees­rech­ten en de mo­ge­lijk­heid om het script uit te voeren.

Bekijk het script in een browser, met behulp van de do­mein­naam of het IP-adres:

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

Als de in­stal­la­tie succesvol was, ver­schijnt het bericht ‘Hallo wereld!’.

Problemen met CGI-script­fou­ten oplossen

404-fout: Een 404-fout betekent dat de URL niet kan worden gevonden. Con­tro­leer of het script aan de juiste map is toe­ge­voegd.

  • CentOS: De standaard CGI-map is var/www/cgi-bin/
  • Ubuntu: De standaard CGI-map is /usr/lib/cgi-bin

Server 500-fout: Wanneer fout 500 ver­schijnt in verband met CGI-scripts op Apache, is dit meestal te wijten aan het feit dat het script niet over de juiste mach­ti­gin­gen beschikt. Con­tro­leer of het script uit­voe­rings­rech­ten (chmod 755) heeft.

Ga naar hoofdmenu