Browse files

Started to add notes and update slides for OSCON 2010.

  • Loading branch information...
1 parent 6e9472d commit 73a4bee6d4a2bb971cad093742234deb8bce12c6 @jacobian jacobian committed Jul 16, 2010
@@ -19,7 +19,7 @@
def bootem():
servers = []
flavor = CS.flavors.find(ram=256)
- image = CS.images.find(name="Ubuntu 9.10 (karmic)")
+ image = CS.images.find(name="Ubuntu 10.04 LTS (lucid)")
for name in env.hosts:
server = CS.servers.create(name, flavor=flavor, image=image)
@@ -0,0 +1,27 @@
+The deployment world changes quickly, and I'm trying to keep these
+examples up-to-date with recent changes. To that end, I'll explain
+here all the changes I make as I update the tutorial.
+July 2010 (OSCON)
+* Updated to Ubuntu 10.04 LTS.
+ Whenever possible, I prefer to deploy against Ubuntu's LTS (long-term
+ support) releases. However, when I originally wrote this tutorial (Feb
+ 2010) the previous LTS was exceedingly long in the tooth and missing most
+ of the modern Python kit.
+ Now that 10.04 is out along with all the modern Python goodness it'll
+ probably remain my preferred server OS for a couple-three years.
+* Dropped the database replication example.
+ PostgreSQL 9.0 ships soon, and will radically change PostgreSQL's
+ replication/clustering story. Also, in previous classes this was the
+ least "interesting" part according to attendees. So, it's been dropped so
+ that I can spend more time on the other parts. Instead, I'll cover
+ replication as part of the "what's next" roundup at the end.
@@ -0,0 +1,91 @@
+You're getting this email because you're enrolled in the Django Deployment
+Workshop at OSCON 2010. We hope you're looking forward to it as much as I
+The class is going to be fast and furious: think of it as an overview and
+holistic examination rather than a deep dive on any particular topic. Our
+goal is to introduce you to the tools and techniques you'll need to deploy
+and scale a Django project -- but that's a long list, and we have a short
+time. Thus, our technique will be to introduce tools, give you quick
+overviews, and then leave you with links and pointers so that you can learn
+more after the class.
+So let's start these pointers now:
+Slides and (virtual) handouts
+All the code, configuration, notes, and slides we'll be using is available
+on Github:
+This is all public, and will be available before, during, and after the
+class. It'll continue to be updated over the coming months and years with
+new tools and techniques as we switch to and discover them.
+Please grab and have a local copy of these files before we begin the class.
+Let's risk the wrath of the wifi gods by all downloading the files en masse
+from the Oregon Convention Center.
+Following along
+You can think of this class as sort of optionally hands-on. We don't
+require -- or expect -- that everyone will have the kit together to be able
+to try out all the examples, and the class should be perfectly acceptable
+to those who'd rather just sit back and take notes.
+If, however, you want to be able to get your hands dirty and try the
+examples as we go, you'll need to do a bit of work before we begin.
+One of the big challenges of real-world deployment is dealing with the
+differences among different deployment operating systems (and even among OS
+versions). So to make things run smoothly and ensure we're all on the same
+page, I've made a choice: we're only going to cover one OS: Ubuntu 10.04
+LTS (aka "Lucid Lynx")
+[We'll explain that choice during the class.]
+Thus, for all the examples to work perfectly, you'll need to have access to
+an Ubuntu 10.04 machine. Ideally, you'll want to have access to *three*
+such machines so that you can try out the various load-balancing features
+we'll be covering.
+Now, we obviously don't expect y'all to show up to OSCON with three servers
+in tow, so we're obviously talking virtualization here. If you're aiming for
+the three servers, I'd suggest trying:
+ * A local virtualization platform like VirtualBox (free) or VMWare
+ (non-free). Either will be pretty bulletproof against stuff like
+ network outages, but running three VMs on your laptop will probably
+ be a bit dicey.
+ * A cloud hosting platform like Amazon EC2 ( or
+ Rackspace Cloud (
+ Of the two, Rackspace is cheaper and easier to get started with for
+ people new to cloud computing. So if you're not already familiar with
+ EC2, I'd suggest giving Rackspace a try.
+We'll be using Rackspace for our examples, but as long as you're running
+Ubuntu 10.04 *where* the server (or virtual server) lives is pretty
+Whatever you choose, you'll need to have these servers up and running by the
+time the class starts. I'll expect everyone who wants to follow along to already
+have their servers booted and running.
+Now, if you'd like to try to follow along on a different OS, or with a
+different configuration, that's fine with us. However, the class'll be on a
+tight schedule, so we won't be able to answer too many questions about
+other OSes.
+If you have any questions, please feel free to drop Jacob an email
+( We're happy to answer setup-type questions before the
+class starts.
+See you in Portland!
+Jacob Kaplan-Moss
+Frank Wiles
@@ -0,0 +1,51 @@
+1. Getting started [XXX]
+ * Introducing our example application.
+ * Overview of where we're going.
+ * Demo: bootstrap the example app on web1.
+2. Database server: PostgreSQL [XXX]
+ * Why a separate database server?
+ * Why PostgreSQL?
+ * Basics of configuring PostgreSQL.
+ * Demo: deploy PostgreSQL on a db server.
+ * Demo: wire the Django app up to the separate server.
+3. Application server: mod_wsgi [XXX]
+ * What's an application server?
+ * Introducing mod_wsgi
+ * Configuring Apache and mod_wsgi
+ * Demo: deploy the application on a single server under mod_wsgi.
+4. Introducing Fabric [XXX]
+ * Why automate?
+ * What's Fabric?
+ * Our first fabfile.
+ * Demo: re-deploy with Fabric.
+5. Multiple web servers [XXX]
+ * Why multiple web servers?
+ * "Shared nothing"
+ * Dealing with media.
+ * Demo: deploy w/Fabric onto multiple servers.
+[Break XXX]
+6. Load balancers [XXX]
+ * Introducing nginx
+ * Using nginx as a reverse proxy
+ * Demo: set up nginx to proxy to multiple machines.
+ * Demo: crash a web server.
+7. Caching servers [XXX]
+ * Local caching vs. dedicated caching.
+ * Introducing memcached
+ * Using memcached with Django.
+ * Demo: set up memcached; integrate with Django.
+8. Database connection middleware [XXX]
+ * Why connection middleware?
+ * Introducing pgpool.
+ * Using pg_pool and Django.
+ * Demo: switch to pg_pool.
+9. What's next? [XXX]
Oops, something went wrong.

0 comments on commit 73a4bee

Please sign in to comment.