django-fab-templates

Django project templates that support fabric-style deployment (vagrant+ubuntu, webfaction)


Keywords
django, fabric, vagrant, template, project, html5, boilerplate, vm, virtualbox, paster
License
MIT
Install
pip install django-fab-templates==0.1.2

Documentation

django-fab-templates is set of start templates for Django projects. All of these templates support automated Django project deployment with help of Fabric. Feel free to use them as is or tweak them to fit your needs.

Kudos to:

Please submit bugs and improvements as GitHub issues or send them to dmitry.guyvoronsky@gmail.com.

Quick Start

Here is quick primer on creation of new Django project (mysql+south+html5boilerplate) that supports deployment to vagrant-managed virtual box.

First, install everything:

$ pip install django-fab-templates
$ gem install vagrant
$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box

Then create new Django project, boot and configure vagrant box:

$ paster create -t vagrant_project my_project
$ cd my_project
$ vagrant up

Finally set up your project on virtual vagrant box and test it:

$ fab vagrant setup
$ curl -I http://localhost:8080/

Features

All project templates have the following in common:

  • Automated deployment with help of Fabric command-line tool is supported
  • Excellent html5 boilerplate template is used as a base for html+css+js
  • SQLite and MySQL are used as default db backends
  • Database scheme and data migrations are managed by South
  • Multiple configurations (development/staging/production) and local setting overrides are supported

The following major fab commands are supported in all projects:

  • Webserver manipulation
    • apache_restart - Restarts apache
    • apache_start - Starts apache
    • apache_stop - Stops apache
    • maintenance_off - Turn maintenance mode off
    • maintenance_on - Turn maintenance mode on
  • Database
    • create_database - Create database and db user
    • drop_database - Create database and db user
    • populate_database - Create initial database scheme and load initial data
    • migrate - Migrate database scheme and data

vagrant_project

This project template simplifies Django project development and testing on vagrant-managed virtual box. It uses 32-bit Ubuntu 10.04.2 LTS (Lucid Lynx) release (codename lucid32). Of course you operating system of your choice, just keep in mind you may need to tweak Chef settings in Vagrantfile.

Hint

Vagrant is an amazing tool for managing virtual machines via a simple to use command line interface. With a simple vagrant up you can be working in a clean environment based on a standard template. You will need to install vagrant, download lucid32 box and boot up vagrant by running:

$ gem install vagrant
$ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box
$ vagrant init
$ vagrant up

Please refer to Getting Started with Vagrant manual for details.

The following fab commands are supported in addition to common ones:

  • General commands
    • setup - Setup a fresh virtualenv, install everything we need
    • destroy_world - Removes everything

Example:

$ paster create -t vagrant_project my_project
$ cd my_project
$ vagrant up
$ fab vagrant setup

Dependencies

django-fab-templates requires the following python packages:

  • setuptools - no comments
  • PasteScript - pluggable command-line frontend, including commands to setup package file layouts
  • Cheetah - a template engine and code generation tool
  • Fabric - command-line automation tool
  • Jinja2 - modern and designer friendly templating language for Python

Installation

From pypi:

$ pip install django-fab-templates

or:

$ easy_install django-fab-templates

or clone from GitHub and install manually:

$ git clone git://github.com/dreamiurg/django-fab-templates.git
$ cd django-fab-templates
$ sudo python setup.py install

Usage

To see list of available project templates:

$ paster create --list-templates

To generate Django project template:

$ paster create -t <template_name> <project_name>