CGI-Skripte auf dem Apache aktivieren

CGI-Skripte sind eine praktische Lösung, um Apache-Webserver zu entlasten. Die notwendigen Apache-Konfigurationen sind schnell erledigt und die notwendigen Berechtigungen für das Verzeichnis und die CGI-Dateien unkompliziert erteilt.

CGI-Skripte auf Apache: Anforderungen

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

  • einen Cloud Server bzw. Virtual Private Server (VPS)
  • eine Linux-Server-Distribution wie CentOS 8 oder Ubuntu 22.04
  • einen installierten und laufenden Apache-Webserver
Hinweis

Bei einer Standard-Linux-Installation ist Apache von Anfang an installiert. Wenn Sie Ihren Server über eine Minimalinstallation erstellt haben, müssen Sie Apache aber in der Regel noch installieren und konfigurieren. Erfahren Sie in unseren weiterführenden Artikeln, wie Sie Apache für WordPress bzw. Apache unter Ubuntu installieren und konfigurieren.

CGI-Skripte in den Apache-Konfigurationen aktivieren

Zwei Dinge müssen eingerichtet werden, um auf einem Linux-Server Skripte via CGI mit Apache auszuführen:

  • Apache muss so konfiguriert werden, dass der Webserver CGI-Skripte ausführen kann.
  • Die gewünschten Skripte müssen an den richtigen Ort hochgeladen und mit den erforderlichen Berechtigungen ausgestattet werden.

Apache-Einstellungen für CGI-Skripte unter CentOS

Öffnen Sie die Apache-Konfigurationsdatei httpd.conf zur Bearbeitung:

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 auszuführen, die in das Verzeichnis /var/www/cgi-bin hochgeladen 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 betrachtet wird.

Der ganze Abschnitt sollte nun folgendermaß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 Änderungen wirksam werden:

sudo systemctl restart httpd
bash

Apache-Einstellungen für CGI-Skripte auf Ubuntu

In Ubuntu-Systemen wie Ubuntu 22.04 ist der Apache standardmäßig so konfiguriert, dass er die Ausführung von CGI-Skripten im angegebenen Verzeichnis /usr/lib/cgi-bin erlaubt. Sie müssen keine Apache-Konfigurationen ändern. Allerdings muss das CGI-Modul des Apache aktiviert werden, bevor CGI-Skripte ausgeführt werden können. Dazu müssen Sie einen Symlink (symbolische Verknüpfung) erstellen:

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

Starten Sie dann den Apache neu, damit die Änderungen wirksam werden:

sudo systemctl restart apache2
bash
Cloud Server
Leistungsstarke Konfigurationen
  • On-Demand skalierbar, Load Balancer und Traffic inklusive
  • Hochverfügbare Server-Plattform
  • ISO-zertifizierte Rechenzentren am Standort Deutschland
  • Inkl. 100,- € Startguthaben im 1. Monat

CGI-Skript hochladen und Berechtigungen festlegen

Um die Funktionalität von CGI-Skripten auf Ihrem Apache-Server zu überprüfen, empfehlen wir, mit einem Testskript zu beginnen. Erstellen Sie zu diesem Zweck die Datei test.cgi in dem vom Server angegebenen cgi-bin-Verzeichnis und öffnen Sie das Testskript zur Bearbeitung:

  • 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 definieren Sie im nächsten Schritt die notwendigen Ausführungsberechtigungen:

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

Durch die Verwendung der Parameter chmod 755 kann das Skript vom Besitzer gelesen, bearbeitet und ausgeführt werden. Für die Gruppe und sonstige Zugriffe bestehen Lesezugriff und die Möglichkeit, das Skript auszuführen.

Zeigen Sie das Skript in einem Browser an, indem Sie den Domainnamen oder die IP-Adresse aufrufen:

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

Wenn die Einrichtung erfolgreich war, erscheint die im Skript definierte Meldung „Hello world!“.

Troubleshooting für CGI-Skriptfehler

404-Fehler: Tritt ein 404-Error auf, konnte die jeweilige URL nicht gefunden werden. Überprüfen Sie in diesem Fall als erstes, ob das Skript dem richtigen Verzeichnis hinzugefügt wurde.

  • CentOS: Das Standardverzeichnis ist /var/www/cgi-bin/
  • Ubuntu: Das Standardverzeichnis ist /usr/lib/cgi-bin

500-Fehler: HTTP-Error 500 im Zusammenhang mit CGI-Skripten auf Apache sind für gewöhnlich darauf zurückzuführen, dass das Skript nicht über die richtigen Berechtigungen verfügt. Überprüfen Sie, ob das Skript über die Ausführungsberechtigungen (chmod 755) verfügt.

Cloud Backup powered by Acronis
Minimieren Sie Ausfallzeiten mit unserem Komplettschutz
  • Automatisch: Backups und Recovery
  • Intuitiv: Planung und Management
  • Intelligent: KI-basierter Bedrohungsschutz
  • Inkl. 300,- € Startguthaben im 1. Monat
War dieser Artikel hilfreich?
Page top