{"id":10114,"date":"2014-11-25T12:00:20","date_gmt":"2014-11-25T11:00:20","guid":{"rendered":"http:\/\/tuxproject.de\/blog\/?p=10114"},"modified":"2019-03-25T00:10:36","modified_gmt":"2019-03-24T23:10:36","slug":"ins-internet-schreiben-mit-pelican","status":"publish","type":"post","link":"https:\/\/tuxproject.de\/blog\/2014\/11\/ins-internet-schreiben-mit-pelican\/","title":{"rendered":"Ins Inter\u00adnet schrei\u00adben mit Peli\u00adcan"},"content":{"rendered":"<p><em>(Vor\u00adbe\u00admer\u00adkung: Dies ist eine leicht \u00fcber\u00adar\u00adbei\u00adte\u00adte Vari\u00adan\u00adte eines Bei\u00adtrags, den ich schon anders\u00adwo ver\u00ad\u00f6f\u00adfent\u00adlicht hat\u00adte.)<\/em><\/p>\n<p>Mir ist schon seit einer Wei\u00adle auf\u00adgrund von Per\u00adfor\u00admance- und Sicher\u00adheits\u00adpro\u00adble\u00admen danach, Word\u00adPress, das ich seit inzwi\u00adschen neun Jah\u00adren nut\u00adze, auf die\u00adsem klei\u00adnen Text\u00adver\u00ad\u00f6f\u00adfent\u00adli\u00adchungs\u00addings ein\u00admal durch etwas Ande\u00adres aus\u00adzu\u00adtau\u00adschen. Nicht aber gegen ein ande\u00adres \u201erich\u00adti\u00adges\u201c Blog\u00adsy\u00adstem wie s9y und <a href=\"http:\/\/ghost.org\">Ghost<\/a>, denn damit h\u00e4t\u00adte ich nicht viel gewon\u00adnen, hin\u00adge\u00adgen eini\u00adges ver\u00adlo\u00adren (gera\u00adde auch weil Ghost immer noch kein brauch\u00adba\u00adres Kom\u00admen\u00adtar\u00adsy\u00adstem hat und ich <a href=\"https:\/\/tuxproject.de\/blog\/2014\/10\/tore-zum-mistmachweb\/\">sicher\u00adlich nicht<\/a> anfan\u00adgen wer\u00adde, inter\u00ades\u00adsier\u00adten Kom\u00admen\u00adta\u00adto\u00adren Java\u00adScript auf\u00adzu\u00adzwin\u00adgen). Inter\u00ades\u00adsan\u00adter sind da schon Sei\u00adten\u00adge\u00adne\u00adra\u00adto\u00adren wie Jekyll und des\u00adsen Frame\u00adworks (etwa <a href=\"http:\/\/www.octopress.org\">Octo\u00adpress<\/a>), die zwar auch meist kei\u00adne Kom\u00admen\u00adtar\u00adfunk\u00adti\u00adon, daf\u00fcr aber vie\u00adle wei\u00adte\u00adre Vor\u00adtei\u00adle mit\u00adbrin\u00adgen, zum Bei\u00adspiel, dass man sein Blog mit git ver\u00adsio\u00adnie\u00adren kann und nicht auf einen PHP\/\u00adMySQL-Stack ange\u00adwie\u00adsen ist, weil die Web\u00adsite direkt als HTML aus\u00adge\u00adge\u00adben wird und nicht bei jedem Auf\u00adruf neu erzeugt wer\u00adden muss. <a href=\"http:\/\/lc3dyr.de\/blog\/2012\/07\/22\/Jekyll-auf-Uberspace\/\">Franz<\/a> hat die Vor\u00adtei\u00adle eines sol\u00adchen Blog\u00adgene\u00adra\u00adtors ein\u00admal auf\u00adge\u00adz\u00e4hlt.<\/p>\n<p><!--more-->Nun ist Jekyll l\u00e4ngst nicht das ein\u00adzi\u00adge Werk\u00adzeug die\u00adser Art, die Aus\u00adwahl <a href=\"https:\/\/staticsitegenerators.net\/\">ist rie\u00adsig<\/a>; gera\u00adde, wenn man in der Spra\u00adche Ruby nicht hei\u00admisch ist, ist das Erzeu\u00adgen eines neu\u00aden Blog\u00adein\u00adtrags in (zum Bei\u00adspiel) Octo\u00adpress auch eine <a href=\"http:\/\/hackerpublicradio.org\/eps.php?id=1370\">unn\u00f6\u00adtig kom\u00adpli\u00adzier\u00adte Sache<\/a>. Au\u00dfer\u00addem scheint es unm\u00f6g\u00adlich zu sein, ein Octo\u00adpress-The\u00adme zu ent\u00adwickeln, das nicht aus\u00adsieht wie aus\u00adge\u00adkotzt. Oder hat es nur noch nie\u00admand ver\u00adsucht?<\/p>\n<p><b>War\u00adum nicht Peli\u00adcan?<\/b><\/p>\n<p>Unter den Alter\u00adna\u00adti\u00adven beson\u00adders inter\u00ades\u00adsant fin\u00adde ich <a href=\"http:\/\/www.getpelican.com\">Peli\u00adcan<\/a>, das <a href=\"http:\/\/bastibe.de\/2012-07-18-blogging-with-pelican.html\">anders\u00adwo<\/a> als ein\u00adfach beschrie\u00adben wird und j\u00fcngst in <a href=\"http:\/\/blog.getpelican.com\/pelican-3.5-released.html\">Ver\u00adsi\u00adon 3.5<\/a> erschien. Ein guter Anlass, es mir mal anzu\u00adse\u00adhen. Daf\u00fcr brau\u00adche ich ja nur Python 2.7 und einen belie\u00adbig ein\u00adfa\u00adchen Web\u00adser\u00adver, der Rest ver\u00adl\u00e4uft <a href=\"http:\/\/docs.getpelican.com\/en\/3.5.0\/install.html\">nach der Anlei\u00adtung<\/a>. Wird die fal\u00adsche Python-Ver\u00adsi\u00adon \u2013 stan\u00addard\u00adm\u00e4\u00ad\u00dfig ist das oft nicht 2.7 \u2013 ver\u00adwen\u00addet, so schl\u00e4gt <tt>pip install peli\u00adcan<\/tt> so erheb\u00adlich fehl, dass der anschlie\u00ad\u00dfen\u00adde Auf\u00adruf von <tt>peli\u00adcan-quick\u00adstart<\/tt> nur zwei Syn\u00adtax\u00adfeh\u00adler zur Fol\u00adge hat. Vor der Instal\u00adla\u00adti\u00adon soll\u00adte mit <tt>python \u2011V<\/tt> also drin\u00adgend \u00fcber\u00adpr\u00fcft wer\u00adden, ob Python 2.7 die akti\u00adve Ver\u00adsi\u00adon ist.<\/p>\n<p><b>Quick\u00adstart!<\/b><\/p>\n<p><tt>peli\u00adcan-quick\u00adstart<\/tt> funk\u00adtio\u00adniert danach jeden\u00adfalls wie gew\u00fcnscht: Ein\u00adtip\u00adpen, ein paar Fra\u00adgen beant\u00adwor\u00adten und es kann los\u00adge\u00adhen. Dies rich\u00adtet im Wesent\u00adli\u00adchen die Datei <tt>pelicanconf.py<\/tt> ein, die sozu\u00adsa\u00adgen das Orga\u00adni\u00adsa\u00adto\u00adri\u00adsche \u00fcber\u00adnimmt: Blog\u00adti\u00adtel, Per\u00adma\u00adlink\u00adstruk\u00adtur und <a href=\"http:\/\/docs.getpelican.com\/en\/3.5.0\/settings.html\">\u00e4hn\u00adli\u00adche Optio\u00adnen<\/a> wer\u00adden dort fest\u00adge\u00adlegt. Bei der Gele\u00adgen\u00adheit soll\u00adte dort gleich der <tt>OUTPUT_PATH<\/tt> so ange\u00adpasst wer\u00adden, dass die erzeug\u00adten HTML-Datei\u00aden im rich\u00adti\u00adgen Ord\u00adner lan\u00adden.<\/p>\n<p><b>Zeit f\u00fcr den ersten Test\u00adar\u00adti\u00adkel.<\/b><\/p>\n<p><tt>peli\u00adcan<\/tt> benutzt stan\u00addard\u00adm\u00e4\u00ad\u00dfig den Ord\u00adner <tt>.\/content\/<\/tt> f\u00fcr Ent\u00adw\u00fcr\u00adfe. Wenn per <tt>pip<\/tt> oder <tt>easy_install<\/tt> eine lauf\u00adf\u00e4\u00adhi\u00adge Ver\u00adsi\u00adon von Mark\u00addown instal\u00adliert ist, ver\u00adsteht es auch Mark\u00addown, eine Aus\u00adzeich\u00adnungs\u00adspra\u00adche, die von Dia\u00adspo\u00adra, Ghost, Stack Over\u00adflow, Git\u00adHub und wei\u00adte\u00adren Platt\u00adfor\u00admen bereits benutzt wird und die zu ler\u00adnen ich also sowie\u00adso emp\u00adfeh\u00adle.<\/p>\n<p>Peli\u00adcan ver\u00adwen\u00addet wie wohl alle sta\u00adti\u00adschen Gene\u00adra\u00adto\u00adren Rein\u00adtext\u00adda\u00adtei\u00aden statt einer kom\u00adple\u00adxen Daten\u00adbank. Es l\u00e4sst sich also schlicht Fol\u00adgen\u00addes tun:<\/p>\n<pre>emacs content\/new-blog-post.md<\/pre>\n<p>Der Datei\u00adna\u00adme ist weit\u00adge\u00adhend egal, ihr k\u00f6nnt die Bei\u00adtr\u00e4\u00adge also auch durch\u00adnum\u00adme\u00adrie\u00adren oder das Datum in den Datei\u00adna\u00admen schrei\u00adben.<\/p>\n<p>Ein funk\u00adtio\u00adnie\u00adren\u00addes Bei\u00adspiel f\u00fcr so einen Blog\u00adar\u00adti\u00adkel mit Kate\u00adgo\u00adrien, Tags und modi\u00adfi\u00adzier\u00adtem Per\u00adma\u00adlink (<em>slug<\/em>) sieht jeden\u00adfalls so aus:<\/p>\n<pre>Title: Beispielbeitrag\nDate: 2014-10-28 20:00\nModified: 2014-10-28 20:01\nCategory: Nerdkrams\nTags: hirnfick,pelican\nSlug: ein-beispiel\nAuthors: tux.\nSummary: Der Beispielbeitrag ist ein Beispiel.\nDies ist der erste Beitrag, den ich auf Pelican schreibe.\nSeht mal, *Markdown* **geht auch!**.\n&lt;u&gt;HTML \u00fcbrigens auch.&lt;\/u&gt;<\/pre>\n<p>Wie ihr seht, geh\u00f6rt der erste Teil eines Blog\u00adar\u00adti\u00adkels immer den Meta\u00adda\u00adten, ihr k\u00f6nnt also ziem\u00adlich leicht den Namen des Autors oder das Ver\u00ad\u00f6f\u00adfent\u00adli\u00adchungs\u00adda\u00adtum \u00e4ndern. Mit <a href=\"http:\/\/kerunix.com\/blog-using-orgmode-and-pelican.html\">Emacs und <tt>org-mode<\/tt><\/a> lie\u00ad\u00dfe sich das auto\u00adma\u00adti\u00adsie\u00adren, aber sicher\u00adlich gibt es da vie\u00adle wei\u00adte\u00adre M\u00f6g\u00adlich\u00adkei\u00adten. Es ist nat\u00fcr\u00adlich auch m\u00f6g\u00adlich, das Datum <a href=\"http:\/\/docs.getpelican.com\/en\/3.5.0\/content.html#file-metadata\">aus dem Datei\u00adsy\u00adstem<\/a> zu \u00fcber\u00adneh\u00admen.<\/p>\n<p><b>Release, release.<\/b><\/p>\n<p>Wenn euch der Bei\u00adspiel\u00adbei\u00adtrag so gef\u00e4llt, k\u00f6nnt ihr ihn ver\u00ad\u00f6f\u00adfent\u00adli\u00adchen:<\/p>\n<pre>cd ~\npelican<\/pre>\n<p>Ta-dah:<\/p>\n<p><a href=\"https:\/\/tuxproject.de\/blog\/wp-content\/uploads\/2014\/11\/Pelican6.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/tuxproject.de\/blog\/wp-content\/uploads\/2014\/11\/Pelican6-300x93.png\" alt=\"Pelican\" width=\"300\" height=\"93\" class=\"alignnone size-medium wp-image-10121\" srcset=\"https:\/\/tuxproject.de\/blog\/wp-content\/uploads\/2014\/11\/Pelican6-300x93.png 300w, https:\/\/tuxproject.de\/blog\/wp-content\/uploads\/2014\/11\/Pelican6-120x37.png 120w, https:\/\/tuxproject.de\/blog\/wp-content\/uploads\/2014\/11\/Pelican6-50x15.png 50w, https:\/\/tuxproject.de\/blog\/wp-content\/uploads\/2014\/11\/Pelican6.png 816w\" sizes=\"auto, (max-width: 300px) 100vw, 300px\"><\/a><\/p>\n<p><b>Plug\u00adins<\/b><\/p>\n<p>So fle\u00adxi\u00adbel das Peli\u00adcan-System wegen der Kom\u00adpi\u00adlie\u00adrung auch erschei\u00adnen mag, <em>nat\u00fcr\u00adlich<\/em> gibt es immer etwas, was f\u00fcr den eige\u00adnen Ein\u00adsatz fehlt. Word\u00adPress wird ja auch f\u00fcr sei\u00adne Erwei\u00adter\u00adbar\u00adkeit von vie\u00adlen Nut\u00adzern gesch\u00e4tzt. Aber wer sagt, dass \u201esta\u00adtisch\u201c immer \u201eunfle\u00adxi\u00adbel\u201c bedeu\u00adten muss?<\/p>\n<p>Tat\u00ads\u00e4ch\u00adlich gibt es auch f\u00fcr Peli\u00adcan eine Viel\u00adzahl an <a href=\"https:\/\/github.com\/getpelican\/pelican-plugins\">Plug\u00adins<\/a>, die den erzeug\u00adten HTML-Sei\u00adten etwas W\u00fcr\u00adze ver\u00adlei\u00adhen. Anzei\u00adge des <a href=\"http:\/\/www.gravatar.com\">Grava\u00adtars<\/a> f\u00fcr Arti\u00adkel\u00adau\u00adto\u00adren? <a href=\"https:\/\/github.com\/getpelican\/pelican-plugins\/tree\/master\/gravatar\">Funk\u00adtio\u00adniert.<\/a> You\u00adTube? <a href=\"https:\/\/github.com\/kura\/pelican_youtube\">Etwas umst\u00e4nd\u00adlich, aber kein Pro\u00adblem.<\/a> Eine Site\u00admap f\u00fcr die SEO-Ver\u00adr\u00fcck\u00adten? <a href=\"https:\/\/github.com\/getpelican\/pelican-plugins\/tree\/master\/sitemap\">War\u00adum nicht?<\/a><\/p>\n<p>Alle Funk\u00adtio\u00adnen sind da, aber es k\u00f6nn\u00adte noch etwas h\u00fcb\u00adscher aus\u00adse\u00adhen? Auch Peli\u00adcan kennt The\u00admes, eine Viel\u00adzahl von ihnen ist <a href=\"https:\/\/github.com\/getpelican\/pelican-themes\">auf Git\u00adHub<\/a> zu fin\u00adden. Es gen\u00fcgt, ein The\u00adme in den Ord\u00adner <tt>\/themes<\/tt> zu kopie\u00adren und in der Datei <tt>pelicanconf.py<\/tt> ein\u00adzu\u00adtra\u00adgen \u2013 beim n\u00e4ch\u00adsten Gene\u00adrie\u00adren wird es auto\u00adma\u00adtisch ver\u00adwen\u00addet.<\/p>\n<p><b>Kom\u00admen\u00adta\u00adre<\/b><\/p>\n<p>Da die mit Peli\u00adcan erzeug\u00adte Web\u00adsite nicht erst beim Auf\u00adruf erzeugt wird, sind Kom\u00admen\u00adta\u00adre, die in einer Daten\u00adbank lie\u00adgen, hier nicht ohne Wei\u00adte\u00adres m\u00f6g\u00adlich. Die offen\u00adsicht\u00adli\u00adche L\u00f6sung, <a href=\"http:\/\/ascraeus.org\/2013\/10\/Static-Pelican-Comments.html\">sta\u00adti\u00adsche Kom\u00admen\u00adta\u00adre<\/a> im Stil klas\u00adsi\u00adscher Leser\u00adbrie\u00adfe per E\u2011Mail zu erm\u00f6g\u00adli\u00adchen, ist auf Web\u00adsites mit einer hohen Fre\u00adquenz an Benut\u00adzer\u00adinter\u00adak\u00adti\u00adon mit\u00adun\u00adter zu auf\u00adw\u00e4n\u00addig. Wer damit leben kann, dass Kom\u00admen\u00adta\u00adre Java\u00adScript vor\u00adaus\u00adset\u00adzen, der kann zu eta\u00adblier\u00adten Fremd\u00adan\u00adbie\u00adtern wie <a href=\"http:\/\/www.disqus.com\">Dis\u00adqus<\/a>, das in vie\u00adle Peli\u00adcan-The\u00admes bereits inte\u00adgriert ist, oder <a href=\"http:\/\/www.intensedebate.com\">Inten\u00adse\u00adDe\u00adba\u00adte<\/a> grei\u00adfen oder ein selbst\u00adge\u00adho\u00adste\u00adtes Kom\u00admen\u00adtar\u00adsy\u00adstem wie etwa <a href=\"http:\/\/moparx.com\/2014\/03\/implementing-the-hashover-open-source-commenting-system-within-pelican\/\">Hash\u00adO\u00adver<\/a> oder <a href=\"http:\/\/posativ.org\/isso\/\">Isso<\/a> ein\u00adbin\u00adden. Daf\u00fcr muss nur im The\u00adme eine <a href=\"https:\/\/github.com\/MartinNowak\/pelican-blueidea\/commit\/148ec809c413447202211fa6456a6f9702d8e634\">ent\u00adspre\u00adchen\u00adde Anpas\u00adsung<\/a> erfol\u00adgen, bei der Gele\u00adgen\u00adheit las\u00adsen sich die Kom\u00admen\u00adta\u00adre auch gleich per CSS optisch anpas\u00adsen.<\/p>\n<p><b>Fazit<\/b><\/p>\n<p>Alles in Allem: Peli\u00adcan ist mehr als nur ein net\u00adtes Spiel\u00adzeug. <a href=\"http:\/\/docs.getpelican.com\/en\/3.4.0\/importer.html\">Es gibt einen Word\u00adPress-Import<\/a> und Plug\u00adins f\u00fcr aller\u00adlei Ein\u00adsatz\u00adzwecke. Ich emp\u00adfeh\u00adle Peli\u00adcan mal im Auge zu behal\u00adten. Es muss ja nicht immer ein auf\u00adge\u00adbl\u00e4h\u00adtes CMS sein.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>(Vor\u00adbe\u00admer\u00adkung: Dies ist eine leicht \u00fcber\u00adar\u00adbei\u00adte\u00adte Vari\u00adan\u00adte eines Bei\u00adtrags, den ich schon anders\u00adwo ver\u00ad\u00f6f\u00adfent\u00adlicht hat\u00adte.) Mir ist schon seit einer Wei\u00adle auf\u00adgrund von Per\u00ad\u00adfor\u00ad\u00admance- und Sicher\u00adheits\u00adpro\u00adble\u00admen danach, Word\u00adPress, das ich seit inzwi\u00adschen neun Jah\u00adren nut\u00adze, auf die\u00adsem klei\u00adnen Text\u00adver\u00ad\u00f6f\u00adfent\u00adli\u00adchungs\u00addings ein\u00admal durch etwas Ande\u00adres aus\u00adzu\u00adtau\u00adschen. Nicht aber gegen ein ande\u00adres \u201erich\u00adti\u00adges\u201c Blog\u00adsy\u00adstem wie s9y und Ghost, \u2026<\/p>\n<p><a href=\"https:\/\/tuxproject.de\/blog\/2014\/11\/ins-internet-schreiben-mit-pelican\/\" class=\"more-link\">\u2018Ins Inter\u00adnet schrei\u00adben mit Peli\u00adcan\u2019 wei\u00adter\u00adle\u00adsen \u00bb<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"wp_typography_post_enhancements_disabled":false,"activitypub_content_warning":"","activitypub_content_visibility":"","activitypub_max_image_attachments":3,"activitypub_interaction_policy_quote":"anyone","activitypub_status":"","footnotes":""},"categories":[19],"tags":[],"series":[],"class_list":["post-10114","post","type-post","status-publish","format-standard","hentry","category-nerdkrams"],"share_on_mastodon":{"url":"","error":""},"wp-worthy-pixel":{"ignored":false,"public":null,"server":null,"url":null},"wp-worthy-type":"normal","_links":{"self":[{"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/posts\/10114","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/comments?post=10114"}],"version-history":[{"count":0,"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/posts\/10114\/revisions"}],"wp:attachment":[{"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/media?parent=10114"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/categories?post=10114"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/tags?post=10114"},{"taxonomy":"series","embeddable":true,"href":"https:\/\/tuxproject.de\/blog\/wp-json\/wp\/v2\/series?post=10114"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}