How I deploy Django via Buildout

I used to just jump in and develop my webapps in Django without giving any thought about how I'm going to deploy the project. I always maintained that I can worry about that later, and that it's either more important, or more fun to actually sit and write some code and put together that exciting new project. I'm sure there are many other that may share that sentiment. I mean, the deployment of the project is just a minor and final step, right? Not always.

After deploying my first and second, and then third webapps, I very quickly learned that, if you don't have at least some deployment strategy from the start of your project, then you might be creating a lot of unnecessary and extra work during actual deployment. This is even more true when you are working on a site that you will be updating on a regular basis in the future.

While working with a company on a couple of projects, I was introduced to zc.buildout. I started reading up on it and testing it in my own development environment. What I really liked about buildout, was that a single configuration can easily be replicated on multiple machines. It took me quite a while to get my configuration in a stable working condition, but now that everything in place, deploying new revisions of my projects is floating on Cloud27.

I'm not going to explain how to use buildout with django since it's already well covered here and here.

I have, however, decided to share my buildout configuration, since I've received a couple of requests to do so in the past. My setup uses fastcgi and nginx, and the configuration files and startup scripts are also created, when the buildout script is run.

I will add more information in the various README files to explain the setup, as time permits, but for the moment these files are empty. The most important files are there: buildout.cfg, setup.py, and the configuration and startup script templates for both development and production.

Also take note that zc.buildout does require setuptools, so if you don't like using setuptools, then you may not want to use buildout ( Try pip, fabric and virtualenv instead ^_^ ).

You can find the repo here:
http://github.com/andrewebdev/my-buildout

Please log any issues and suggestions here:
http://github.com/andrewebdev/my-buildout/issues

Good luck and have fun!