Apacheとmod_wsgiを使用してlinodeサーバーにDjangoアプリケーションをデプロイしようとしています。
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 [email protected]
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
私はそれを動かすことができません。アイデア?
すべてのモジュール/パッケージエントリとインポートを変更してプロジェクト名を除外するか、/srv/www/site.com
をsys.path
にも入れます。
私は2番目のIgnacioVazquez-Abramsの answer 。 プロジェクトディレクトリへのパスと、その親ディレクトリへのパスを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()
Ayazの答えを2番目に。指定するパスが検索パスの先頭にあることが重要です。つまり、insert。を使用する必要があります。
これが私のものです。 「追加」を実行しているときに、断続的な問題が発生していました。これはそれを堅実にしました。お役に立てれば。
sys.path.insert(0, '/srv/www/Appname')
sys.path.insert(1, '/srv/www')
このチュートリアルに従ってみてください- 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()
私にとってこのエラーを修正したもの-
Settings.pyの変更元:
ROOT_URLCONF = 'urls'
これに:
ROOT_URLCONF = 'myproject.urls'
あなたがいるところdjproj.urls
たぶんurls
だけ試してみてください