Saturday 21.10.2017 Lukuaika: 6 min

Hyvästi Wordpress, tervetuloa Jekyll!

Heivasin äskettäin Wordpress-julkaisujärjestelmän menemään omista blogeistani (haulo.fi, blogi.sokeriseuranta.fi). Niitä pyörittää nyt Jekyll.

Kerron nyt miksi halusin Wordpressistä eroon, miksi päädyi Jekylliin ja miten vaihto-operaatio sujui. Teknisiin yksityiskohtiin Jekylllistä en tässä tekstissä kuitenkana mene – se ansaitsee ihan oman postauksensa.

Mutta ensin vähän taustaa: olen blogannut vuodesta 2013. Aloitin Sokerivammaisen opas -blogin kirjoittamisen Blogger-palvelussa, josta siirryin parin vuoden jälkeen Wordpressiin. Sokerivammaisen opas on päänblogini, haulo.fi puolestaan satunnaisemmin päivittyvä ja sisällöltään sekalaisempi paikka, jonne silloin tällöin kirjoittelen omia ajatuksiani ja mielipiteitäni.

Vaikka kirjoitan molempia ihan harrastuspohjalta, on niiden toiminta ja luotettavuus kuitenkin minulle tärkeää. Toisaalta en halua upottaa niiden ylläpitoon puolipakolla ylimääräistä rahaa. Tässä tapauksessa blogit ovat majailleet omalla (tai oikeastaan firmani) palvelimella, joten olen huolehtinut itse sivustojen ylläpidosta.

Miksi halusin Wordpressistä eroon?

Lyhyesti sanottuna Wordpress alkoi tuntua liian raskaalta ja kömpelöltä omiin tarpeisiini nähden. Halusin jonkun kevyen yksinkertaisen tavan hoitaa sivustoani. Sen pitäisi olla ominaisuuksiltaan sopivan kattava mutta samalla mahdollisimman “huoltovapaa”.

Vaikka Wordpress vaikutti teknisesti mielenkiitoisalta kun siihen aikanaan tutustuin, alkoi sen sotkuisuus paljastua ajan myötä. Wordpress on vuosien aikana kasvanut bloggaualustasta isoksi sisällönhallintajärjestelmäksi, ja pinnan alta se on monimutkainen ellei jopa sotkuinen. Kauniiksi ja yksinkertaiseksi sitä ei voi millään tavalla sanoa.

Lisäksi minua alkoi ärsyttää se, kuinka Wordpressiä toisaalta hehkutettiin sen helpolla laajennettavuudella, mutta samaan hengevetoon aina todettiin, että suurin osa Wordpressin lisäosahakemiston sisällöstä on sellaista kuraa, jota ei mittään nimessä pidä käyttää.

Eihän siinä ole mitään järkeä, että järjestelmä tekee sivuston rampauttamisesta helppoa.

Toki lisäosien asentaminen on siis Wordpressissä helppoa: sen kun kliksuttelee vain menemään. Mutta vaikea osuus on löytää ne lisäosat, joita oikeasti kannattaa asentaa. Se puolestaan vaatii asiantuntijaosaamista, jota peruskäyttäjältä ei voi vaatia.

Muutenkin Wordpressin hallintapaneeli tuntui olevan outo sekoitus ylläpitäjän, kehittäjän ja sisällöntuottajan työkaluja. Paska soppa, sanon minä.

Vaikka olen itse ohjelmistokehittäjä, en halua sisällöntuottajan saappaisiin astuessani mitään ylimääräistä tauhkaa tielleni. Siksi aloin etsiä vaihtoehtoa Wordpressille.

Miksi päädyin Jekylliin?

Olin jo aikaisemmin kuullut puhuttavan Wordpressiä yksinkertaisimmista sisällönhallintajärjestelmistä, ns. sivustogeneraattoreista. Päätin tutkia niitä uudemmaan kerran ja vähän tarkemmin.

(Kerron vähän myöhemmin mitä staattinen sivustogeneraattori tarkoittaa.)

Päädyin aika nopeasti Jekyll-nimiseen systeemiin. Se on sivustogeneraattoreista selkeästi suosituin. Jonkun verran valintaan vaikutti myös kaksi teknistä asiaa:

  • Jekyll on tehty Ruby-ohjelmointikielellä. Ruby on minulle entuudestaan tuttu ohjelmointikieli, joten ajattelin, että jos tarvitsen joskus jotain lisätoiminnallisuutta, pystyn tekemään sen vaikka itse.
  • Jekyll käyttää ulkoasun toteuttamiseen Liquid-sapluunoita. Olen harkinnut Liquidin hyödyntämistä eräässä verkkopalvelussani, joten oppisin tässä samalla sitä ikään kuin sivumennen. (Jos et tiedä mitä sapluuna tässä tapauksessa tarkoittaa, ei haittaa. Pointti on se, että olen joka tapauksessa halunnut tutustua tähän tekniikkaan.)

Lisäksi Jekyll on tehty bloggaus mielessä pitäen, ja systeemistä löytyy nippu sisäänrakennettuja toimintoja blogisaitin tekemisen tueksi.

Totta puhuen ihastuin Jekylliin niin nopeasti, että en juurikaan tutkinut muita vaihtoehtoja. Ennen Jekylliä katsastin Pico CMS:n, joka sekin näytti oikein elegantilta, mutta päädyin Jekylliin myös sen suosion takia.

Mikä on sivustogeneraattori?

Jotta asia olisi helpompi ymmärtää, selitän ensin lyhyesti, miten Wordpress-sivusto (ja oikeastaan muutkin tietokantaa käyttävät sisällönhallintajärjestelmät) toimii.

Wordpress-sivuston ulkoasun määrittelee hyvin pitkälti sivuston teema. Se koostuu php-, html- ja css-kielillä krjoitetuista tiedostoista. Näissä tiedostoissa ei ole sitä teksti- ja kuvasisältöä, jonka sivujen vierailija näkee. Sen sijaan tekstisisältö on tallennettu tietokantaan. Kuvat ja muut tekstin joukkoon liitettävät tiedostot tallentuvat maan hakemistoonsa, kun niitä lisäileen Wordpressin käyttöliittymän kautta.

Kun joku avaa selaimellaan jonkun sivuston näkymistä, kysyy webbipalvelin teemalta “miltä tämän sivun kuuluu näyttää?”. Tietokannalta palvelin kysyy “mitä sisältöä tällä sivulla?”. Sen jälkeen palvelin yhdistää nämä tiedot keskenään ja lähettää selaimelle valmiin sivun näytettäväksi.

Oleellista on, että tämä toistetaan jokaisen sivulatauksen kohdalla erikseen. Siis silloinkin, vaikka sisältö ei kahden sivulatauksen välillä olisi muuttunut yhtään. Toisin sanoen Wordpress-sivusto on kasa raaka-aineita, joista leivotaan aina pyydettäessä valmis sivu.

Sivustogeneraattori toimii toisella tavalla. Ne luovat tuon valmiin sivun jo etukäteen. Aina kun sivuston sisältöä muutetaan, sinne lisätään jotain tai sieltä poistetaan jotain, käy sivustogeneraattori raaka-aineet läpi ja luo niistä valmiin “kakun”. Sen jälkeen tämä kakku siirretään webbipalvelimelle tarjoiltavaksi.

En tässä tekstissä selosta sivustogeneraattodein teknisiä yksityiskohtia tätä enemmään. Oleellista on ymmärtää tämä perusperiaate ja se, että myös Wordpressissä ja vastaavissa järjestelmissä muodostetaan joka tapauksessa staattinen html-sivu selainta varten. Ero on siinä, missä vaiheessa tämä luonti tapahtuu.

Miten sisällön siirtäminen Wordpressistä Jekylliin tapahtuu?

On olemassa Wordpress-lisäosa, joka hoitaa suurimman osan työstä. Se muuttaa automaattisesti artikkelit ja sivut Jekyllin ymmärtämään muotoon (Markdown).

Tuo lisäosa tekee Wordpress-sivuston sisällöstä zip-paketin, joka alkaa automaattisesti latautua. Mukana on myös artikkeleissa käytetyt kuvat. Kategoriat, avainsanat ja muukin metadata säilyy.

Omalla kohdallani muunnos onnistui hyvin. Muutaman postauksen kohdalla kävin vähän säätämässä tekstiä, jotta se istuisi paremmin uuteen ulkoasuun. Oikeastaan tämä ei kuitenkaan ollut lisäosan vika, vaan olin itse tehnyt tekstin joukoon turhia muotoiluja, jotka eivät enää sopineetkaan uuteen ulkoasuun. Mukana oli myös jonkin verran sotkua peräisin siirtymästä Bloggerista Wordpressiin.

Lisäosa säilyttää kätevästi vanhan sivurakenteen ja sivujen osoitteet, joten vaikka taustatekniikka muuttuu, eivät mahdolliset linkit sivustolle jää toimimattomiksi.

Kuinka kirjoitan blogipostauksen Jekyll-pohjaiselle sivustolle?

Jekyllissä kaikki toimii tiedostojen avulla. Näin ollen myös blogipostaus on vain tavallinen tekstitiedosto. Jekyll tulee muutamaa erilaista muotoilukieltä, joista yleisin on Markdown. Sen avulla Jekyllille kerrotaan esimerkiksi se, mikä osa tekstiä on otsikko, mikä leipätekstiä ja mikä kohta pitää muotoilla bullet-listaksi.

Tiedoston alkuun merkitään lisäksi metatietoa artikkelista, kuten sen otsikko, päiväys ja asiasanat. Metatietoa voi lisätä monenlaista ihan oman tarpeen mukaan.

Lopuksi tiedosto tallennetaan blogoartikkeleille varattuun hakemistoon.

Uusi postaus tallennetaan siis ensin omalla koneella majailevalle kopiolle sivustosta. Varsinaisen julkaisuvaiheen voi hoitaa monellakin tapaa. Päämäärä on siirtää Jekyllin luomat html-tiedostot (ja kuvat ynnä muut oheistiedostot) webbipalvelimelle. Jekyll ei itsessään määrää mitään yhtä tapaa tähän, mutta kerron nyt miten itse asian hoidan.

Olen liittänyt koko sivustoni osaksi versionhallinnan. Versionhallinta on lyhyesti sanottuna ohjelmistojen tekemisessä käytetty työkalu, jonka avulla pidetään kirjaa lähdekoodin muutoksista. Koska osa nettisivustakin on koodia ja blogiartikkelitkin tavallisia teksitiedostoja, sopii versionhallinta Jekyll-pojjaisen nettisivustonkin hallintaan mainiosti. En ehkä suosittelisi tätä tapaa varauksetta ihan kaikille peruskäyttäjille, mutta koska itse olen ohjelmistoihminen, on tällainen tyyli minulle varsin luonteva tapa.

(Versionhallinnan käyttämisessä on muuten mukava sivuvaikutus: sivuston varmuuskopiointi hoituu käytännössä automaattisesti siinä sivussa. Käytänössä sivustostani on aina 3 - 5 kopiota eri paikoissa, ja versionhallintaohjelmisto pitää huolen, että ne eivät koskaan mene sekaisin keskenään.)

Kun lisään uuden blogipostauksen versionhallintaan, hoitaa tekemäni automaatio loput julkaisusta:

  • muutokset kopioidaan webbipalvelimelle

  • webbipalvelimelle asennettu Jekyll muuntaa “raaka-aineet” valmiiksi sivuiksi ja kopioi ne palvelimella oikeaan paikkaan

No, onko Jekyll sitten hyvä systeemi?

Summa summarum: olen toistaiseksi perhanan tyytyväinen. Pidemmän aikavälin kokemuksista ei tosin vielä osaa sanoa, koska uudet Jekyll-pohjaiset sivustot ovat olleen pystyssä vasta pari päivää. Mutta jo tässä vaiheessa moni asia, mistä Wordpress-sivuston kanssa stressasin, on kadonnut kuin ilmaan. Ensituntumalta voin siis sanoa, että Jekyll sopii minun käyttööni mainiosti.