[前][次][番号順一覧][スレッド一覧]

rails:1451

From: Tatsuki Sugiura <sugi@n...>
Date: Thu, 03 Aug 2006 09:04:12 +0900
Subject: [rails:1451] Re: Apache2 + fcgi

杉浦です。

>>> In Message "[rails:1449] Apache2 + fcgi"
>>>            <20060803060753.813E.SWALLOW@r...>,
>>> "swallow@r..." <swallow@r...>  said;
> インストールしたパッケージはそれぞれソースからで
> fcgi-2.4.0
> mod_fastcgi-2.4.2
> ruby-fcgi-0.8.6
> となっております。

ruby-fcgi は 0.8.7 をお勧めします(gem で入るようにしました)。
……というのはさておき。

<Snip...>
> webrickの場合はこれで問題がなかったのですが、fcgi経由でアクセスしたとこ
> ろ、ブラウザに
> Application error

> Change this error message for exceptions thrown outside of an action
> (like in Dispatcher setups or broken Ruby code) in public/500.html
> と漠然としたエラーが出るだけで、RAILS_ROOT/logにも、apacheのログにも有力
> な情報が出ておりません。

そう言う時は、取り敢えず apache の loglevel を上げてみると
役に立つかもしれません。

  LogLevel info

これでも出力がなければ debug まで。

あと、FCGI (と言うかモジュールの初期化タイミングで実行される処理)は
VirtualHost の error.log ではなくて、メインサーバの erorr.log に
出力されます。両方ともチェックしておきましょう。

> アプリケーション自体は全く変更を行っておらずfcgi用に設定を変更した部分と
> いたしましては、

> httpd.confの、
> LoadModule fastcgi_module     modules/mod_fastcgi.so
> <IfModule mod_fastcgi.c>
>     FastCgiIpcDir /tmp/fcgi_ipc/
>     FastCgiServer /myapproot/public/dispatch.fcgi \
>         -initial-env RAILS_ENV=development \
>         -processes 15 -idle-timeout 60
> </IfModule>

切り分けの為に、一時的に固定サーバではなくて動的起動モードを
使ってみると、もうちょっと原因が分かるかもしれません。
FastCgiServer を消して、

  AddHandler fastcgi-script .fcgi

にしてみてください。
# 実運用では固定サーバの方が早いので、あとで戻してください。

<Snip...>
> 1つ気になる部分といたしましては、apachectl start をrootでやった際に、
> /tmpの下にfcgi_ipcというディレクトリが作成され、移行stopなどを実行すると、
> Syntax error on line 98 of /etc/httpd/conf/httpd.conf:
> FastCgiIpcDir /tmp/fcgi_ipc: access for server (uid -1, gid -1) failed:
> read not allowed
> とエラーが出るため仕方無しにこのディレクトリのパーミッションの設定を変更
> していることです。

Fedora だと設定の読み込みの順のせいでこの問題が出るそうです。
-> http://wiki.rubyonrails.com/rails/pages/RailsOnFedora
chmod 777 にして起動してすぐ戻す、もしくは、User/Group の設定を
上の方へ持ってくると言う解決法が載ってますね。

ところで、パーミッションの変更は具体的にはどんなものでしょう?
基本的には apache の動作ユーザから読み書きできる様になっていれば
大丈夫なんですが……。

##
ついでに、これは今回の問題には関係ないですが、出来ればセキュリティ
など色々考えると /tmp/fcgi_ipc よりも /var/tmp/fcgi とか
/var/httpd/fcgi_ipc とか何でも良いですが、再起動で消えないところに
置くのをお勧めします。
# tmpwatch にソケット消された、とか言う話もありますし ;(

-- 
Tatsuki Sugiura   mailto:sugi@n...

--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      1449 2006-08-02 23:59 [swallow@r...        ] Apache2 + fcgi                          
->    1451 2006-08-03 02:04 ┣[sugi@n...           ]                                       
      1452 2006-08-03 02:08 ┣[moda@a...           ]                                       
   @  1453 2006-08-03 02:17 ┣[h.tsutsumi@g...     ]                                       
      1454 2006-08-03 03:52 ┗[stoyan@g...         ]                                       
      1460 2006-08-03 20:37  ┗[swallow@r...        ]