Nginx Anleitung · 2 min read · Jan 23, 2026

CGI-Skripte mit Nginx auf Fedora 18 bereitstellen - Seite 2

3 Verwendung von Fcgiwrap

Fcgiwrap ist ein CGI-Wrapper, der in Shared-Hosting-Umgebungen verwendet werden kann, da er es jedem vhost ermöglicht, sein eigenes cgi-bin-Verzeichnis zu nutzen.

Da es kein fcgiwrap-Paket für Fedora gibt, müssen wir es selbst erstellen. Zuerst installieren wir einige Voraussetzungen:

yum groupinstall 'Development Tools'
yum install fcgi-devel

Jetzt können wir fcgiwrap wie folgt erstellen:

cd /usr/local/src/  
git clone git://github.com/gnosek/fcgiwrap.git  
cd fcgiwrap  
autoreconf -i  
./configure  
make  
make install

Dies installiert fcgiwrap in /usr/local/sbin/fcgiwrap.

Als nächstes installieren wir das spawn-fcgi-Paket, das es uns ermöglicht, fcgiwrap als Daemon auszuführen:

yum install spawn-fcgi

Öffnen Sie /etc/sysconfig/spawn-fcgi…

vi /etc/sysconfig/spawn-fcgi

… und ändern Sie die Datei wie folgt:

| # Sie müssen einige Arbeitsoptionen festlegen, bevor der "spawn-fcgi"-Dienst funktioniert. # Wenn SOCKET auf eine Datei verweist, wird diese Datei vom Init-Skript bereinigt. # # Siehe spawn-fcgi(1) für alle möglichen Optionen. # # Beispiel : #SOCKET=/var/run/php-fcgi.sock #OPTIONS="-u apache -g apache -s $SOCKET -S -M 0600 -C 32 -F 1 -P /var/run/spawn-fcgi.pid -- /usr/bin/php-cgi" FCGI_SOCKET=/var/run/fcgiwrap.socket FCGI_PROGRAM=/usr/local/sbin/fcgiwrap FCGI_USER=nginx FCGI_GROUP=nginx FCGI_EXTRA_OPTIONS="-M 0700" OPTIONS="-u $FCGI_USER -g $FCGI_GROUP -s $FCGI_SOCKET -S $FCGI_EXTRA_OPTIONS -F 1 -P /var/run/spawn-fcgi.pid -- $FCGI_PROGRAM" |

Erstellen Sie die Systemstartlinks für spawn-fcgi…

systemctl enable spawn-fcgi.service

… und starten Sie es wie folgt:

systemctl start spawn-fcgi.service

Sie sollten jetzt den fcgiwrap-Socket in /var/run/fcgiwrap.socket finden, der dem Benutzer und der Gruppe nginx gehört.

Öffnen Sie nun Ihre vhost-Konfigurationsdatei…

vi /etc/nginx/conf.d/www.example.com.vhost

… und fügen Sie einen Abschnitt location /cgi-bin {} zum Container server {} hinzu:

| server { [...] location /cgi-bin/ { # Gzip deaktivieren (es lässt Skripte langsamer erscheinen, da sie # abgeschlossen sein müssen, bevor sie komprimiert werden) gzip off; # Setzen Sie das Root-Verzeichnis auf /usr/lib (innerhalb dieses Standorts bedeutet dies, dass wir # Zugriff auf die Dateien unter /usr/lib/cgi-bin gewähren) root /var/www/www.example.com; # Fastcgi-Socket fastcgi_pass unix:/var/run/fcgiwrap.socket; # Fastcgi-Parameter, die die Standardparameter enthalten include /etc/nginx/fastcgi_params; # Passen Sie nicht standardmäßige Parameter an (SCRIPT_FILENAME) fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } [...] } |

Laden Sie nginx neu:

systemctl reload nginx.service

Als nächstes erstellen wir unser cgi-bin-Verzeichnis - /var/www/www.example.com/cgi-bin, da wir root /var/www/www.example.com; im Container location /cgi-bin {} definiert haben:

mkdir /var/www/www.example.com/cgi-bin

Jetzt legen wir unsere CGI-Skripte hinein und machen sie ausführbar. Zu Testzwecken werde ich ein kleines Hello World Perl-Skript erstellen (anstatt hello_world.cgi können Sie auch die Erweiterung .pl -> hello_world.pl verwenden):

vi /var/www/www.example.com/cgi-bin/hello_world.cgi

| #!/usr/bin/perl -w # Sage Perl, dass es einen HTML-Header senden soll. # Damit Ihr Browser die Ausgabe erhält # anstelle von (Befehlszeile # auf dem Server.) print "Content-type: text/html\n\n"; # Drucken Sie Ihre grundlegenden HTML-Tags. # und den Inhalt davon. print "Hello World!! \n"; print "

Hello world

\n"; |

chmod 755 /var/www/www.example.com/cgi-bin/hello_world.cgi

Öffnen Sie einen Browser und testen Sie das Skript:

http://www.example.com/cgi-bin/hello_world.cgi

Wenn alles gut geht, sollten Sie die folgende Ausgabe erhalten:

4 Links

Über den Autor

Falko Timme ist der Eigentümer von Timme Hosting (ultra-schnelles nginx-Webhosting). Er ist der Hauptbetreuer von HowtoForge (seit 2005) und einer der Hauptentwickler von ISPConfig (seit 2000). Er hat auch zum O’Reilly-Buch “Linux System Administration” beigetragen.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.