2009-06-03 9 views
0

この問題は、この問題の解決策を他の人が見つけやすいように、タイトルが付けられています。Apacheベースのファイルアップロード(swfupload)がApache/mod-wsgiで失敗する


私は、Apache/MOD-WSGI環境へのDjangoの開発サーバからプロジェクトを移行しようとする過程でいます。あなたが昨日私に尋ねたなら、私は移行が非常にスムーズに進んでいると言いました。しかし、サイトの一部はファイルのアップロードに依存しており、これで私は最も奇妙で怒っている問題を経験しています。問題の特定のページでは、ファイルを捕捉してサーバー側の処理を開始するurlにファイルと関連メタデータをPOSTするためにswfuploadを使用します。これは開発サーバーでは完全に動作しますが、Apache上でこのURLにPOSTするたびにDjangoリクエストオブジェクトが空になります。GET、POST、またはFILESデータはありません

私はWiresharkでスヌーピングすることでクライアント側の問題を排除しました。私が知る限り、根本的な原因はApacheの設定上の問題(おそらく、私がアクセスしようとしている一時的なファイルディレクトリに関係している)に由来しています。私はApacheの設定に相対的に新人です。これに対して何時間も頭を抱えています。

私のApacheの設定:

<VirtualHost *:80> 
ServerAdmin [email protected] 
ServerName sitename.com 
ServerAlias www.sitename.com 
LogLevel warn 
WSGIDaemonProcess sitename processes=2 maximum-requests=500 threads=1 
WSGIProcessGroup sitename 
WSGIScriptAlias//home/user/src/sitename/apache/django.wsgi 
Alias /static /home/user/src/sitename/static 
Alias /media /usr/share/python-support/python-django/django/contrib/admin/media 
</VirtualHost> 

私の直感が、これは私が私のDjangoのsettings.py('/home/sk/src/sitename/uploads/')で指定したファイルのアップロードディレクトリのパーミッションとは何かを持っているかもしれないということです、しかし、私のApacheのエラーログはデバッグするためにバンプされたログレベルであっても、ソートの何も示唆しません。

これをデバッグする方法についての提案はありますか?

+0

イメージに関連するdjangoの設定はどうですか、あなたはdjango側でそれをどのように扱いますか? – stefanB

+0

http://www.oluyede.org/blog/2007/03/18/django-image-uploading-validation-and-newforms/(おそらく時代遅れ)http://scottbarnham.com/blog/2007/07/31 /アップロード画像 - djangoで動的パス -/ – stefanB

+0

うーん、私はこれらのリンクの関連性に従うかどうかはわかりません。私は実際には(少なくともアバターなどの意味ではない)ユーザーが画像をアップロードしているわけではありません。また、swfuploadを使用しているので、Djangoの組み込みファイルアップロード処理(MEDIA_PATH、FileFieldなど)を使用していません。私のファイルは、最終的なストレージリポジトリに送られる前にtempディレクトリから後処理されます。 – bouvard

答えて

2

もう一つの可能​​性は、mod_wsgiの "古い"リリースのバグです(私は見つけて修正するのが夢中です)。このbug reportの詳細情報following hint(これはCLIでも動作し、-Hスイッチを使用しています)のおかげで修正されました(カールアップロード用)。

+0

これは、私が抱えている問題とまったく同じように聞こえ、Ubuntuでのmodwsgi出荷のバージョンではJauntyにはこの修正が含まれていません。私はOperaを使用していませんが、Flashも同様の動作をする可能性があります。あなたは勝者Mapioかもしれません。その場合、私はあなたにこれを指摘するためのビールをもっていると確信しています。私は今夜​​テストします。 :-) – bouvard

+0

あなたは、私の絶え間ない賞賛を持っています。あなたがカリフォルニアにいるなら、下に降りてください。私はあなたに1つ以上の義務を負っています。 – bouvard

+0

私はイタリアに住んでいますが、もし私がカリフォルニアで休暇を取ることができて幸運になることがあれば、私はあなたと共有することができます! – Mapio

3

通常、apacheはユーザー "www-data"として実行されます。読み取り/書き込みアクセス権がないと問題が発生する可能性があります。しかし、あなたの設定は、 '/ home/sk/src/sitename/uploads'にアクセスするためにApacheを使用していないようです。この設定ファイルからの私の理解は/静的または/メディアにヒットしない限り、ApacheはWGSIからそれを渡すので、Apacheのものではなく、それらのアクセス権とログをチェックするのが良いかもしれません。

+0

+1:それは常にアクセス許可です。常に。まれに、それがパーミッションでないときは、常にPYTHONPATHです。本当にまれなケースでは、PYTHONPATHではなく、別の場所にあるスペルミスのあるファイル名です。 –

+0

これらのコメントは私の直観に従います。私は今夜​​WSGIのアクセス許可についてさらに調査します。私はいくつかのバリエーションを試してみました。ログインユーザーとして実行するデーモンの設定(もちろんアクセス権限が必要です)が結果は同じでした。 – bouvard

+0

Hmmm、wsgiドキュメント(http://code.google。com/p/modwsgi/wiki/ConfigurationGuidelines)、Apacheがrootで起動していない場合、WSGIDaemonProcessコマンドのuserとgroupのパラメータは無視されます。それは問題かもしれません。その場合、私は明示的にwwwデータへのアクセスを '/ home/sk/src/sitename/uploads'に許可する必要があります。私はプログラマーで、システム管理者ではないことは間違いありません。 – bouvard

関連する問題