My book has got to the stage of a minimum viable site. I want the next chapter to be about actually deploying the site, even though it's ridiculously early -- to encourage the habit of "deploy early, deploy often".
But how to introduce deployment in a beginner-friendly way? It's a very simple site, so we don't need to cover all the complexities of deployment, but what's the minimum? Here's what I've got so far..
Deploying a site to a live web server can be a tricky topic. Oft heard in office corridors, IRC and tech forums is the forlorn cry -- "but it works on my machine"
Some of the danger areas of deployment include:
But there are solutions to all of these. In order:
So far, so good (at least, I think. feel free to pick holes!)
But the question is: now what? What platform to choose to deploy to? What should be in my automated deploy script?
So, your suggestions much appreciated! How do you do your deploys? Fabric? FTP? Git hooks? Something else? What do you think would work as a simple solution for beginners?
[update 2013-06-09] I've had a first bash at it, and the solution involves the reader starting up their own server, provisioning nginx + gunicorn + upstart, and deploying using fabric, git and virtualenvs. comments welcomed! You can find the current draft here]
The book is available both for free and for money. It's all about TDD and Web programming. Read it here!
"Hands down the best teaching book I've ever read" — "Even the first 4 chapters were worth the money" — "Oh my gosh! This book is outstanding" — "The testing goat is my new friend" — Read more...
A selection of links and videos about TDD, not necessarily all mine, eg this tutorial at PyCon 2013, how to motivate coworkers to write unit tests, thoughts on Django's test tools, London-style TDD and more.
This is my old TDD tutorial, which follows along with the official Django tutorial, but with full TDD. It badly needs updating. Read the book instead!
The campaign page, preserved for history, which led to the glorious presence of the Testing Goat on the front of the book.