CGI-Skripte sind eine prak­ti­sche Lösung, um Apache-Webserver zu entlasten. Die not­wen­di­gen Apache-Kon­fi­gu­ra­tio­nen sind schnell erledigt und die not­wen­di­gen Be­rech­ti­gun­gen für das Ver­zeich­nis und die CGI-Dateien un­kom­pli­ziert erteilt.

CGI-Skripte auf Apache: An­for­de­run­gen

Damit Sie das Common Gateway Interface (CGI) verwenden können, um Skripte an Ihren Apache-Webserver zu über­mit­teln, benötigen Sie folgendes Setup:

  • einen Cloud Server bzw. Virtual Private Server (VPS)
  • eine Linux-Server-Dis­tri­bu­ti­on wie CentOS 8 oder Ubuntu 22.04
  • einen in­stal­lier­ten und laufenden Apache-Webserver
Hinweis

Bei einer Standard-Linux-In­stal­la­ti­on ist Apache von Anfang an in­stal­liert. Wenn Sie Ihren Server über eine Mi­ni­mal­in­stal­la­ti­on erstellt haben, müssen Sie Apache aber in der Regel noch in­stal­lie­ren und kon­fi­gu­rie­ren. Erfahren Sie in unseren wei­ter­füh­ren­den Artikeln, wie Sie Apache für WordPress bzw. Apache unter Ubuntu in­stal­lie­ren und kon­fi­gu­rie­ren.

CGI-Skripte in den Apache-Kon­fi­gu­ra­tio­nen ak­ti­vie­ren

Zwei Dinge müssen ein­ge­rich­tet werden, um auf einem Linux-Server Skripte via CGI mit Apache aus­zu­füh­ren:

  • Apache muss so kon­fi­gu­riert werden, dass der Webserver CGI-Skripte ausführen kann.
  • Die ge­wünsch­ten Skripte müssen an den richtigen Ort hoch­ge­la­den und mit den er­for­der­li­chen Be­rech­ti­gun­gen aus­ge­stat­tet werden.

Apache-Ein­stel­lun­gen für CGI-Skripte unter CentOS

Öffnen Sie die Apache-Kon­fi­gu­ra­ti­ons­da­tei httpd.conf zur Be­ar­bei­tung:

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

Finden Sie den folgenden Abschnitt:

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

Ersetzen Sie die Zeile Options None durch die folgenden zwei Zeilen:

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

Die erste Zeile weist den Apache an, CGI-Dateien aus­zu­füh­ren, die in das Ver­zeich­nis /var/www/cgi-bin hoch­ge­la­den werden. Die zweite Zeile teilt dem Apache mit, dass jede Datei mit der Endung .cgi,.pl (Perl-Skripte) oder.py (Python-Skripte) als CGI-Skript be­trach­tet wird.

Der ganze Abschnitt sollte nun fol­gen­der­ma­ßen aussehen:

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

Speichern und beenden Sie die Datei. Starten Sie dann den Apache neu, damit die Än­de­run­gen wirksam werden:

sudo systemctl restart httpd
bash

Apache-Ein­stel­lun­gen für CGI-Skripte auf Ubuntu

In Ubuntu-Systemen wie Ubuntu 22.04 ist der Apache stan­dard­mä­ßig so kon­fi­gu­riert, dass er die Aus­füh­rung von CGI-Skripten im an­ge­ge­be­nen Ver­zeich­nis /usr/lib/cgi-bin erlaubt. Sie müssen keine Apache-Kon­fi­gu­ra­tio­nen ändern. Al­ler­dings muss das CGI-Modul des Apache aktiviert werden, bevor CGI-Skripte aus­ge­führt werden können. Dazu müssen Sie einen Symlink (sym­bo­li­sche Ver­knüp­fung) erstellen:

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

Starten Sie dann den Apache neu, damit die Än­de­run­gen wirksam werden:

sudo systemctl restart apache2
bash
Cloud Server
Leis­tungs­star­ke Kon­fi­gu­ra­tio­nen
  • On-Demand ska­lier­bar & Root-Zugriff inklusive
  • Hoch­ver­füg­ba­re Server-Plattform
  • ISO-zer­ti­fi­zier­te Re­chen­zen­tren am Standort Deutsch­land

CGI-Skript hochladen und Be­rech­ti­gun­gen festlegen

Um die Funk­tio­na­li­tät von CGI-Skripten auf Ihrem Apache-Server zu über­prü­fen, empfehlen wir, mit einem Test­skript zu beginnen. Erstellen Sie zu diesem Zweck die Datei test.cgi in dem vom Server an­ge­ge­be­nen cgi-bin-Ver­zeich­nis und öffnen Sie das Test­skript zur Be­ar­bei­tung:

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

Fügen Sie den folgenden Inhalt zu dieser Datei hinzu:

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

Speichern und beenden Sie die Datei und de­fi­nie­ren Sie im nächsten Schritt die not­wen­di­gen Aus­füh­rungs­be­rech­ti­gun­gen:

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

Durch die Ver­wen­dung der Parameter chmod 755 kann das Skript vom Besitzer gelesen, be­ar­bei­tet und aus­ge­führt werden. Für die Gruppe und sonstige Zugriffe bestehen Le­se­zu­griff und die Mög­lich­keit, das Skript aus­zu­füh­ren.

Zeigen Sie das Skript in einem Browser an, indem Sie den Do­main­na­men oder die IP-Adresse aufrufen:

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

Wenn die Ein­rich­tung er­folg­reich war, erscheint die im Skript de­fi­nier­te Meldung „Hello world!“.

Trou­ble­shoo­ting für CGI-Skript­feh­ler

404-Fehler: Tritt ein 404-Error auf, konnte die jeweilige URL nicht gefunden werden. Über­prü­fen Sie in diesem Fall als erstes, ob das Skript dem richtigen Ver­zeich­nis hin­zu­ge­fügt wurde.

  • CentOS: Das Stan­dard­ver­zeich­nis ist /var/www/cgi-bin/
  • Ubuntu: Das Stan­dard­ver­zeich­nis ist /usr/lib/cgi-bin

500-Fehler: HTTP-Error 500 im Zu­sam­men­hang mit CGI-Skripten auf Apache sind für ge­wöhn­lich darauf zu­rück­zu­füh­ren, dass das Skript nicht über die richtigen Be­rech­ti­gun­gen verfügt. Über­prü­fen Sie, ob das Skript über die Aus­füh­rungs­be­rech­ti­gun­gen (chmod 755) verfügt.

Cloud Backup powered by Acronis
Mi­ni­mie­ren Sie Aus­fall­zei­ten mit unserem Kom­plett­schutz
  • Au­to­ma­tisch: Backups und Recovery
  • Intuitiv: Planung und Ma­nage­ment
  • In­tel­li­gent: KI-basierter Be­dro­hungs­schutz
  • Inkl. 300,- € Start­gut­ha­ben im 1. Monat
Zum Hauptmenü