FastCGIとRubyでApacheを設定するにはどうすればよいですか?


9

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

概念的には、私はそれに苦労しています。Apacheは指定されたfcgiプロセスを必要に応じて生成しますか?サイドApacheと一緒に起動しますか?基本的に、私は適切な質問をすることができるようになるように努力していますので、タイトルが誤解を招くものである場合はお詫びします。

回答:


9

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

  1. 基本fastcgi apacheモジュールがインストールされていることを確認します。私と同じように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モジュールによって処理されるようになります。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は正しく設定されています。


1
ああ。マークダウンは私にこの投稿でいくつかの本当の問題を与えています。
sdellysse、2010年

コードがリストに埋め込まれているため、4つのスペースインデントでは不十分です。私はそれを8つのスペースで動作させました。
オーガスティン2010

1
面白い。だから、それから1はできちんと.RBファイルを扱うことができる<Directory>でディレクティブ<VirtualHost>言う、コンテキスト- AddHandler fcgi-script .rb及びFCGIWrapper /path/to/ruby .rb(ウェブスクリプトのhashbang要件を削除します)。そして多分Options ExecCGI。これを試してみるかもしれません。
Benji XVI

ArchLinuxで、 'mod_fcgid'がAUR以外のエクストラで利用できるようになりました
Aaron Thomas

1

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


質問で指定されているように、私はレールを使用していません。しかし、いずれにせよありがとう。
sdellysse、2010年

1
ちなみに、Phusion PassengerはRailsアプリケーションを実行するだけではありません。ラックにも対応。したがって、Webアプリケーションがラックを使用している場合は、Phusion Passengerでそれをデプロイしてみることができます。
joschi

1

Apacheは指定されたfcgiプロセスを必要に応じて生成しますか?サイドApacheと一緒に起動しますか?

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


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.