Skip to main content

Redeploy Django projects using management commands

What does it do?

Using Fabric to run a management command on each remote instance to redeploy itself.

The remote command will pull the source code from Git, run all necessary Django management commands, and restart the server.

It’s intended for small to medium scale apps.

Why not just write a Fabric script?

It’s faster. When the you run everything remotely it only takes about 10 seconds to deploy an instance.

What commands will run?

  • git pull

  • pip install -r requirements.txt

  • syncdb

  • migrate

  • collectstatic

  • restart server (webserver dependent)

Requirements

  • A deployed instance running either:
    • Apache with mod_WSGI

    • GUnicorn

  • Fabric

  • A virtualenv dedicated to the project.

  • A Git hosted repository for the project

Installation

Add the app to your INSTALLED_APPS setting:

INSTALLED_APPS = (
    #...
    'sitepush',
)

Settings

Add the server configuration to your settings file:

DEPLOYS = {
    'default': {
        'HOST': '192.168.0.1',         # IP or domain name
        'USER': 'user',                # User to login with
        'BRANCH': 'master',            # Git branch to pull updates from
        'SETTINGS': 'settings',        # Settings file to use (optional)
        'DIR': '/var/www/myproject/',
        'ENV': 'myvirtualenv',         # virtualenv used in the project
        'WEBSERVER': 'gunicorn',       # webserver - 'apache' or 'gunicorn'

        'PID_FILE': '/tmp/gunicorn.pid',  # Gunicorn pid file path
        'WSGI_FILE': 'deploy/wsgi.py',    # Apache wsgi file path
    },
}

The PID_FILE / WSGI_FILE settings should be set depending on the web server you’re using.

BRANCH is optional and defaults to master

Usage

python manage.py deploy_remote default

# Or
python manage.py deploy_remote srv1 srv2 #...'

# Don't install requirements:
python manage.py deploy_remote default --noreqs

# Deploy all remote instances:
python manage.py deploy_remote --all

Metadata

Release files for django-sitepush 0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-sitepush 0.1
File Size Uploaded
django-sitepush-0.1.tar.gz 4.3 kB Details

Release files / django-sitepush-0.1.tar.gz

Download URL django-sitepush-0.1.tar.gz
Size 4.3 kB
Tags Source
SHA-256 checksum
How to use checksums
7409119fa58d061d2f64a35a39581122be8465b8067040e3fd168f1aaf4ebfcd
BLAKE2b-256 checksum
How to use checksums
166e208eb98246c6ba36376d9bf5421014a22bce0634b57bf0be88a537728ec1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page