So aktivierst du CGI-Skripte auf deinem Webserver
CGI-Skripte sind eine effiziente Methode, um deinen Apache-Webserver zu entlasten. Die Konfiguration ist rasch erledigt, und auch die Berechtigungen für Verzeichnisse und Dateien lassen sich unkompliziert vergeben.
CGI-Skripte auf Apache: Das brauchst du
Damit du das Common Gateway Interface (CGI) nutzen kannst, um Skripte an deinen Apache-Webserver zu übergeben, ist folgendes Setup nötig:
- ein Cloud Server oder Virtual Private Server (VPS)
- eine Linux-Distribution wie CentOS 8 oder Ubuntu 22.04
- ein fertig installierter und aktiver Apache-Webserver
In einer Standard-Installation von Linux ist Apache meist vorinstalliert. Falls du eine Minimalinstallation nutzt, musst du den Webserver manuell einrichten. Wie du Apache für WordPress oder Apache unter Ubuntu installierst, erfährst du in unseren Guides.
CGI-Skripte in der Apache-Konfiguration freischalten
Damit deine Skripte via CGI auf einem Linux-Server laufen, sind zwei Schritte erforderlich:
- Apache muss für die Ausführung von CGI-Skripten konfiguriert werden.
- Die Skripte müssen im richtigen Verzeichnis liegen und die passenden Berechtigungen haben.
Apache-Konfiguration für CGI unter CentOS
Öffne die Konfigurationsdatei httpd.conf deines Apache-Servers:
sudo nano /etc/httpd/conf/httpd.confbashSuche nach diesem Block:
#
# "/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>textErsetze die Zeile Options None durch diese beiden Einträge:
Options +ExecCGI
AddHandler cgi-script .cgi .pl .pytextDie erste Zeile weist Apache an, CGI-Dateien im Verzeichnis /var/www/cgi-bin auszuführen. Die zweite Zeile definiert, dass Dateien mit den Endungen .cgi, .pl (Perl) oder .py (Python) als CGI-Skripte behandelt werden.
Der fertige Abschnitt sieht dann so aus:
#
# "/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>textSpeichere die Datei und schließe sie. Starte Apache neu, damit das System die Änderungen übernimmt:
sudo systemctl restart httpdbashApache-Konfiguration für CGI unter Ubuntu
Bei Systemen wie Ubuntu 22.04 erlaubt Apache die Ausführung von CGI-Skripten im Verzeichnis /usr/lib/cgi-bin bereits standardmäßig. Du musst die Konfigurationsdatei also nicht anfassen. Du musst jedoch das CGI-Modul aktivieren, damit alles glatt läuft. Erstelle dazu einen Symlink:
sudo ln -s /etc/apache2/mods-available/cgi.load /etc/apache2/mods-enabled/bashStarte den Webserver danach neu, um die Aktivierung abzuschließen:
sudo systemctl restart apache2bashCGI-Skript hochladen und Rechte vergeben
Um zu testen, ob alles funktioniert, startest du am besten mit einem einfachen Testskript. Erstelle die Datei test.cgi im cgi-bin-Verzeichnis und öffne sie zum Bearbeiten:
- CentOS:
sudo nano /var/www/cgi-bin/test.cgi - Ubuntu:
sudo nano /usr/lib/cgi-bin/test.cgi
Füge diesen Inhalt in die Datei ein:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<h1>Hello world!</h1>";textSpeichere die Datei ab und lege die Berechtigungen für die Ausführung fest:
- CentOS:
sudo chmod 755 /var/www/cgi-bin/test.cgi - Ubuntu:
sudo chmod 755 /usr/lib/cgi-bin/test.cgi