On the web there is a great variety of ready-made content management systems and systems for building a website. The majority of the most famous ones and those that people most often write about, are based on the PHP script language (WordPress, Joomla!, Drupal, Magento, etc.).
On the web, however, there are other systems as well that are not PHP based, but are just as interesting and useful, a quick example of which is Ghost.
A slightly different approach to online presence is through a static blog site generator based on Python. Meet Nikola, named after Nikola Tesla! Thanks to Nikola, Python lovers can do wonders!
What does Nikola do?
Nikola is something different from the well-known ready-made systems like WordPress, Joomla! and all the rest.
Nikola converts plain text files into .html files. Everything in the generated static website is an .html file – pages, articles, categories, tags, archive and RSS (.xml).
Since web pages are ready-made .html files, the visitor immediately receives information, without having to wait for the execution of server scripts and SQL queries.
Unlike dynamic websites, a static website made with Nikola does not use data bases, does not execute SQL queries and does not run any code on the server. Everything is pre-generated and is provided upon access.
The Nikola-generated website consists of a folder full of HTML files (+ images, css files and everything else).
What can YOU do with Nikola?
Although the initial idea behind Nikola was to use it for blog sites, with Nikola you can build a home page, corporate website, project website, etc.
The fact that this is a static website means that its content is already generated before it is visited by a web user. That, however, does not prevent the website from having animations, videos, slides, images and all sorts of CSS/HTML5 improvements.
According to Nikola’s developer, the system is easy to expand by using beginner’s Python knowledge.
If you are a Python lover, you can do wonders with Nikola.
Here are some of Nikola’s features and options:
• blog site with tags, news, archives, comments and more;
• choice of design (theme) for the website and how to make your own theme for the website;
• additional functionality provided by plugins;
• RSS news;
• a page for each tag/category;
• annual archives of the articles;
• you can set up an output folder for the finished web pages;
• templates setup for the articles and pages;
• independent pages (that are not part of the blog);
• support for several languages (Nikola is translated in Bulgarian as well);
• creating image galleries.
To create articles and pages you will need to use a markup language as Markdown or reStructuredText. You can create the article content in a plain text file by describing/marking the text with one of the supported lightweight markup languages. Afterwards, Nikola will convert those text files into HTML files.
Articles are edited in their text files, followed by an execution of a certain command, so that the system may update their corresponding .html files.
What you can not do with Nikola?
Since the finished website does not run any server-side code, there is no support provided for processing data entered by the user. That includes any forms where you fill-out information (except for comments).
Why choose Nikola?
Some of the differences between Nikola and other dynamic websites, are in fact Nikola’s greatest advantages.
Security
There is hardly any person left who hasn’t heard or read about a malicious breach into some of the most famous ready-made content management systems. Primarily, it is the executable code of such systems that is used for breaching into their security. In a static website, no server-side code is running, which makes it slightly more secure than the dynamic websites.
System versions
Even if you do not update Nikola’s version, that will not reflect on the final website and it will continue running. Regardless of whether the software version on the server is changed, or if there is a change in the version of PHP, MySQL or any other server application, the static website will continue working forever (until the server is online). When a new version of Nikola is out, you are not required to update the system because of security or new functionalities. To compare it with WordPress, for example, whenever a new version is out, sooner or later you will be forced to install an update, whether it’s due to an unsupported old version of some server application, or due to a security fix.
Performance
After everything dynamic is off the website, what’s left is just the serving of static content. That is precisely what a static website does, it provides users with HTML files. If you add compression and caching onto that content, you get an ultra fast website. Apart from that, the website will not need the processor resources and the server memory, which would normally be drained by a dynamic website.
Portability
One single website – one single folder, containing all of its content. You may upload that folder on various servers and platforms, make copies of it, move it, compress it or archive it.
Several systems similar to Nikola: http://getpelican.com, http://www.blogofile.com.
To make a static website work, all you need is a web server. That means you can first generate the website on a machine where you have Python installed and then you can upload the folder containing the website onto the server (for example, to a hosting account).
Fun fact: The final websites generated with Nikola also work on a shared hostingaccount. All you need to do is upload the content from the website directory to a directory in the hosting account.
Uploading your final website into the hosting account: To pull the final website into the hosting account, you can use Git. For the output folder, (where the website files are located), you can set up a Git repository. For example, you generate the final website locally and then, through git, the website is synchronized with a git repository (in Github for example). After that, from the git hosting account you can pull the changes from Github. To upload the folder onto the website you can use any option that copies the files into the hosting account – git, rsync, FTP, File Manager (.zip).