Nikola, a static blog & site generator python meetup 19 feb2014
a static Blog & Site
19th February 2014
Who am I?
- CTO at Star2Billing
- VoIP guy, have worked with Python for many years
- Love the web, day2day work with Django & Flask (Build a lot of
Telefony products using Django/Flask)
- I might need a haircut…
WAT! This is not a Web-Framework...
Sorry guys! I know this talk doesn’t fit with
- 2 months ago we built pybcn.org for
our Python Group
- Hosted on Github Pages
- a simple website to provide
information about the events in a more
friendly fashion (use bootstrap3)
- No cost / Self maintained
- Still in discussion of what will happen
Nikola is a static website and blog generator
It allows you to build a website/blog by simply writing text.
You will write your Post/Page content in a text file and Nikola will
generate the HTML pages, the website structure, URLs, links, menu,
“It will leverage all the heavy work of creating websites!”
It’s very easy use… Don’t believe me!?
Dynamic sites are prone to experiencing security issues.
If you create a site (ie using a CMS), what happens when CMS releases a new version?
Cost and Performance
On dynamic sites, every time a reader requests a page, a whole lot of database queries
Time & Maintenance
Hosting on Github page is extremely fast, no need to configure Apache/Nginx. Once it's
there it will stay there.
Most remarkable features:
- Blogs, with tags, RSS feeds, archives, comments, etc.
- A lot of themes: https://github.com/getnikola/nikola-themes
- Flexible, extensible via plugins (https://github.com/getnikola/plugins)
- reStructuredText or Markdown as input language (also Wiki, BBCode, Textile, and HTML)
- Easy image galleries (just drop files into a folder!)
- Preview web server examples
- Live re-rendering while you edit
Markdown & Restructuredtext
Plain text formatting syntax designed so that it can be converted to HTML
Install Nikola in 3 steps
1) create a virtualenv :
$ mkvirtualenv myownpybcn-website
2) install nikola:
$ pip install Nikola
3) install python-requests & livereload:
$ pip install requests==2.2.1
$ pip install livereload==2.1.0
Let's create a demo website
1) Let’s create a demo site with fake data
$ nikola init --demo myownpybcn
This created directory myownpybcn, if you don't want the demo files remove --demo
`Explorons` what has been created:
- files: directory contains static assets
- galleries: reveal the photo gallery feature of Nikola
- posts: keep all your post files in a chosen markup language
- stories: contains all the "static" pages (non-post pages)
and finally `conf.py`, the config file for your site
Let’s create a post
$ nikola new_post
Creating New Post
Enter title: my new post
[2014-02-13T16:17:46Z] NOTICE: new_post: Your post's text is at: posts/my-new-post.rst
then edit posts/my-new-post.rst and write more content
Let's build it
How to build it (even my mum can do it):
$ nikola build
Some magic happens here… read your conf.py files, based on your templates, assests, custom
css, plugins used, etc… it will produce HTML pages to create a full functional Website
All the static files are stored in the folder output, you can open the output/index.html
Yeah I know, it’s too easy :/
Serve it on a plate
Nikola can serve all the static files from `output` directory locally:
$ nikola serve
Point your browser to the ip/port indicated - http://127.0.0.1:8000/
'CRTL-C' to terminate
We installed `livereload` earlier this will help to reload our website automatically
every time we edit our code.
$ nikola auto
Configure your conf.py
The configuration file is called conf.py and can be used to customize a lot of
what Nikola does
# Data about this site
BLOG_TITLE = "Demo Site"
SITE_URL = "http://getnikola.com"
BLOG_EMAIL = "email@example.com"
BLOG_DESCRIPTION = "This is a demo site for Nikola."
- Configure your Menu, multi-language, google-analytic, comment(disqus), RSS
feed, configure the template, and much more
- Static website fits many cases
- Nikola is a great tool and it’s Python based
- Very fast to use: in a matter of minutes you can create functional Websites
- Nikola has a lot of plugins & short codebase
- Many templates, support bootstrap / bootstrap3
Time to get started : http://getnikola.com/