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-develJetzt 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 installDies 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.serviceSie 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.serviceAls 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-binJetzt 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 |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.cgiWenn alles gut geht, sollten Sie die folgende Ausgabe erhalten:

4 Links
- Nginx: http://nginx.org/
- Nginx Wiki: http://wiki.nginx.org/
- Thttpd: http://acme.com/software/thttpd/
- nginx ThttpdCGI: http://wiki.nginx.org/ThttpdCGI
- nginx Fcgiwrap: http://wiki.nginx.org/Fcgiwrap
Ü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.
Erhalte neue Beiträge in deinem Posteingang.
Kein Spam. Jederzeit abmelden.