Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Nikola, a static blog & site generator python meetup 19 feb2014


Published on

Python static blog & site generator

Published in: Technology
  • Be the first to comment

  • Be the first to like this

Nikola, a static blog & site generator python meetup 19 feb2014

  1. 1. Nikola a static Blog & Site generator Areski Belaid <> 19th February 2014
  2. 2. Who am I? - Areski! - 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…
  3. 3. WAT! This is not a Web-Framework... Sorry guys! I know this talk doesn’t fit with tonight’s topic?
  4. 4. - 2 months ago we built for our Python Group - Hosted on Github Pages Goals: - 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 on
  5. 5. 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, etc… “It will leverage all the heavy work of creating websites!” It’s very easy use… Don’t believe me!?
  6. 6. Why static Security Dynamic sites are prone to experiencing security issues. Obsolescence 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 are made. Time & Maintenance Hosting on Github page is extremely fast, no need to configure Apache/Nginx. Once it's there it will stay there.
  7. 7. Nikola features Most remarkable features: - Blogs, with tags, RSS feeds, archives, comments, etc. - A lot of themes: - Flexible, extensible via 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 ….
  8. 8. Markdown & Restructuredtext Plain text formatting syntax designed so that it can be converted to HTML
  9. 9. 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
  10. 10. 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 ``, the config file for your site
  11. 11. Let’s create a post $ nikola new_post Creating New Post ----------------- Enter title: my new post Scanning posts....done! [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
  12. 12. Let's build it How to build it (even my mum can do it): $ nikola build Some magic happens here… read your 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 :/
  13. 13. 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 - 'CRTL-C' to terminate We installed `livereload` earlier this will help to reload our website automatically every time we edit our code. $ nikola auto
  14. 14. Configure your The configuration file is called and can be used to customize a lot of what Nikola does # Data about this site BLOG_TITLE = "Demo Site" SITE_URL = "" BLOG_EMAIL = "" BLOG_DESCRIPTION = "This is a demo site for Nikola." but also: - Configure your Menu, multi-language, google-analytic, comment(disqus), RSS feed, configure the template, and much more
  15. 15. Conclusion - 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 :
  16. 16. Questions?