2

Djangoプロジェクトを本番サーバーで実行しようとしています。

私はpipを使用して環境をセットアップしているので、すべてが正常に実行されている開発環境と同じです。唯一の違いは、本番環境で実行されるのはこのプロジェクトだけであるため、本番環境ではvirtualenvを使用しないことです。また、本番環境では、静的コンテンツを提供するNginxリバースプロキシがあり、動的リクエストをApache2に渡します。

Apachewsgiファイルは次のとおりです。

import sys, os

sys.path.append('/home/project/src')

os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

サーバーにアクセスすると、インポートエラーが発生します。

ImproperlyConfigured: Error importing middleware middleware: "cannot import name UserProfile"

これは、設定によって参照されるsrc/フォルダーの下のmiddleware.pyを参照します。ただし、。/manage.pyシェルプロンプト内からミドルウェアとUserProfileクラスの両方をインポートできます。

wsgiファイルのパスに問題があるようですが、何がわかりません。ディレクトリ構造は次のとおりです。

/home/project
/home/project/src (which contains the settings.py, middleware.py and app folders)
/home/apache/apache.wsgi

どんな助けでも大歓迎です。

ありがとう、oMat

4

2 に答える 2

3

ユーザーがそれらを読み取ることができる必要がある場合に備えて、別のユーザーでデーモンモードを実行している場合を除き、Apache ユーザーがアクセスできるように、すべてのディレクトリ/ファイルが他のユーザーによって読み取り可能であることを確認してください。また読む:

http://blog.dscpl.com.au/2010/03/improved-wsgi-script-for-use-with.html

役に立たないかもしれませんが、最後に説明されている WSGI スクリプト ファイルの内容により、プロセス環境が Django 開発サーバーの動作に近いものに設定されていることが保証されます。

于 2010-06-18T00:59:46.670 に答える
1

自分のファイルを見て、プロジェクトを含むディレクトリを追加し、project.settingsを指定します。settings

試す:

import sys, os

sys.path.append('/home/')
sys.path.append('/home/project/')

os.environ['DJANGO_SETTINGS_MODULE'] = 'project.settings'
import django.core.handlers.wsgi
application = django.core.handlers.wsgi.WSGIHandler()

~/django-sites代わりにそれを指定するためにのようなものを作った方が良いでしょう/home

于 2010-06-18T01:03:40.850 に答える