This is code and configuration for my Django Deployment Workshop at PyCon 2010, OSCON 2010, and beyond.
Here you'll find example config used to set up an example deployment environment for a Python WSGI stack, including:
- A Django site deployed with Fabric and Buildout
- Apache/mod_wsgi application servers
- Nginx load balancers and media servers
- Memcached
- PostgreSQL with pg_standby
I've made comments and notes where possible, but it's entirely possible that this won't make a whole lot of sense without actually taking the class. But this is all BSD-licensed, so please feel free to use it as a starting point for you own deployments.
The Django site used for the examples is Derek Willis' Fumblerooski. Many thanks to Derek for letting me (ab)use his code!
Grab the dump file. This file isn't for public distribution, so it's not linked here. If you're in one of my classes you'll get the link in an email.
Make sure you have PostgreSQL installed or have access to a database. For easiest use, you'll want a db named
fumblerooski
, owned by a user of the same name, and you'll want to have configured PostgreSQL to allow non-authenticated access. (Otherwise, you'll need to editfski/settings.py
with the appropriate credentials.)Restore the data into the database:
zcat fumblerooski-dump.sql.gz | psql fumblerooski
You'll probably get a bunch of warnings and errors, but it should complete successfully anyway.
Run the Buildout:
python bootstrap.py ./bin/buildout
You can verify that you've got the basics of everything working okay by running the dev. server:
./bin/django runserver
If you're running this on a VM and want to be able to access the site remotely, make sure to make the dev. server listen publicly:
./bin/django runserver 0.0.0.0:8000
(You could also use the server's public IP explicitly.)
After than, start deploying. My notes, the ones I use when I teach the class, are available here. If you're not using Ubuntu 10.04 LTS then YMMV.
By my count this three-hour class covers about a dozen different pieces of technology. Below are some links to documentation of these various bits. If you read through all of it until you understand every command and configuration option I've used, you'll be well on your way towards groking this stuff. Good luck!
- Ubuntu
- git (also see the git book)
- Buildout
- Django; see particularly the settings reference
- Apache; the directive quick reference is especially useful
- PostgreSQL docs, including:
- Server configuration (
postgresql.conf
)- Client authentication (
pg_hba.conf
)- Fabric
- Nginx, specifically the upstream and proxy modules
- memcached
- Django's caching framework
- pgpool2
- pg_standby