Package: django-deployer
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 StartedTo install django-deployer, usepipto fetch the package from PyPi:$pipinstalldjango-deployerNow from your project’s root directory run thedeployer-initcommand once, and then runfab setup.In this example (usingpaasbakeoff), we are going to tell django-deployer to prepare our project to deploy to Google App Engine.$deployer-init$fabsetupWeneedtoaskafewquestionsbeforewecandeployyourDjangoapp*WhatisyourDjangoprojectdirectoryname?(Thisusuallycontainsyoursettings.pyandaurls.py)mywebsite*WhatisyourDjangosettingsmodule?[mywebsite.settings]*Whereisyourrequirements.txtfile?[requirements.txt]mywebsite/requirements/project.txt*WhatversionofPythondoesyourappneed?[Python2.7]*WhatisyourSTATIC_URL?[/static/]*WhatisyourMEDIA_URL?[/media/]*Whichproviderwouldyouliketodeployto(dotcloud,openshift,appengine)?appengine*What's your Google App Engine application ID (see https://appengine.google.com/)? djangodeployermezz
    * What'sthefullinstanceIDofyourCloudSQLinstance(shouldbeinformat"projectid:instanceid"foundathttps://code.google.com/apis/console/)?djangomezzanine:djangomezzdb*What's your database name? appenginedemo
    * Where is your Google App Engine SDK location? [/usr/local/google_appengine]
    Creating a deploy.yml with your app'sdeployinfo...Created/Users/nateaune/Dropbox/code/paasbakeoff/deploy.ymlJustafewmorestepsbeforeyou'rereadytodeployyourapp!1.Runthiscommandtocreatethevirtualenvwithallthepackagesanddeploy:$fabdeploy2.CreateandsyncthedbontheCloudSQL:$shmanage.shcloudcreatedb$shmanage.shcloudsyncdb3.Everythingissetupnow,youcanrunothercommandsthatwillexecuteonyourremotelydeployedapp,suchas:$shmanage.shdbshellDone.Now inspect your project directory and you will see that a filedeploy.ymland 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-runfab setupit could inadvertently overwrite the config files from the first run.UpgradingYou will notice that when we ranpip installdjango-deployerit created a scriptdeployer-init. When you ran this script, it created a fabfile.py in your current directory that imports the tasks module from thedjango-deployerproject.fromdjango_deployer.tasksimport*This means that you can update the django-deployer package and don’t need to regenerate the fabfile.$pipinstall-Udjango-deployerContributeIf you want to develop django-deployer, you can clone it and install it into your project’s virtualenv:$sourcebin/activate(venv)$gitclonegit://github.com/natea/django-deployer.git(venv)$cddjango-deployer(venv)$pythonsetup.pydevelopOr you can also install an editable source version of it using pip:$sourcebin/activate(venv)$pipinstall-egit+git://github.com/natea/django-deployer.git#django-deployerWhich will clone the git repo into thesrcdirectory of your project’s virtualenv.RoadmapAdd support for Heroku, OpenShift, Amazon Elastic Beanstalk and GondorPerform some intelligent code analysis to better guess the settings (see the djangolint project -https://github.com/yumike/djangolint)Write tests!Caching (Redis, Memcache)CeleryEmailSSLChangelog0.1.6 (2013-04-10)Use a createdb.py that handles timeouts betterRemove dj-database-url since it doesn’t work with DotcloudPrompt 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 workdotcloud.yml file needs UTF-8 or else browsing Mezzanine gallery won’t workLet user choose their admin password instead of hardcoding itMake sure STATIC_ROOT and MEDIA_ROOT are defined in settings_dotcloud.pyIf project already has a top level requirements.txt, don’t do anythingAdd validators for ensuring that requirements file exists,Validate the admin password and that the user chose a valid providerEnsure that the user doesn’t leave fields blank0.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)