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
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
bashFinden 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>
textErsetzen Sie die Zeile Options None
durch die folgenden zwei Zeilen:
Options +ExecCGI
AddHandler cgi-script .cgi .pl .py
textDie 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>
textSpeichern und beenden Sie die Datei. Starten Sie dann den Apache neu, damit die Änderungen wirksam werden:
sudo systemctl restart httpd
bashApache-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/
bashStarten Sie dann den Apache neu, damit die Änderungen wirksam werden:
sudo systemctl restart apache2
bash- 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>";
textSpeichern 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
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
textWenn 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.
- Automatisch: Backups und Recovery
- Intuitiv: Planung und Management
- Intelligent: KI-basierter Bedrohungsschutz
- Inkl. 300,- € Startguthaben im 1. Monat