Creating a django project on WebFaction using Python 2.7, virtualenv and virtualenvwrapper

Published 2012-06-19

Creating a django project on WebFaction using Python 2.7, virtualenv and virtualenvwrapper.

WebFaction offers a one-click install to get a django project off the ground. I’ve been using virtualenvwrapper locally to learn how to use the web framework. I wanted the same thing with WebFaction. I like trying to figure out things I am still learning to grasp I guess.

I was finally able to piece together how to go from zero to Congratulations on your first Django-powered page … after about 2 ½ hours.

Here’s what I did, with help from blog posts by Jamie Curle, Neil Lyons and “”

Jamie Curle helps us set WebFaction’s default python to version 2.7

# check your python version
python -V

# edit .bashrc
vi $HOME/.bashrc

# set the default python to 2.7
alias python=python2.7

# now :wq from vim and reload
sourcesource .bashrc

# make the python2.7 lib folder
mkdir $HOME/lib/python2.7

Neil Lyons helps us to install packages where we don’t have permission to

#using easy_install as you can specify the python version
easy_install-2.7  pip
easy_install-2.7  --install-dir=~/lib/python2.7  --script-dir=~/bin  virtualenv
easy_install-2.7  --install-dir=~/lib/python2.7  --script-dir=~/bin  virtualenvwrapper

Neil Lyons setups Virtualenv & Virtualenv Wrapper in our .bashrc

# edit your bash file
vi $HOME/.bashrc

# set the workonhome and virtualenvwrapper_python
export WORKON_HOME=$HOME/.virtualenvs
export VIRTUALENVWRAPPER_PYTHON=/usr/local/bin/python2.7

# change your user name here
source /home/<user name>/bin/

# :wq out of vim and reload
bash filesource .bashrc

If you do this correctly after you type the last command virtualenv will create all of it’s directory structure and files.

Neil Lyons makes a directory for virtualenvs

mkdir ~/.virtualenvs
mkvirtualenv <name-of-virtual-environment>
workon mysite
pip install django creates a WebFaction application and website and configures apache and wsgi

Start your django project

Change into your application folder. There should be 2 folders, “apache2” and “htdocs”

Create your django project startproject <PROJECT-NAME>

backup the httpd.conf from /webapps//apache2/conf.

scan the httpd.conf for “Listen XXX”. The XXX is your webapp port.

remove the … portion of code.

append the file to tell Apache to use a wsgi config file.

NameVirtualHost *:<webapp-port>
<VirtualHost *:<webapp-port>>
ServerName <SomeServerName>
WSGIScriptAlias / /home/<your-username>/webapps/<your-webapp-name>/apache2/conf/django.wsgi

create a django.wsgi in apache2/conf directory.

import os
import sys
import site

# Add path to site-packages in our virtualenv

from django.core.handlers.wsgi import WSGIHandler

sys.path = ['/home/<your-username>/webapps/your-webapp-name>/<your-django-project>'] + sys.path

os.environ['DJANGO_SETTINGS_MODULE'] = '<your-django-project>.settings'
application = WSGIHandler()