django-deployer is a deployment configuration tool for Django that currently prepares most Django projects to be deployed to the following PaaS providers: Dotcloud, Stackato and Google App Engine.
The goal of django-deployer is to minimize the effort to deploy a Django app to any of these PaaS providers. It asks a series of questions about your Django project, and then generates a generic deploy.yml file that captures all of your project's requirements.
When you choose a particular PaaS provider, django-deployer then translates the requirements defined in the deploy.yml file and generates configuration files for that specific PaaS provider.
Videos of using django-deployer
- How to use django-deployer to deploy a Django app to Google App Engine
- How to use django-deployer to deploy a Django app to Dotcloud
Getting started
Install django-deployer in your virtualenv, and run the deployer-init command to copy the fabfile into your root folder. Then run the fab setup
command to tell django-deployer about your project.
$ source /path/to/venv/bin/activate
$ cd <root_of_your_project>
$ pip install django-deployer
$ deployer-init
$ fab setup
Read more about this project README page.
Development
If you want to contribute to django-deployer, here is how you can check it out and install it.
$ git clone git://github.com/natea/django-deployer.git
$ cd django-deployer
$ python setup.py develop
Or just use pip and look for the source code in the /src directory of your virtualenv:
$ pip install -e git+git://github.com/natea/django-deployer.git#egg=django-deployer
Authors and Contributors
This project was born at the DjangoCon 2012 sprint by Nate Aune (@natea) and John Debs (@johnthedebs) with input from Jacob Kaplan Moss (@jacobian), Andrew Godwin (@andrewgodwin) from ep.io, Gabriel Grant (@gabrielgrant) and Ken Cochrane (@kencochrane) from @DotCloud, Kenneth Reitz (@kennethreitz) from @Heroku and Diane Mueller from @ActiveState.
Further work was done at the PyCon 2013 sprint by @natea and Colin Su (@littleq0903) to add support for Google App Engine. Kevin Grinberg (@kgrinberg), Kyle Kelley (@rgbkrk) also provided input.
Support or Contact
We'd love to get input for how to best push this project forward. If you represent a PaaS provider and would like to contribute, submit a pull request or contact @natea with suggestions for making it better.
Resources
Here are some other blog posts that I wrote about deploying Django using various PaaS providers:
- A journey through time and PaaS - introducing Django deployer
- Django deployment using OpenShift
- Django deployment using Stackato
And more howtos from each PaaS provider:
Similar projects
This is not a new problem. Here is a collection of other deployment tools that we found when researching this project:
- https://github.com/duointeractive/django-fabtastic
- https://github.com/gcollazo/Fabulous
- https://github.com/reverie/django-fabfile
- https://github.com/tswicegood/django-on-vagrant
- https://github.com/webengineer/django-fabfile
- https://github.com/alexisbellido/The-Django-gunicorn-fabfile-project
- https://github.com/akumria/django-paas
- https://github.com/typeish/django-deploy
- http://bits.btubbs.com/silk-deployment
- https://github.com/winhamwr/neckbeard