[Django]-Django Deployment Process to Webfaction.com

5๐Ÿ‘

โœ…

I would strongly suggest Fabric to handle your deployments to WebFaction:
http://docs.fabfile.org/en/1.11/tutorial.html

By using Fabric you can deploy code and do other server side operations from your local terminal with no need to manually ssh to the server. First install Fabric:

pip install Fabric

Create fabfile.py in your project root folder. Here is an example fabfile that can get you started:

from fabric.api import task, env, run, cd
from fabric.context_managers import prefix

env.hosts = ('wf_username@wf_username.webfactional.com',)
env.forward_agent = True

MANAGEPY = '~/webapps/my_project/code/my_project/manage.py'
PY = '~/webapps/my_project/env/bin/python2.7'

@task
def deploy():
    with cd('~/webapps/my_project/code/'):
        with prefix('source production'):
            run('git pull --rebase origin master')
            run('pip install -r requirements.txt')
            run('{} {} migrate'.format(PY, MANAGEPY))
            run('{} {} collectstatic --noinput'.format(PY, MANAGEPY))
            run('touch my_project/my_project/wsgi.py')

You can run fab task from your terminal with:

fab deploy

In my opinion, making code changes directly on server is a bad practice. Fabric can improve your development flow so that you make code edits only locally, quickly deploy them and test them.

๐Ÿ‘คozren1983

-1๐Ÿ‘

The best and shortest way

In settings.py:

try:
  from production_settings import *
except ImportError as e:
  pass

You can override what needed in production_settings.py; it should stay out of your version control and you can use git resourcefully.

๐Ÿ‘คRoshP

Leave a comment