Was macht FastCGI konkret (für Ruby, Java und Python)?

Was macht FastCGI konkret (für Ruby, Java und Python)?

Wenn ich einen Server habe, auf dem Apache läuft, und FastCGI installiere, kann ich dann Ruby- und Python-Skripte ausführen? Wenn Python bereits auf dem Server installiert ist, kann ich dann nicht einfach .py zum CGI-Abschnitt in der Datei httpd.conf hinzufügen, damit Python-Skripte funktionieren?

Werden Mongrel und Tomcat für Ruby und Java überflüssig, wenn Ruby und Java installiert sind?

Sofern ich nichts übersehen habe, scheint es, als ob FastCGI Ihnen nur das ermöglicht, was Sie bereits können.

Antwort1

FastCGI ist ein Ersatz für „Standard“-CGI-Skripte.

Bei CGI der alten Schule würde der Webserver Ihr Skript starten, ihm eine Anfrage senden, auf eine Antwort warten und dann erwarten, dass Ihr Skript beendet wird.

Das Hauptmerkmal von FastCGI besteht darin, dass Ihr Skript nicht beendet wird, sondern auf eine weitere Anforderung wartet. Dies macht es weitaus effizienter, da kein weiterer Prozess erstellt wird, das wahrscheinlich interpretierte Skript nicht neu geladen wird usw. Dies ist ein großer Vorteil für Perl, Ruby und so ziemlich jede andere Sprache.

Der Nachteil besteht darin, dass Ihr Skript so geschrieben sein muss, dass es mit solchen Dingen umgehen kann. Das ist nicht schwer.

Bei FastCGI geht es also darum, den Aufwand für die Bearbeitung einer Anfrage zu reduzieren.

Wenn Sie Ruby on Rails (nicht nur Ruby) verwenden, sehen Sie sich Phusion Passenger an. Es ist ein fantastisches Server-Plug-in, mit dem sich Ruby on Rails ganz einfach ausführen lässt.

Was mod_python betrifft, können Sie das sicherlich tun. Es gibt jedoch Kompromisse. Zum einen kann ein CGI-Skript als ein anderer Benutzer als der Hauptwebserver ausgeführt werden. Ich weiß nicht, ob mod_python dies tut. Es kann sehr nützlich sein, es als anderer Benutzer ausführen zu können, um Berechtigungsprobleme zu lösen, Anwendungen durch Ausführung unter verschiedenen Benutzern getrennt zu halten usw.

Um Ihre Frage also etwas anders zu beantworten: Wenn Sie bereit sind, mod_python und Phusion Passenger zu verwenden, müssen Sie FastCGI nicht verwenden. Wenn Sie die Skripte in einem anderen Prozess als dem Server ausführen müssen, sollten Sie FastCGI verwenden, wenn möglich, und nicht das normale CGI.

Antwort2

FastCGI ist eine optimierte Version von CGI. Es entspricht der Schnittstelle von CGI und fügt verteiltes Computing hinzu.

Sie können Python-Skripte über CGI ausführen (die cgitb-Module sind hilfreich), aber aus Leistungs- und Funktionsgründen ist es normalerweise besser, ein Framework wie mod_python zu verwenden. Bei Ruby und Java ist die Situation ähnlich.

Ich bin nicht sicher, was Sie versuchen. Sie können Mongrel oder Tomcat nicht einfach durch FastCGI ersetzen. Das sind völlig unterschiedliche Dinge. Sie müssen die Anwendung neu schreiben, um die Schnittstelle zum Webserver anzupassen.

verwandte Informationen