2

Django Web サイトをホストするために ec2 インスタンスを実行しています。Web サイトは、mod_wsgi を使用して Apache によって提供されています。

数日前から、開発中の新しい Web プラットフォームをデプロイしようとしていますが、解決できないと思われる問題に直面しています。セキュリティ上の理由から、パスワードなどのユーザーの個人情報を保護するためにscrypt 0.4を使用しています。

開発サーバーではすべてがうまく機能しますが、ライブ サーバーにデプロイすると 500 Internal Server エラーが発生します。Apache ログには次のメッセージが表示されます

スクリプト ヘッダーの早期終了: socialmarketingplatform.wsgi、リファラー:

scrypt モジュールが使用されている行のコメントを外すと、すべて正常に動作します。また、scryptを有効にしてDjangoに付属のサーバーを実行すると、すべてがライブサーバーで機能します。したがって、エラーを生成するのは mod_wsgi、django、および scrypt の組み合わせです。

次の wsgi ファイルを使用しています。

import os
import sys

path = '/var/www/vhosts/[sub_domain]'
if path not in sys.path:
    sys.path.append(path)
sys.path.append(path + '/socialmarketingplatform')
os.environ['DJANGO_SETTINGS_MODULE'] = 'socialmarketingplatform.settings'

import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

そして、次の仮想ホスト構成:

<VirtualHost *:80>
    #Basic setup
    ServerAdmin [removed email]
    ServerName luxdevelopment.net
    ServerAlias [sub domain]
    DocumentRoot /var/www/vhosts/[sub domain]/socialmarketingplatform/

    Alias /media/admin /usr/lib/python2.6/site-packages/Django-1.3-py2.6.egg/django/contrib/admin/media
    Alias /media /var/www/vhosts/[sub domain]/socialmarketingplatform/media
    <Location media="">
        SetHandler None
    </Location>

    LogLevel warn
    ErrorLog  /var/log/httpd/smp_error.log
    CustomLog /var/log/httpd/smp_access.log combined

    WSGIDaemonProcess luxdevelopment.net user=apache group=apache threads=25
    WSGIProcessGroup luxdevelopment.net

    WSGIScriptAlias / /var/www/cgi-bin/socialmarketingplatform.wsgi
</VirtualHost>

誰かがこの問題で私を助けてくれることを願っています。さらに質問がある場合はお知らせください。

4

1 に答える 1

1

見る:

http://code.google.com/p/modwsgi/wiki/FrequentlyAskedQuestions#Apache_Process_Crashes

「スクリプトヘッダーの早期終了」というメッセージは、通常、コードがデーモンプロセスをクラッシュさせていることを示しています。これは、メインのApacheエラーログファイルでセグメンテーション違反または同様のメッセージを探すことで確認できます。メインのApache構成とVirtualHostで「LogLevelinfo」を有効にすると、mod_wsgiはデーモンプロセスの再起動についてより多くのログを記録します。

そのデーモンプロセスグループでアプリケーションのみを実行している場合の簡単な解決策は、次を追加することです。

WSGIApplicationGroup %{GLOBAL}

これは、サブインタープリターで動作するように適切に記述されていないPython用の壊れたサードパーティ拡張モジュールによって引き起こされるクラッシュを回避します。

それ以外に、FAQで説明されているように、共有ライブラリのバージョンの不一致が発生する可能性があります。

于 2011-04-05T23:48:46.297 に答える