For future reference, as I assume you have moved on...
It is possible to use Django on GoDaddy hosting, using VirtualEnv as they recommend. Python 2.7 is natively installed and works fine, though it isn't the default version to be run.
- Enable SSH access on your site.
- Use the hosting panel to setup your intial MySQL database. It doesn't need any entries, just make sure it exists and note down the connection info.
- SSH in, download VirtualEnv.py. You may get the entire tarball, but you only need the single file.
- Run '/usr/bin/python2.7 virtualenv.py --system-site-packages your_new_env'
- Run 'source your_new_env/bin/activate'
- Run 'pip install django'
- You can now follow the django tutorials directly, except of course not using runserver (as you already have a webserver running)
This works for me on a deluxe account, though I would still recommend that anyone who definitely wants to use Django seek alternate hosting. GoDaddy is not very friendly, and I am not certain that everything will continue to work.
EDIT
I realized there may also be some confusion in how to get Django running normally inside Apache, without the regular mod_* options. This was my approach:
- Create your django project somewhere outside of the html directory structure. For example run django-admin in ~/code to create ~/code/yoursite
- Follow the normal project and database setup as described in the Django tutorials.
- From your virtual python environment, run 'pip install flup'.
Create the following script 'django_cgi.py' inside ~/code (Note the python path!):
#!~/your_new_env/bin/python
import sys, os
# Add a custom Python path for your project
sys.path.insert(0, "/must/be/full/path/to/code/yoursite")
# Set the DJANGO_SETTINGS_MODULE environment variable.
# This should match the name for the project you added to the path above
os.environ['DJANGO_SETTINGS_MODULE'] = 'yoursite.settings'
from django.core.servers.fastcgi import runfastcgi
runfastcgi(method="threaded", daemonize="false")
Inside ~/html, create or edit the .htaccess file with some variant of the following:
RewriteEngine On
RewriteCond %{REQUEST_URI} !=/mysite.cgi
RewriteRule ^(.*)$ /mysite.cgi [QSA,L,PT]
Finally, create ~/html/mysite.cgi as follows:
#!/bin/sh
~/your_new_env/bin/python ~/code/django_cgi.py 2>&1
- Ensure everything is chmod'ed appropriately (755)
This is over simplified but functional, and should result in every request for any page or file being passed off to Django.
The reason for this runaround is that GoDaddy provides only native CGI support for old versions of Python we can't use, so we must use our virtual environment. While we cannot use that directly in the CGI scripts, we can fortunately run a shell script and invoke it manually. The mod_rewrite rule just ensures all traffic goes through Django.
References
Django with FastCGI
Start of Django Tutorials
VirtualEnv