Ich habe viele Forenbeiträge, Tutorials usw. zum Einrichten von Apache unter Linux mit FastCGI gelesen. Ich versuche, FCGI für einige meiner Ruby-Entwicklungen (nicht Rails) auszuführen, aber ich denke, es sollte für jede Sprache gelten. Bitte beachten Sie, dass ich Apache, FastCGI, Ruby-FCGI und ähnliches bereits auf meiner Web-Box installiert habe.
Konzeptionell tue ich mich schwer damit. Erzeugt Apache die angegebenen FCGI-Prozesse nach Bedarf? Starte ich sie neben Apache? Im Grunde versuche ich, an einen Punkt zu gelangen, an dem ich die richtigen Fragen stellen kann. Entschuldigen Sie also, wenn der Titel irreführend ist.
Antwort1
Nun, in der Zwischenzeit habe ich das herausgefunden. Da es zu diesem Thema noch keine ausführliche Abhandlung gab, ist hier der Anfang einer solchen. Wenn ich alle Fehler behoben habe, werde ich dies bei einigen Tutorial-Sites einreichen.
Stellen Sie sicher, dass das Basismodul Fastcgi Apache installiert ist. Wenn Sie wie ich ArchLinux verwenden,mod_fcgid auf dem AURfunktioniert. Installieren Sie in anderen Distributionen entweder mod_fcgid oder mod_fastcgi. (Für diejenigen, die sich über den Unterschied wundern: Ich glaube, es gibt keinen großen Unterschied, also habe ich mich für die mit mehr Aktivität entschieden.)
Aktivieren Sie das Modul in Ihrer httpd.conf-Datei, indem Sie am Anfang Ihrer LoadModule-Definitionen eine Zeile hinzufügen. Ich bin mir nicht sicher, ob es eine Rolle spielt, welche Distributionen es gibt, aber auf Arch war es
Loadmodule fcgid_module modules/mod_fcgid.so
Fügen Sie Ihrer httpd.conf einen neuen Abschnitt hinzu. Ich habe diesen direkt unter den Abschnitt cgid_module gesetzt, bin mir aber ziemlich sicher, dass der Speicherort beliebig sein würde.
<IfModule fcgid_module> AddHandler fcgid-script .fgci </IfModule>
Nach meinem Verständnis wird jede Datei mit der Erweiterung .fcgi in einem Verzeichnis mit der Bezeichnung ExecCGI nun vom installierten Fastcgi-Modul verarbeitet. Ich habeDasPaket, um Ruby die FastCGI-Bindungen zu geben, und in einem ExecCGI-Verzeichnis schrieb ich dieses Testskript
test.rb.fcgi
#!/usr/bin/ruby -w require 'fcgi' count = 0 FCGI.each_cgi do puts "Content-type: text/html\n\n" puts "Hello, Ruby! FastCGI(#{count})" count = count + 1 end
Wenn Sie diese Seite nun in Ihrem Browser aufrufen, count
sollte sie mit jedem Seitenaufruf um eins erhöht werden, da sie sich außerhalb der FastCGI-Schleife befindet. Wenn das der Fall ist, ist FCGI korrekt eingerichtet.
Antwort2
Sie sollten die Verwendung in Betracht ziehenPassagierum Ihre Rails-Anwendung zu handhaben (auch wenn Sie keine Rails-Funktionen wie ActiveRecord usw. verwenden). Viele Websites laufen darauf (außerdem haben sie Rails Enterprise, weniger Speicher, bessere Leistung)
Antwort3
Apache sollte sie mithilfe der FastCGI-Schnittstelle starten. Sie werden jedoch einige Zeit lang ausgeführt und jeder Prozess muss mehr als eine Anfrage verarbeiten, bevor er von Apache beendet wird.
Antwort4
Erzeugt Apache die angegebenen FCGI-Prozesse nach Bedarf? Starte ich sie zusammen mit Apache?
Apache wird sie für Sie starten. Sie können in Ihrer httpd.conf eine Mindest- und Höchstzahl von zu startenden Prozessen festlegen. Je nach Menge der eingehenden Anfragen werden dann neue Prozesse gestartet und veraltete Prozesse beendet. Solange Anfragen eingehen, wird Ihr Prozess weiter ausgeführt.