Posts about Python, page 1

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)

There are multiple ways to write an app in Python. However, not all of them provide your users with the best experience.

One of the problems some people encounter is writing launch scripts. The best way to handle this is the Entry Points mechanism of Setuptools, and a __main__.py file. It’s quite easy to implement. If you’re interested, read on to learn more!