Simply Argh!

Monday, April 30, 2012

Bluehost is a cheap shared hosting provider, that allows to run applications using fastCGI, among others, webapps created with django - python web framework. In this post you will find information how to install the newest (in April 2012) versions of python and django and how to configure them for bluehost.

Rename the python binary (to avoid overriding current system python version - if you're not using default bluehost python for anything else you can skip this step):mv ~/python27/bin/python ~/python27/bin/python27
Add new python directory with binaries to your PATH environment variable. To do this edit .bashrc file in your HOME directory, for example with vim:vim ~/.bashrc
and add the line at the end of the .bashrc file:PATH=/homeX/your_username/python27/bin:$PATH
load the new settings:source .bashrc
and then test it:
python27
You should see something similar to:Python 2.7.2 (default, Apr 11 2012, 01:29:09)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-52)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>>

New python is available for you. Remember to use command python27 instead of python from now on.

Pip

We're going to use pip here - easy to use python package manager. It requires setuptools before it can be installed:

Django installation

Wait for download and installation process to complete. After that django is installed and command django-admin.py available. You will also probably need python driver for mysql database. Install it with pip:pip install MySQL-python
If you're going to use PosgreSQL install psycopg2 library:pip install psycopg2

Django configuration

Create django project:

django-admin.py startproject myproject

Decide what url should be used to access your django app. In my case it will be subdirectory:
http://somedomain.com/myproject

That's all. You should see your django start page on: http://somedomain.com/myproject. You can start coding some real stuff in django now. Remember to install every python and django packages using pip - that way they will be available to your django app. Also keep in mind that every django commands like syncdb, collectstatic etc. should be run using python27 for example:python27 manage.py syncdb