- We keep a local settings file for each environment, and those /are/ versioned. We have a /settings_local directory which contains each of the variants (localdev/dev/staging/df/live). The appropriate one is sym linked to /settings_local.py, which in turn is imported into settings.py.
- We bypass Apache entirely and just plug Nginx FCGI into Django directly.
- We have a separate pip requirements file for each environment (also kept in source control)
- We use a Puppet to configure our systems. Perosonally though, I have found Puppet to have an exceptionally steep learning curve, so you may want to shop around.
I hope that helps!