I’m the sort of technology professional who adapts easily to challenges, needs little direction, and can learn just about anything new if given a necessity and the time to learn something. Having long fostered an interest in open-source programming and big-iron tiered Internet delivery infrastructures, this seemed like just as appropriate a time to re-validate my big claim as any.
I’ve had an interest in the Python programming language for a while. In fact, it’s hard to find a Python programmer of any skill who can talk about this language and related stacks without the conversation turning to rainbows, unicorns, and butterflies. It powers some of the largest and heaviest web properties in the world and has a giant programmer base. It’s a high-powered OO language that reads more like spoken English than tech-ease. Great! Let’s dive in.
I didn’t want to empty my entire bag of tricks in favor of brand new tools and methodologies so I decided, at the very least, to use an Ubuntu linux base running the latest version of Apache as the web server. I know Ubuntu well enough to be considered “intermediate” and while I don’t have any active sites running under Apache, I’ve supported it in various environments long enough to get my hands dirty. This, I thought, would at least give me a solid foundation of existing knowledge from which I could present my new-found Python prowess. Turns out, I was only half right.
Apache is a very power mature senior web server with decades of active development that continues today. The problem with it — that I found, anyway — is the “batteries included” footprint that the default installation provides, along with the requisite configuration and command complexities that come with it. Throw in the WSGI (“whiskey” for the uninitiated) spec designed to harness Python-based web development and you can quickly find yourself exhausted from the hundreds of rabbit holes you’ll inevitably have to climb out of.
Time to step back. Let’s rethink this. I need an extremely simple web server that integrates with the WSGI protocol that allows me to serve my Python apps. The documentation should be unbelievably easy to read and grasp and should err on the side of terseness and examples (as opposed to lengthy rants and narrative descriptions). The web server front end should be optimized for speed and be ubiquitous enough that I won’t have any trouble finding help online.
I’ve known about nginx (“Engine X”) for quite a while. It’s a web server developed in C, designed from the ground up to be a wicked-high performing front-end web server and reverse proxy. Any startup idea I ever had, if it gained enough traction, was eventually intended to be served up via nginx. It’s too fast and too simple to ignore.
The truth is though, I don’t know why I ignored it now and even bothered with Apache. Apache is very powerful, but like any application, it comes with an all-inclusive footprint and feature set I may never use.
I’m moving ahead with Nginx
Something else fantastic that I just ran across