Fastcgiを使用したLinuxでのApacheのセットアップについて、フォーラムの投稿やチュートリアルなどをたくさん読んでいます。 Ruby開発(Railsではない)の一部でfcgiを実行しようとしていますが、どの言語にも適用できると思います。すでにApache、fastcgi、Ruby-fcgiがあることに注意してください。 、などはすでに私のWebボックスにインストールされています。
概念的には、私はそれに苦労しています。 Apacheは必要に応じて指定されたfcgiプロセスを生成しますか?アパッチと一緒に始めますか?基本的には、きちんと質問できるようにしようと思っているので、誤解を招くようなタイトルになったらお詫びします。
さて、その間に、私はこれを理解しました。このテーマについての簡潔な記述がなかったので、ここにその始まりがあります。すべてのバグを解決したら、これをいくつかのチュートリアルサイトに送信します。
ベースのfastcgiApacheモジュールがインストールされていることを確認してください。私のようにArchLinuxを使用する場合、 aurのmod_fcgid は機能します。他のディストリビューションでは、mod_fcgidまたはmod_fastcgiのいずれかをインストールします。 (違いが気になる方はあまりないと思いますので、もっと活動のある方を選びました。)
Httpd.confファイルで、LoadModule定義の先頭に行を追加して、モジュールをアクティブ化します。どのディストリビューションが重要かはわかりませんが、ArchではLoadmodule fcgid_module modules/mod_fcgid.so
Httpd.confに新しいセクションを追加します。これをcgid_moduleセクションのすぐ下に配置しましたが、場所は任意であると確信しています。
<IfModule fcgid_module>
AddHandler fcgid-script .fgci
</IfModule>
私の理解では、ExecCGIとマークされたディレクトリに.fcgi拡張子が付いているファイルはすべて、インストールされたfastcgiモジュールによって処理されるようになります。 this パッケージをインストールしてRuby fastcgiバインディング、ExecCGIディレクトリ内に、このテストスクリプトを記述しました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
ブラウザでそのページに移動すると、count
はfastcgiループの外側にあるため、ページビューごとにインクリメントする必要があります。その場合、fcgiは正しくセットアップされています。
Apacheは必要に応じて指定されたfcgiプロセスを生成しますか?アパッチと一緒に始めますか?
Apacheがそれらを生成します。 httpd.confで生成するプロセスの最小数と最大数を設定できます。これにより、受信リクエストの量に基づいて、新しいプロセスが生成され、古いプロセスが強制終了されます。リクエストが届く限り、プロセスは実行され続けます。
Passenger を使用してRailsアプリケーションを処理することを検討する必要があります(Rails ActiveRecordなどの機能を使用していない場合でも)) 。多くのWebサイトが実行されています(さらに、Rails Enterprise、メモリが少なく、パフォーマンスが優れています)
Apacheは、fastcgiインターフェイスを使用してそれらを生成する必要があります。ただし、しばらくの間は実行されたままになりますが、Apacheによって終了される前に、各プロセスが複数のリクエストを処理することが期待されます。