In diesem Post beschreibe ich kurz wie Sie den Apache oder Nginx-Webserver so konfigurieren, dass dieser CGI-Skripte ausführt. Das ist immer dann notwendig, wenn sie eine in CGI geschriebene Webanwendung ausführen wollen. Berühmte Beispiele sind beispielsweise CGIProxy oder verschiedene Administrationsoberflächen wie beispielsweise Webmin.
Apache
Als erstes müsst ihr auf Kommandozeilenebene das Module mod_cgi aktivieren
$>sudo a2enmod cgi $>sudo service apache2 restart
Dann müsst ihr rigendwo auf eurem System noch einen Ordner machen, der für CGI-Skritpe vorgesehen sen soll. Ihr solltet eure CGI-Webanwendungen nämlcih nicht in der documentRoot des webservers speichern,a slo beispielsweise nicht unterhalb von /var/www. Sinnvoll wäre beispielsweise ein Ordner wie /usr/local/apache2/cgi-bin. Dem User, unter dem der Apache läuft (meist www-data) müsst ihr dann Ownership auf diesen Ordner geben.
mkdir /usr/local/apache2/cgi-bin chown -R www-data.www-data /usr/local/apache2/cgi-bin
Dann müsst ihr in der /etc/apache2/apache2.conf diesen Ordner mit der Direktive ScriptAlias einbauen. Ein ScriptAlias im Format
ScriptAlias /cgi-bin/ /usr/local/apache2/cgi-bin/
beispielsweise würde bewirken, dass wenn ein Besucher http://<FQDN>/cgi-bin/ eingibt, die Webanwendung angezeigt bekommt, die ihr unter /usr/local/apache2/cgi-bin gespeichert habt.
Wenn ihr hingegen darauf besteht, dass ihr die CGI-Webanwendung in einem Unterordner unterhalb der Documentroot (meist /var/www) speichern könnt, dann müsst ihr für diesen Unterordner eine Direktive erstellen und dort explizit CGI aktivieren. Das würde ebenfalls in der /etc/apache2/apache2.conf passieren und dann so aussehen:
<Directory /usr/local/apache2/htdocs/somedir>
Options +ExecCGI
</Directory>
außerhalb dieser Directory-direktive müsst ihr dem Apache 2 Webserver dann noch in der /etc/apache2/apache2.conf sagen, welche Dateiendungen als CGI-Skritpe behandelt werden sollen. sinn machen hier in der Regel die erweiterungen .cgi, .py für Python und .pl für Perl.
AddHandler cgi-script .cgi .pl .py
Jetzt dürft ihr nur noch nicht vergessen, dass der User, unter dem der Apache läuft (meist www-data) Ownership auf den Unterordner der CGI-Webanwendung haben muss und dass die CGI-Dateiena usführbar sein müssen
chown -R www-data.www-data /var/www/cgi-bin chmod -R +x /var/www/cgi-bin
Spätestens jetzt sollte es gehen.
Nginx
Unte rdem Nginx Webserver leiten wir CGI-Anfragen an Thttpd weiter, der auf Port 8000 läuft. Als erstes müssen wir Thttpd installieren.
apt-get install thttpd
iw breabreiten die /etc/default/httpd-Datei und setzen den Aprameter ENABLED
ENABLED=yes
Nun machen wir ein Backup von der /etc/httpd/httpd.conf und erstellen diese dann neu, mit folgendem Inhalt:
# BEWARE : No empty lines are allowed! # This section overrides defaults # This section _documents_ defaults in effect # port=80 # nosymlink # default = !chroot # novhost # nocgipat # nothrottles # host=0.0.0.0 # charset=iso-8859-1 host=127.0.0.1 port=8000 user=www-data logfile=/var/log/thttpd.log pidfile=/var/run/thttpd.pid dir=/var/www cgipat=**.cgi|**.pl
Wir starten httpdt
/etc/init.d/httpd start
imd ersteööem mim doe Dateo /etc/nginx/proxy.conf mit foglendem inhalt:
proxy_redirect off; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; client_max_body_size 10m; client_body_buffer_size 128k; proxy_connect_timeout 90; proxy_send_timeout 90; proxy_read_timeout 90;
Nun öffnen wir die konfiugration von nginx und fügen in der Server-Direktive ein
server {
location /cgi-bin {
include proxy.conf;
proxy_pass http://127.0.0.1:8000;
}
}
Nginx neu starten über
/etc/init.d/nginx reload
in der jetzigen Konfiguration können Sie also ihre CGI-Webanwendung einfach in den Ordner /var/www/cgi-bin einfügen, müssen wieder mit chown Besitztuma fu den User geben, unter dem nginx läuft (meist www-data) und die skripte darin ausführbar machen, dann sollte es gehen.
mkdir /var/www/cgi-bin chown -R www-data.www-data /var/www/cgi-bin chmod -R +x /var/www/cgi-bin
Wenn dir dieser Post gefallen hat, teile ihn doch auf Social Media, abonniere und verfolge mich per E-Mail, RSS-Feed, Social Media oder registriere dich auf meiner Seite. Wenn du registriert bist, like den Post bitte, wenn er dir gefallen hat!
Ein Gedanke zu „CGI-Skripte ausführen auf Apache und Nginx“