How to install django-deployer
- Download and install ActivePython
- Open Command Prompt
- Type
pypm install django-deployer
Lastest release
django-deployer is a deployment tool for Django that currently deploys any Django app 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 the popular 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. django-deployer then uses this deploy.yml file to translate these requirements into specific configurations for each PaaS.
See the roadmap below for adding support for more providers: Heroku, OpenShift, Elastic Beanstalk and Gondor.
Getting Started
To install django-deployer, use pip to fetch the package from PyPi:
Now from your project's root directory run the deployer-init command once, and then run fab setup.
In this example (using paasbakeoff), we are going to tell django-deployer to prepare our project to deploy to Google App Engine.
Now inspect your project directory and you will see that a file deploy.yml and various config files were created.
Note: if you're going to try different PaaS providers, it's recommended that you make a separate git branch for each one, because when you re-run fab setup it could inadvertently overwrite the config files from the first run.
Upgrading
You will notice that when we ran pip install django-deployer it created a script deployer-init. When you ran this script, it created a fabfile.py in your current directory that imports the tasks module from the django-deployer project.
This means that you can update the django-deployer package and don't need to regenerate the fabfile.
Contribute
If you want to develop django-deployer, you can clone it and install it into your project's virtualenv:
Or you can also install an editable source version of it using pip:
Which will clone the git repo into the src directory of your project's virtualenv.
Roadmap
- Add support for Heroku, OpenShift, Amazon Elastic Beanstalk and Gondor
- Perform some intelligent code analysis to better guess the settings (see the djangolint project - https://github.com/yumike/djangolint)
- Write tests!
- Caching (Redis, Memcache)
- Celery
- SSL
Changelog
0.1.6 (2013-04-10)
- Use a createdb.py that handles timeouts better
- Remove dj-database-url since it doesn't work with Dotcloud
- Prompt for location of manage.py (for discrepancy in project layouts in Django 1.3 vs 1.4)
- dotcloud.yml file needs DJANGO_SETTINGS_MODULE or else manage.py won't work
- dotcloud.yml file needs UTF-8 or else browsing Mezzanine gallery won't work
- Let user choose their admin password instead of hardcoding it
- Make sure STATIC_ROOT and MEDIA_ROOT are defined in settings_dotcloud.py
- If project already has a top level requirements.txt, don't do anything
- Add validators for ensuring that requirements file exists,
- Validate the admin password and that the user chose a valid provider
- Ensure that the user doesn't leave fields blank
0.1.5 (2013-04-08)
- Need a MANIFEST.in in order to find the .txt and .rst files (@natea)
- Fixed bug with misnamed CHANGES.txt -> CHANGES.rst (@natea)
- Fixed bug with missing README.rst (@natea)
0.1.1 (2013-03-26)
- Added support for Google App Engine (@natea, @littleq0903)
0.1.0 (2012-09-07)
- Initial version for Stackato and Dotcloud (@natea, @johnthedebs)