I was looking for the answer to this today and I wrote a tutorial on how to 
do this based on all the stuff I found on the net:

With the economy class Linux hosting its a bit tricky. For starters you 
don't have root access to the site packages so you cannot install for 
example MySQL-Python.

1. Godaddy has virtualenv installed, so first, create a virtual environment 
venv: (I use $HOME/lib/ for all the installed stuff below)

cd ~/
mkdir lib
cd lib
virtualenv --no-site-packages venv

The python package folder is $HOME/lib/venv/lib/python2.7/site-packages

2. Install the latest Django through pip

pip install Django

3. Create a new project

django-admin.py startproject mysite

4. Change the database configuration in mysite/setting.py file. When 
setting the path for the database file, please use the absolute path:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', 
        'NAME': 
'/var/chroot/home/content/11/10420811/lib/venv/mysite/mydatabase.db',           
           
        'USER': '',
        'PASSWORD': '',
        'HOST': '',                    
        'PORT': '',                     
    }
}

While in here there are a few other things to consider changing:

   - ADMINS = can be updated with your info
   - TIME_ZONE = 'America/Toronto'
   - LANGUAGE_CODE = 'en-ca'
   - STATIC_ROOT = 
   '/var/chroot/home/content/11/10420811/lib/venv/mysite/static/'
   - Uncommenting admin in INSTALLED_APPS : 'django.contrib.admin',
   
This will save you some setup later!

5. Set the Locale information in $HOME/.bash_profile file, otherwise you 
cannot set the superuser when you sync the database. You can edit the file 
with vim:

 export LANG=en_US.UTF-8
 export LC_ALL=en_US.UTF-8

6. Now run the script using the script command:

source ~/.bash_profile

7. If everything is setup properly, you should be able to sync the database:

python2.7 manage.py syncdb

You should see the admin tables get created and it will ask you to create a 
new user.

8. Now we setup the dispatch functionality so we can access the webpage 
without running server through Django using flup. So download and untar 
flup:

cd ~/lib/venv/lib/python2.7/site-packages
wget 
http://pypi.python.org/packages/source/f/flup/flup-1.0.2.tar.gz#md5=24dad7edc5ada31dddd49456ee8d5254
tar -xvzf flup-1.0.2.tar.gz
mv flup-1.0.2/flup/ .

9. In $HOME/html folder, create dispatch.py and add the following lines of 
code:

#!/usr/local/bin/python2.7
import sys, os
sys.path += ['/your/home/path/lib/venv/lib/python2.7/site-packages']
sys.path += ['/your/home/path/lib/mysite/']
os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'

from flup.server.fcgi import WSGIServer
from django.core.handlers.wsgi import WSGIHandler
WSGIServer(WSGIHandler()).run()

Also do a chmod +x dispatch.py to make the python script executable!

10. In $HOME/html/.htaccess file, add the following codes:

AddHandler fcgid-script .fcgi
Options +FollowSymLinks
RewriteEngine On
RewriteBase /

# everything else sent to django
RewriteRule ^(dispatch\.py/.*)$ - [L]
RewriteRule ^(.*)$ dispatch.py/$1 [L]

Another good thing to note is that you can ReWrite URLS if you have current 
applications isntalled, ie.e dokuwiki.

#Add this above "everything else sent to django"
#Below other folders with static content and PHP , etc..
#hosted at yourdomain/dokuwiki
RewriteRule ^(dokuwiki/.*)$ - [L]

#You can also create your "django" project at a different location rather than 
your domain root by changing the 2nd RewriteRule , i.e.:

# everything else sent to django
RewriteRule ^(dispatch\.py/.*)$ - [L]
RewriteRule ^(djangoproj/.*)$ dispatch.py/$1 [L]
#Make sure to create the djangoproj folder inside your html dir, cd html; mkdir 
djangproj
#This becomes a bit annoying because your urlpatterns in url.py will now always 
have to include 'djangoproj' at the beginning.

11. Update your urls.py file to look like so:

from django.conf.urls import patterns, include, url
from django.conf import settings
# Uncomment the next two lines to enable the admin:
from django.contrib import admin
admin.autodiscover()

urlpatterns = patterns('',
    (r'^static/(.*)$', 'django.views.static.serve', {'document_root': 
settings.STATIC_ROOT}),
    url(r'^admin/', include(admin.site.urls)),
)

This will ensure you can access the admin application, as well as the 
static root where all your img js and css are. Also note to copy the admin 
img/js/css from /django/contrib/admin/static. Mine was in

~/lib/venv/lib/python2.7/site-packages/django/contrib/admin/

I used cp -r to copy it over to my application static dir
/var/chroot/home/content/11/10420811/lib/venv/mysite/static/

cp -r ~/lib/venv/lib/python2.7/site-packages/django/contrib/admin/ 
~/lib/venv/mysite/static/

12. That is it, you should have access to your site now! Access to 
http://your.website.com/adminshould work!

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to