web-dev-qa-db-ja.com

trac:mod_fcgidおよびmod_suexecを使用した「内部サーバーエラー(500)」

シェルアクセスのある共有サーバーでTracをセットアップしようとしていますが、SWはTrac 1.0.1、Python 2.6.6、Apache 2.2.15、mod_fcgidおよびmod_suexec)です。

ホスティング業者のwikiの指示に従って設定しました https://uberspace.de/dokuwiki/cool:trac 。唯一の違いは、私のTRAC_ENVディレクトリが私の家に直接ではなくサブディレクトリにあることです(つまり、〜/ tracではなく〜/ path/to/trac)。 (そして、次のように、DocRootでtrac.fcgiの名前をfoo-trac.fcgiに変更しました。しかし、名前をtrac.fcgiに戻してみました。)

そこに書かれているように、trac.fcgiをTRAC_ENV/deploy/cgi-bin /から$ DocRoot/foo/foo-trac.fcgiにコピーして(そしてtrac.cgiでも試してみました)追加しました

Options +ExecCGI
AddHandler fcgid-script .fcgi   # also tried "AddHandler cgi-script .cgi"
RewriteEngine On
RewriteBase /foo
RewriteRule ^$ foo-trac.fcgi  [L]   # also tried foo-trac.cgi
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule (.*) foo-trac.fcgi/$1  [QSA,L]  # also tried foo-trac.cgi

$ DocRoot/foo /.htaccessに移動します。

TRAC_ENVはfoo-trac.f?cgiで正しく設定されています(絶対パスは/から始まります)。

しかし今のところ、「500 Internal Server Error」しか表示されず、error_logに次のように表示されます。

(104)Connection reset by peer: mod_fcgid: error reading data from FastCGI server
Premature end of script headers: foo-trac.fcgi

(fcgiを使用)それぞれ

suexec failure: could not open log file
fopen: Permission denied
Premature end of script headers: foo-trac.cgi

(cgiを使用)。

すべての.f?cgiファイル、それらのディレクトリ、.Egg_cacheディレクトリ(私はそれをmkdirしましたが、存在せず、trac(またはpython)自体によって作成されませんでした)およびログディレクトリもモード0755です。ログファイルは0644です(私は試してみました)。

(まあ、Apacheのログディレクトリとファイルはrootが所有しています(グループも)。しかしもちろん、私はそこに自分でログを書き込もうとはしていません。TRAC_ENV/ log /と〜/ log /は私のものであり、また、モード777(dir)をそれぞれ666(trac.log)に設定しようとしました-役に立たないので、そのモードを再び755/644に戻しました。)

http://encodable.com/internal_server_error/ と/ suexec_problems /からのヒントもすでに試しましたが、何も機能しません。

問題を検索するためのヒントwhere(suexecのようですが、おそらく書き換えルールです;しかし/および)、どのようにそれを発見するのですか?それとも誰かが直接解決策を持っていますか? :)

よろしく、

パンネ

1
panne

まあ、私は答えを持っています。

そして、私は謝罪しなければなりません:それは http://encodable.com/internal_server_error/ のヒントの1つでしたが、-そして私は信じるほど素朴でしたが、行末は正しいに違いありません(Unixスタイル、[〜#〜] not [〜#〜]WindowsのようなCR/LFエンディング)、私はLinuxのみを使用しているためです。

そして、私は、trac pojectから壊れたファイルを取得するとは思っていませんでした...しかし、それを見つけた私のホスティング業者uberspace.deのサポートのおかげで、そうです。 :)

したがって、単純なdos2unix trag.fcgi問題を解決しました-しかし、TRAC_ENVディレクトリ全体とライブラリ(私の場合は〜/ lib/python2.6 /)には多くのCRLF終了ファイルがあるので、次のようなものをお勧めします

for file in $( find $TRAC_ENV $LIB_DIR -type f | xargs file | grep -i text | grep CRLF | cut -d\: -f1 ); 
do 
   dos2unix $file
done

そして、あなたは再び幸せになるはずです! ;)

1
panne