tamakisquare
tamakisquare

Reputation: 17067

automate and streamline django deployment from local to server

Recently, I have started to deploy my work-in-progress django site from my local to server. But I have been doing it manually, which is ugly, unorganized, and error-prone.

I am looking for a way to automate and streamline the following deployment tasks:

  1. Make sure all changes are committed and pushed to remote source repository (mercurial) and tag the release.
  2. Deploy the release to the server (including any required 3rd-party apps missing from the server)
  3. Apply the model changes to the database on the server

For 2), I have two further questions. Should the source of the deployment be my local env or the source repository? Do I need a differential or full deployment?

For 3), I use South in my local for applying model changes to database. Do I do the same on the server? If so, how do I apply multiple migrations at once?

Upvotes: 0

Views: 232

Answers (1)

dm03514
dm03514

Reputation: 55932

I think Fabric is the defacto lightweight python deployment tool. http://docs.fabfile.org/en/1.3.4/index.html. It is very simple and will help you keep your deployment organized and streamlined. It allows for easy scp or rsync. Additionally it is easy to integrate with django tests.

For my smaller projects I just make the source of my deployments my local env. I checkout a clean copy and deploy from there. It would probably be better to integrate this with my version control for a quick rollback if there are any errors once I deploy.

I have never used south, but i'd imagine you could just write a fab command to sync your production server. If you're using south on dev, i couldn't imagine why you wouldn't want to use it on production too?

Upvotes: 2

Related Questions