Academy

From Jon's Wiki
Revision as of 02:33, 15 January 2013 by Johnno (talk | contribs)

Hizees! We're going to hack on Mezzanine, a Django Content Management System (CMS).

Install Mezzanine

Firstly, install and start a Python virtual environment:

sudo apt-get install python-virtualenv

once installed, create an environment for Mezzanine:

cd ~
virtualenv mezzanine-env
cd mezzanine-env
source bin/activate

You should now be in a Python virtual environment. This will isolate your Python libraries from the system's ones in case stuff breaks. Now install some dependencies:

sudo apt-get install python-dev
pip install django pil filebrowser-safe bleach grappelli-safe django-compressor pytz pyflakes pep8

Then grab it from github:

git clone https://github.com/stephenmcd/mezzanine.git

You should have a directory structure something like:

~
|
|__ mezzanine-env      - the Python virtual environment
    |
    |__ mezzanine      - the Mezzanine application (cloned from github)

Running the github version of Mezzanine

The instructions assume you're not a hacker wanting to work on the codebase. Consequently, we need to wire up the github version. First, get the bin directory on your path, so at your shell prompt:

export PATH=/home/USERNAME/mezzanine-env/mezzanine/mezzanine/bin:$PATH

Then, we're going to hack-a-saurus a wee shell script in ~/mezzanine-env/mezzanine/bin/mezzanine-project:

#!/bin/sh
export PYTHONPATH=/home/USERNAME/mezzanine-env/mezzanine:$PYTHONPATH
python $(dirname $0)/mezzanine_project.py $*

Then make it executable:

chmod +x ~/mezzanine-env/mezzanine/bin/mezzanine-project

Now you should be able to create your own new Mezzanine project, inside your Python virtual environment:

cd ~/mezzanine-env
mezzanine-project hogwarts-blog

Now, we need something in PYTHONPATH so that Python knows where to find Mezzanine:

export PYTHONPATH=/home/$USER/mezzanine-env/mezzanine:$PYTHONPATH

Now we can use manage.py to run the project:

cd hogwarts-blog
python manage.py createdb
python manage.py runserver

Now go to http://127.0.0.1:8000/ in your browser!