Skip to main content

You’ve just written a great Python web application. Now, you want to share it with the world. In order to do that, you need a server, and some software to do that for you.

The following is a comprehensive guide on how to accomplish that, on multiple Linux-based operating systems, using nginx and uWSGI Emperor. It doesn’t force you to use any specific web framework — Flask, Django, Pyramid, Bottle will all work. Written for Ubuntu, Debian, Fedora, CentOS and Arch Linux (should be helpful for other systems, too). Now with an Ansible Playbook.

Revision 5 (2017-04-29): Better module specification description, environment variable configuration info

I tested the speed of four static site generators: Nikola, Pelican, Hexo and Octopress, in a clean environment. Spoiler alert: Nikola won.

Disclaimer: author is a developer and user of Nikola. The test environments used were the same for all four generators.

Generators tested

  • Nikola v7.6.1, by Roberto Alsina, Chris Warrick and contributors; Python; MIT license
  • Pelican v3.6.0, by Alexis Metaireau and contributors; Python; GNU AGPL license
  • Hexo v3.1.1, by Tommy Chen and contributors; Node.js; MIT license
  • Octopress v2.0, by Brandon Mathis and contributors; Ruby; MIT license (based on Jekyll)