1

アプリケーションをdjango1.2から1.4にアップグレードしようとしています。これは、組み込みのWebサーバーで正常にテストされています。

ただし、Apache(Ubuntu)を使用してVirtualHostとしてデプロイする際に問題が発生します。

私のsites-available/default内容:

<VirtualHost *:80>
    ServerName myapplication

    WSGIScriptAlias / /usr/share/myapplication/wsgi.py
    WSGIDaemonProcess myapplication python-path=/usr/share/myapplication:/usr/lib/python2.6/dist-packages

    <Directory /usr/share/myapplication>
    <Files wsgi.py>
      Order deny,allow
      Allow from all
    </Files>
    </Directory>

</VirtualHost>

ファイル/usr/share/myapplication/wsgi.pyには標準が含まれています。

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapplication.settings")
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()

Apacheは正常に起動しますが、に行くとhttp://myapplication「500:Internal Server Error」が表示され、apacheログに次のように表示されます。

ImportError: Could not import settings 'WCReporter.settings' (Is it on sys.path?): No module named WCReporter.settings

WSGIDaemonProcessを正しく使用していますか?djangoのドキュメントは明確ではありません。

ありがとう

4

2 に答える 2

3

これは、 http://rc98.net/django_wsgiから次のように解決しました。

サイト-利用可能/デフォルト:

<VirtualHost *:80>
    ServerName myapplication

    WSGIDaemonProcess myapplication
    WSGIProcessGroup myapplication

    WSGIScriptAlias / /usr/share/myapplication/wsgi.py
    <Directory /usr/share/myapplication>
    <Files wsgi.py>
      Order deny,allow
      Allow from all
    </Files>
    </Directory>

</VirtualHost>

およびwsgi.py:

import os,sys

path = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
if path not in sys.path:
    sys.path.append(path)

path = '/usr/share/myapplication'
if path not in sys.path:
    sys.path.append(path)

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "myapplication.settings")

from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
于 2012-05-25T13:01:21.530 に答える
1

実行時にパスを印刷できますか?

#init.py

    import sys
    print sys.path
  1. プロジェクトのベースディレクトリにinitファイルがありますか?
  2. myapp.settingsの代わりに設定をインポートすると機能しますか?
于 2012-05-25T10:22:30.983 に答える