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 django-users+unsubscr...@googlegroups.com.
To post to this group, send email to django-users@googlegroups.com.
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