web-dev-qa-db-ja.com

FastCGIとRubyでApacheをセットアップするにはどうすればよいですか?

Fastcgiを使用したLinuxでのApacheのセットアップについて、フォーラムの投稿やチュートリアルなどをたくさん読んでいます。 Ruby開発(Railsではない)の一部でfcgiを実行しようとしていますが、どの言語にも適用できると思います。すでにApache、fastcgi、Ruby-fcgiがあることに注意してください。 、などはすでに私のWebボックスにインストールされています。

概念的には、私はそれに苦労しています。 Apacheは必要に応じて指定されたfcgiプロセスを生成しますか?アパッチと一緒に始めますか?基本的には、きちんと質問できるようにしようと思っているので、誤解を招くようなタイトルになったらお詫びします。

9
sdellysse

さて、その間に、私はこれを理解しました。このテーマについての簡潔な記述がなかったので、ここにその始まりがあります。すべてのバグを解決したら、これをいくつかのチュートリアルサイトに送信します。

  1. ベースのfastcgiApacheモジュールがインストールされていることを確認してください。私のようにArchLinuxを使用する場合、 aurのmod_fcgid は機能します。他のディストリビューションでは、mod_fcgidまたはmod_fastcgiのいずれかをインストールします。 (違いが気になる方はあまりないと思いますので、もっと活動のある方を選びました。)

  2. Httpd.confファイルで、LoadModule定義の先頭に行を追加して、モジュールをアクティブ化します。どのディストリビューションが重要かはわかりませんが、ArchではLoadmodule fcgid_module modules/mod_fcgid.so

  3. Httpd.confに新しいセクションを追加します。これをcgid_moduleセクションのすぐ下に配置しましたが、場所は任意であると確信しています。

    <IfModule fcgid_module>
      AddHandler fcgid-script .fgci
    </IfModule>
    
  4. 私の理解では、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は正しくセットアップされています。

9
sdellysse

Apacheは必要に応じて指定されたfcgiプロセスを生成しますか?アパッチと一緒に始めますか?

Apacheがそれらを生成します。 httpd.confで生成するプロセスの最小数と最大数を設定できます。これにより、受信リクエストの量に基づいて、新しいプロセスが生成され、古いプロセスが強制終了されます。リクエストが届く限り、プロセスは実行され続けます。

1
user44700

Passenger を使用してRailsアプリケーションを処理することを検討する必要があります(Rails ActiveRecordなどの機能を使用していない場合でも)) 。多くのWebサイトが実行されています(さらに、Rails Enterprise、メモリが少なく、パフォーマンスが優れています)

1
Zepplock

Apacheは、fastcgiインターフェイスを使用してそれらを生成する必要があります。ただし、しばらくの間は実行されたままになりますが、Apacheによって終了される前に、各プロセスが複数のリクエストを処理することが期待されます。

0
Michael Graff