views:

62

answers:

3

I have a multi-step deployment system setup, where I develop locally, have a staging app with a copy of the production db, and then the production app. I use SVN for version control.

When deploying my production app I have been just moving the urls.py and settings.py files up a directory, deleting my django app directory with rm -rf command and then doing an svn export from the repository which creates a new django app directory with my updated code. I then move my urls.py and settings.py files back into place and everything works great.

My new problem is that I am now storing user uploads in a folder inside of my django app, so I can't just remove the whole app dir anymore or I would loose all of my users files.

What do you think my best approach is now? Would svn export --force work, since it should just be overwriting all of my changed files? Should I take an entirely new approach? I am open to advice?

+2  A: 

You may want to watch this presentation by Jacob. It can help you improve your deployment process.

I use Bitbucket as my repo and I can simply perform push on my Dev box and run pull/update on Stage/Prod box. Actually I don't run them manually, I use fabric to do them for me :).

Srikanth Chundi
+1  A: 

Your could use rsync or something similar to backup your uploaded files and use this backup when you deploy your project.

For deployment you could try to use buildout:

http://www.buildout.org/
http://pypi.python.org/pypi/djangorecipe
http://jacobian.org/writing/django-apps-with-buildout/

For other deployment methods see this question:

http://stackoverflow.com/questions/3214645/django-deployment-tools

Dominik Szopa
A: 

You can move your files to S3 servers (http://aws.amazon.com/s3/), so you will not ever have to care about moving them with your project.

Tomasz Wysocki