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 7, Alma Linux, Rocky Linux and Arch Linux (should be helpful for other systems, too). Now with an Ansible Playbook.

Revision 8 (2022-02-20): works with Fedora 35, AlmaLinux 8, RockyLinux 8

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)