I'm trying to deploy my Django application on my linode server with apache and mod_wsgi.
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
When I visit / of my site I get this error:
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
I can't get it to work. Ideas?
What corrected this error for me --
Changing settings.py from:
ROOT_URLCONF = 'urls'
To this:
ROOT_URLCONF = 'myproject.urls'
try following this tutorial - http://singlas.in/5-step-tutorial-for-using-django-with-apache-and-mod_wsgi/
Make sure to add both Django directory and Django Project Directory to system path. your wsgi.py should look like
I second Ignacio Vazquez-Abrams's answer. You must add the path to your project directory as well as the path to its parent directory to
sys.path
. Here is an example of the WSGI script file I use. I keep the file inside the project directory.Either change all your module/package entries and imports to exclude the project name, or put
/srv/www/site.com
insys.path
as well.Seconding ayaz' answer. It's important that the paths you're specifying be at the beginning of the search path, which means you need to use insert..
Here's mine. When I was doing an 'append' I was getting intermittent issues. This made it rock solid. Hope this helps.
where you have
djproj.urls
maybe try justurls