/fabistrano

Capistrano style deployments with fabric

Primary LanguagePythonBSD 2-Clause "Simplified" LicenseBSD-2-Clause

fabistrano

Fabistrano is a set of Fabric tasks that allows you to do Capistrano style deployments for python web apps.

What is a capistrano style deployments?

Capistrano deploys code under versioned directories and then symlinks the latest one as the current release.

A sample structure would look like this:

  app.com
  |
  | - releases
    | - 1366924759
    | - 1366927898
    | - 1367155641
  | - shared
  | - current

Why use this stlye of deployment?

Using fabistrano you get the following benefits:

  • Scripted and ordered deployments
  • Very low downtime when deploying new code
  • Easy roll backs

Usage

  1. Install fabistrano:

pip install fabistrano

  1. In your fabfile.py you need to import fabistrano and set the environment variables:
  from fabistrano import deploy

  
  env.hosts = ["HOST"] # Replace with your host name or IP
  env.base_dir = '/www' # Set to your apps directory
  env.app_name = 'app_name.com' # This will deploy the app to /www/app_name.com/
  env.git_clone = 'GIT_PATH' # Your git url

  env.restart_cmd = 'kill -HUP `supervisorctl pid gunicorn`' # Restart command
  # or
  # env.wsgi_path = "app_name/apache.wsgi" # Relative path to the wsgi file to be touched on restart
  1. Run setup to create the directory structure:

fab deploy.setup

  1. Deploy the app:

fab deploy

  1. Setup your web server to point to the current directory.

And you should be good to go!

Current status

This tool is under active development and you might see errors.

License

The template itself is available under the "Simplified" BSD license and can be freely modified under the terms of that license. You can see the full license text in the Github repository for additional detail.

Applications created using this template are not considered derivatives works. Applications created using this template can be freely licensed under whatever you as the author chooses. They may be either open or closed source.