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:
- Gareth Rushgrove and his django-project-templates for inspiration
- Colin Copeland for his introduction to basic Django deployment with virtualenv, fabric, pip and rsync
Please submit bugs and improvements as GitHub issues or send them to dmitry.guyvoronsky@gmail.com.
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/
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
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, downloadlucid32
box and boot up vagrant by running:$ gem install vagrant $ vagrant box add lucid32 http://files.vagrantup.com/lucid32.box $ vagrant init $ vagrant upPlease 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
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
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
To see list of available project templates:
$ paster create --list-templates
To generate Django project template:
$ paster create -t <template_name> <project_name>