CGI- scripts er en praktisk løsning til at aflaste Apache-web­ser­ve­ren. De nød­ven­di­ge Apache-indstil­lin­ger kan hurtigt kon­fi­gu­re­res, og det er nemt at tildele til­la­del­ser til mappen og CGI-filerne.

Hvilke krav stilles der til CGI-scripts på Apache?

For at kunne bruge Common Gateway Interface (CGI) til at sende scripts til din Apache-webserver skal du have følgende kon­fi­gu­ra­tion:

  • en cloud-server eller en virtuel privat server (VPS)
  • en Linux-ser­ver­di­stri­bu­tion såsom CentOS 8 eller Ubuntu 22.04
  • en Apache-webserver, der er in­stal­le­ret og kører
Note

I en stan­dar­din­stal­la­tion af Linux er Apache allerede in­stal­le­ret. Hvis din server er oprettet med in­stal­la­tions­indstil­lin­gen »Minimal«, skal du in­stal­le­re og kon­fi­gu­re­re Apache, før du fort­sæt­ter. Læs mere om, hvordan du in­stal­le­rer og kon­fi­gu­re­rer Apache til WordPress, i vores artikel om emnet.

Sådan aktiveres CGI-scripts i Apache-kon­fi­gu­ra­tio­ner­ne

Der er to ting, der skal kon­fi­gu­re­res for at kunne køre CGI-scripts på en Linux-server med Apache:

  • Apache skal kon­fi­gu­re­res, så web­ser­ve­ren kan køre CGI-scripts.
  • Scriptet skal uploades til den korrekte placering og tildeles de korrekte ret­tig­he­der.

Apache-indstil­lin­ger for CGI-scripts på CentOS

Åbn Apache-kon­fi­gu­ra­tions­fi­len httpd.conf for at redigere den:

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

Find det afsnit, hvor der står:

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

Erstat linje Options None med følgende to linjer:

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

Den første linje in­stru­e­rer Apache om at køre CGI-filer, der uploades til port /var/www/cgi-bin directory. Den anden linje angiver, at alle filer, der ender på .cgi, .pl (Perl-script) eller .py (Python-script), betragtes som CGI-scripts.

Afsnittet lyder nu således:

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

Gem filen og luk den. Genstart nu Apache, så æn­drin­ger­ne træder i kraft:

sudo systemctl restart httpd
bash

Apache-indstil­lin­ger for CGI-scripts på Ubuntu

På Ubuntu-systemer som f.eks. Ubuntu 22.04 er Apache som standard kon­fi­gu­re­ret til at tillade kørsel af CGI-scripts i det angivne /usr/lib/cgi-bin. Du behøver ikke at ændre nogen Apache-indstil­lin­ger. Apache CGI-modulet skal dog aktiveres, før CGI-scripts kan køres. For at gøre dette skal du oprette et symlink (et symbolsk link):

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

Genstart derefter Apache, så æn­drin­ger­ne træder i kraft:

sudo systemctl restart apache2
bash

Sådan uploades et CGI-script og indstil­les ret­tig­he­der

For at kon­trol­le­re, at CGI-scripts fungerer korrekt på din Apache-server, anbefaler vi, at du starter med et testscript. Opret filen test.cgi i serverens cgi-bin-mappe, og åbn testscrip­tet for at redigere det:

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

Indsæt følgende indhold i denne fil:

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

Gem filen, og luk den. I det næste trin skal du give filen denød­ven­di­ge kør­sels­ret­tig­he­der:

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

Ved hjælp af de chmod 755 parametre kan ejeren læse, redigere og køre scriptet. Gruppen og andre brugere har læ­se­ad­gang og mulighed for at køre scriptet.

Se scriptet i en browser ved at bruge enten do­mæ­ne­nav­net eller IP-adressen:

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

Hvis op­sæt­nin­gen lykkedes, vises med­del­el­sen »Hello world!«.

Sådan løser du fejl i CGI-scripts

404-fejl: En 404-fejl betyder, at URL’en ikke kan findes. Kon­trol­ler, at scriptet er blevet placeret i det rigtige bibliotek.

  • CentOS: Stan­dard­map­pen for CGI er var/www/cgi-bin/
  • Ubuntu: Stan­dard­map­pen for CGI er /usr/lib/cgi-bin

Server 500-fejl: Når fejl 500 opstår i for­bin­del­se med CGI-scripts på Apache, skyldes det som regel, at scriptet ikke har de rette ret­tig­he­der. Kon­trol­ler, at scriptet har ret­tig­he­der til at køre (chmod 755).

Gå til ho­ved­me­nu­en