Package: dploi-fabric
This is a set of reusable fabric tasks. It uses the new-style task system
of fabric >= 1.2UsageAdddploi-fabricto your buildout environment (preferably indevelopment_local.cfg, the servers have no use for it).Create afabfile.pyas normal.Pick and choose the modules and import them in thefabfile.py, e.g.:from fabric.decorators import task

from dploi_fabric.db import pg # if project uses mysql, import "mysql" instead
from dploi_fabric import supervisor, nginx
from dploi_fabric import git, utils, buildout, south, django_utils, project

from dploi_fabric.conf import load_settings

@task
def dev():
    load_settings('dev')

@task
def stage():
    load_settings('stage')

@task
def live():
    load_settings('live')

@task
def deploy():
    pg.dump.run()
    git.update()
    buildout.run()
    south.migrate.run()
    django_utils.collectstatic()
    supervisor.restart()
    supervisor.status()
    nginx.update_config_file()in the project root, create a filedeployment.pyfollowing this template:project_name = 'awesome_new_website'

settings = {
    'dev': {
        'hosts': ['yourserver.com'],
        'autostart': True,
        'path': '/home/awesome_new_website-dev/app/',
        'user': 'awesome_new_website-dev',
        'buildout_cfg': 'server_dev.cfg',
        'repo': 'git@github.com:youruser/awesome_new_website.git',
        'branch': 'master',
        'backup_dir': '/home/awesome_new_website-dev/tmp/', # Used for mysql/psql dumps
        'db_name': 'awesome_new_website-dev',
        'db_username': 'awesome_new_website-dev',
        'domains': ['sitename-dev.agency.com', 'www.sitename.com'],
        'domains_redirect': [
            {'domain': 'sitename.com', 'destination_domain': 'www.sitename.com'},
        ],
        'ssl': True,
        'ssl_key_path': '../config/ssl.key', # This must be uploaded manually, possibly by a task in the future
        'ssl_cert_path': '../config/ssl.crt', # This must be uploaded manually, possibly by a task in the future
        'basic_auth': False,
        'basic_auth_path': '../config/htpasswd', # This must be uploaded manually, possibly by a task in the future
    },
}add settings for stage/live as needed.callbin/fab--listfor a list of commandsNotewhen using these tasks, all project-specific tasks have to be decorated
with the@taskdecorator fromfabric.api.Configuration file (config.ini)Remember to add config.ini, example:[static]/media/ = py_src/project/media/and/or[static]/static/ = %(static_files)sCeleryThe[celery]section has some special configuration parameters:version(default: empty): set the celery version. Other the value3.1is recognized and triggers the
usage of thecelerycommand instead of the django-celery basedmanage.py celeryd.app(default:project): the module that contains thecelery.py(see thecelery documentation)Other options[checkout]tool = buildout (default)tool = virtualenv[celery] (if the section is present, celery is enabled)[django]base = .base = project/base = py_src/project (doesnt work with buildout yet, as it would try to access py_src/project/bin/django)append_settings = trueappend_settings = false[static](see above)/url-path/ = rel-path-filesystem/[sendfile]
/protected/media/ = ../upload/