13

Djangoアプリケーションをapacheとmod_wsgiを使用してlinodeサーバーにデプロイしようとしています。

file: /srv/www/example.com/djproj/django.wsgi

import os
import sys

sys.path.append('/srv/www/example.com/djproj')

os.environ['PYTHON_EGG_CACHE'] = '/srv/www/example.com/.python-egg'
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

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

file: /etc/apache2/sites-available/example.com

/etc/apache2/sites-available/example.com
ServerAdmin admin@example.com
ServerName example.com
ServerAlias www.example.com

DocumentRoot /srv/www/example.com/public_html

WSGIScriptAlias / /srv/www/example.com/djproj/django.wsgi

<Directory "/srv/www/example.com/djproj">
   Order allow,deny
   Allow from all
</Directory>

ErrorLog /srv/www/example.com/logs/error.log 
CustomLog /srv/www/example.com/logs/access.log combined

私が自分のサイトの/にアクセスすると、このエラーが発生します:

Environment:


Request Method: GET
Request URL: http://example.com/

Django Version: 1.3
Python Version: 2.6.6
Installed Applications:
['django.contrib.auth',
 'django.contrib.contenttypes',
 'django.contrib.sessions',
 'django.contrib.sites',
 'django.contrib.messages',
 'django.contrib.staticfiles']
Installed Middleware:
('django.middleware.common.CommonMiddleware',
 'django.contrib.sessions.middleware.SessionMiddleware',
 'django.middleware.csrf.CsrfViewMiddleware',
 'django.contrib.auth.middleware.AuthenticationMiddleware',
 'django.contrib.messages.middleware.MessageMiddleware')


Traceback:
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-    py2.6.egg/django/core/handlers/base.py" in get_response
  101.                             request.path_info)
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py    2.6.egg/django/core/urlresolvers.py" in resolve
  250.             for pattern in self.url_patterns:
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/core/urlresolvers.py" in _get_url_patterns
  279.         patterns = getattr(self.urlconf_module, "urlpatterns", self.urlconf_module)
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/core/urlresolvers.py" in _get_urlconf_module
  274.             self._urlconf_module = import_module(self.urlconf_name)
File "/usr/local/lib/python2.6/dist-packages/Django-1.3-py2.6.egg/django/utils/importlib.py" in import_module
  35.     __import__(name)

Exception Type: ImportError at /
Exception Value: No module named djproj.urls

動作させることができません。アイデア?

4

6 に答える 6

36

私は2番目のIgnacioVazquez-Abramsの答えです。プロジェクトディレクトリへのパスと、その親ディレクトリへのパスをに追加する必要がありますsys.path。これが私が使用するWSGIスクリプトファイルの例です。ファイルをプロジェクトディレクトリ内に保持します。

import os
import sys

sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../../")))
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "../")))

os.environ["DJANGO_SETTINGS_MODULE"] = "PROJECT_NAME.settings"

from django.core.handlers.wsgi import WSGIHandler
application = WSGIHandler()
于 2011-04-30T13:12:24.457 に答える
25

すべてのモジュール/パッケージエントリとインポートを変更してプロジェクト名を除外するか/srv/www/site.comsys.path同様に入力します。

于 2011-04-30T11:50:25.267 に答える
11

ayazの答えを2番目に。指定するパスが検索パスの先頭にあることが重要です。つまり、insert.を使用する必要があります。

これが私のものです。「追加」を実行しているときに、断続的な問題が発生していました。これはそれを堅実にしました。お役に立てれば。

sys.path.insert(0, '/srv/www/Appname')
sys.path.insert(1, '/srv/www')
于 2011-12-21T18:30:14.967 に答える
5

このチュートリアルに従ってみてください-http://singlas.in/5-step-tutorial-for-using-django-with-apache-and-mod_wsgi/

必ずDjangoディレクトリとDjangoプロジェクトディレクトリの両方をシステムパスに追加してください。wsgi.pyは次のようになります

import os,sys

#comments
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "django_project.settings")
sys.path.append('/path/to/your/django/directory/django_project')
sys.path.append('/path/to/your/django/directory')

#comments
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
于 2013-07-22T20:08:16.133 に答える
2

私にとってこのエラーを修正したもの-

settings.pyを次の場所から変更します。

ROOT_URLCONF ='urls'

これに:

ROOT_URLCONF ='myproject.urls'

于 2012-04-03T20:05:11.713 に答える
1

djproj.urlsたぶんあなたがちょうど試してみたところurls

于 2011-04-30T11:51:41.160 に答える