CGI-Skripte sind eine ef­fi­zi­en­te Methode, um deinen Apache-Webserver zu entlasten. Die Kon­fi­gu­ra­ti­on ist rasch erledigt, und auch die Be­rech­ti­gun­gen für Ver­zeich­nis­se und Dateien lassen sich un­kom­pli­ziert 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-Dis­tri­bu­ti­on wie CentOS 8 oder Ubuntu 22.04
  • ein fertig in­stal­lier­ter und aktiver Apache-Webserver

CGI-Skripte in der Apache-Kon­fi­gu­ra­ti­on frei­schal­ten

Damit deine Skripte via CGI auf einem Linux-Server laufen, sind zwei Schritte er­for­der­lich:

  • Apache muss für die Aus­füh­rung von CGI-Skripten kon­fi­gu­riert werden.
  • Die Skripte müssen im richtigen Ver­zeich­nis liegen und die passenden Be­rech­ti­gun­gen haben.

Apache-Kon­fi­gu­ra­ti­on für CGI unter CentOS

Öffne die Kon­fi­gu­ra­ti­ons­da­tei httpd.conf deines Apache-Servers:

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

Suche 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>
text

Ersetze die Zeile Options None durch diese beiden Einträge:

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

Die erste Zeile weist Apache an, CGI-Dateien im Ver­zeich­nis /var/www/cgi-bin aus­zu­füh­ren. 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>
text

Speichere die Datei und schließe sie. Starte Apache neu, damit das System die Än­de­run­gen übernimmt:

sudo systemctl restart httpd
bash

Apache-Kon­fi­gu­ra­ti­on für CGI unter Ubuntu

Bei Systemen wie Ubuntu 22.04 erlaubt Apache die Aus­füh­rung von CGI-Skripten im Ver­zeich­nis /usr/lib/cgi-bin bereits stan­dard­mä­ßig. Du musst die Kon­fi­gu­ra­ti­ons­da­tei also nicht anfassen. Du musst jedoch das CGI-Modul ak­ti­vie­ren, damit alles glatt läuft. Erstelle dazu einen Symlink:

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

Starte den Webserver danach neu, um die Ak­ti­vie­rung ab­zu­schlie­ßen:

sudo systemctl restart apache2
bash

CGI-Skript hochladen und Rechte vergeben

Um zu testen, ob alles funk­tio­niert, startest du am besten mit einem einfachen Test­skript. Erstelle die Datei test.cgi im cgi-bin-Ver­zeich­nis und öffne sie zum Be­ar­bei­ten:

  • 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>";
text

Speichere die Datei ab und lege die Be­rech­ti­gun­gen für die Aus­füh­rung fest:

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