CGI-skript är en praktisk lösning för att minska be­last­ning­en på Apache-webb­ser­vern. De nöd­vän­di­ga Apache-kon­fi­gu­ra­tio­ner­na kan ställas in snabbt och processen för att bevilja be­hö­rig­he­ter för katalogen och CGI-filerna är enkel.

Vilka är kraven för CGI-skript på Apache?

För att kunna använda Common Gateway Interface (CGI) för att skicka skript till din Apache-webb­ser­ver behöver du följande in­ställ­ning­ar:

  • en moln­ser­ver eller virtuell privat server (VPS)
  • en Linux-ser­ver­dis­tri­bu­tion som CentOS 8 eller Ubuntu 22.04
  • en Apache-webb­ser­ver som är in­stal­le­rad och igång
Notis

En stan­dardin­stal­la­tion av Linux levereras med Apache redan in­stal­le­rat. Om din server skapades med al­ter­na­ti­vet Minimal in­stal­la­tion måste du in­stal­le­ra och kon­fi­gu­re­ra Apache innan du fort­sät­ter. Lär dig hur du in­stal­le­rar och kon­fi­gu­re­rar Apache för WordPress i vår re­la­te­ra­de artikel.

Hur man aktiverar CGI-skript i Apache-kon­fi­gu­ra­tio­ner­na

Två saker måste kon­fi­gu­re­ras för att kunna köra CGI-skript på en Linux-server med Apache:

  • Apache måste kon­fi­gu­re­ras så att webb­ser­vern kan köra CGI-skript.
  • Skriptet måste laddas upp till rätt plats och ges rätt be­hö­rig­he­ter.

Apache-in­ställ­ning­ar för CGI-skript på CentOS

Öppna Apache-kon­fi­gu­ra­tions­fi­len httpd.conf för re­di­ge­ring:

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

Hitta avsnittet som lyder:

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

Ersätt rad Options None med följande två rader:

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

Den första raden talar om för Apache att köra CGI-filer som laddas upp till /var/www/cgi-bin directory. Den andra raden talar om för Apache att alla filer som slutar på .cgi, .pl (Perl-skript) eller .py (Python-skript) ska ses som CGI-skript.

Avsnittet lyder nu:

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

Spara och stäng filen. Starta nu om Apache så att änd­ring­ar­na träder i kraft:

sudo systemctl restart httpd
bash

Apache-in­ställ­ning­ar för CGI-skript på Ubuntu

På Ubuntu-system som Ubuntu 22.04 är Apache som standard kon­fi­gu­re­rat för att tillåta körning av CGI-skript i den angivna katalogen /usr/lib/cgi-bin. Du behöver inte ändra några Apache-kon­fi­gu­ra­tio­ner. Apache CGI-modulen måste dock aktiveras innan CGI-skript kan köras. För att göra detta måste du skapa en symlänk (symbolisk länk):

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

Starta sedan om Apache så att änd­ring­ar­na träder i kraft:

sudo systemctl restart apache2
bash

Hur man laddar upp CGI-skript och ställer in be­hö­rig­he­ter

För att verifiera CGI-skriptets funk­tio­na­li­tet på din Apache-server re­kom­men­de­rar vi att du börjar med ett test­skript. Skapa filen test.cgi i serverns angivna cgi-bin och öppna test­skrip­tet för re­di­ge­ring:

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

Lägg till följande innehåll i den här filen:

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

Spara och stäng filen. I nästa steg ger du filennöd­vän­di­ga kör­be­hö­rig­he­ter:

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

Genom att använda de chmod 755 pa­ra­met­rar­na kan ägaren läsa, redigera och köra skriptet. Gruppen och andra användare har läs­be­hö­rig­het och möjlighet att köra skriptet.

Visa skriptet i en webb­lä­sa­re med hjälp av do­män­nam­net eller IP-adressen:

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

Om in­stal­la­tio­nen lyckades visas med­de­lan­det ”Hello world!”.

Hur man felsöker CGI-skriptfel

404-fel: Ett 404-fel betyder att URL-adressen inte kan hittas. Kon­trol­le­ra att skriptet har lagts till i rätt katalog.

  • CentOS: Stan­dard­ka­ta­lo­gen för CGI är var/www/cgi-bin/
  • Ubuntu: Stan­dard­ka­ta­lo­gen för CGI är /usr/lib/cgi-bin

Server 500-fel: När fel 500 visas i samband med CGI-skript på Apache beror det van­ligt­vis på att skriptet inte har rätt be­hö­rig­he­ter. Kon­trol­le­ra att skriptet har be­hö­rig­het att köras (chmod 755).

Gå till huvudmeny