web-dev-qa-db-ja.com

デーモン化されたときにApache / mod_wsgiで実行されているDjangoアプリのファイルアップロードの問題

Mod_wsgiを使用してApache2(linux)で実行されているDjangoアプリがあり、デーモンモードで実行するとファイルのアップロードが失敗しますが、pythonインタープリターが埋め込まれていると機能します。これを引き起こしている可能性のあるものと、それを修正する方法について何か考えはありますか?

次のApache構成が機能しています。

<VirtualHost *:80>
  ServerName mysite.com
  DocumentRoot /var/www/

  Alias /media/ /var/www/media/

  <Directory /var/www/>
    Options -Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    allow from all

    Include /etc/Apache2/yslow_optimizations.conf
  </Directory>

  WSGIScriptAlias / /var/djangoapp/Apache/Django.wsgi

  <Directory /var/djangoapp/Apache/>
    Order allow,deny
    Allow from all
  </Directory>

  ErrorLog /var/log/Apache2/mysite.error.log
  CustomLog /var/log/Apache2/mysite.access.log combined
</VirtualHost>

しかし、wsgiプロセスをデーモン化するために次のディレクティブを追加すると、ファイルのアップロードはすぐに失敗します。

WSGIDaemonProcess mygroup display-name=%{GROUP} inactivity-timeout=600
WSGIProcessGroup mygroup

Apacheエラーログには何も表示されていません。

DjangoフォームはFileFieldを使用しており、form.is_valid()を実行すると「このフィールドは必須です」というエラーが表示されます。ビューには@login_requiredデコレータがあります。これはすべて正常に機能しています。埋め込みモードで実行している場合。

デーモンとして実行すると、Apacheのリロードが必要な埋め込みの場合よりも、コードをより適切に(wsgiファイルに触れるだけで)更新できるため、可能であればそれをお勧めします。

更新:これはFireFoxではなくOperaで発生します。

3
Tom

推測では、最新のmod_wsgi 2.Xバージョンを実行しておらず、Operaブラウザを使用しています。

OperaおよびHTTP100の使用に関する既知の問題があります-mod_wsgiデーモンモードを使用している場合は続行します。この問題はmod_wsgi2.4で修正されました。

使用しているmod_wsgiのバージョンや使用しているブラウザはわかりませんが、これは推測にすぎません。

3