Ghost headless CMS: modernūs tinklaraščiai

Kodėl tradicinės turinio valdymo sistemos nebeatitinka šiuolaikinių poreikių

Prisimenu, kaip prieš keletą metų kūriau tinklaraštį naudodamas WordPress. Viskas atrodė paprasta – pasirinkti temą, įdiegti kelis papildinius, ir voila! Bet kai pradėjau galvoti apie greitį, saugumą ir lankstumą, supratau, kad tradicinės CMS sistemos turi rimtų apribojimų. Frontend ir backend yra susieti viename pakete, o tai reiškia, kad kiekvienas puslapio užkrovimas reikalauja serverio resursų duomenų bazės užklausoms, PHP kodui vykdyti ir HTML generavimui.

Šiuolaikiniai projektai reikalauja daugiau. Turinys turi būti prieinamas ne tik svetainėje, bet ir mobiliojoje aplikacijoje, išmaniuosiuose įrenginiuose, o gal net balso asistentuose. Čia ir ateina headless CMS koncepcija – sistema, kuri atskiria turinį nuo jo pateikimo. Ghost platformą galima laikyti vienu geriausių šios filosofijos pavyzdžių.

Kas yra Ghost ir kuo jis skiriasi nuo kitų sprendimų

Ghost gimė 2013 metais kaip atsakas į pernelyg sudėtingą WordPress. Jo kūrėjas John O’Nolan norėjo sukurti platformą, kuri būtų skirta vienam dalykui – rašymui ir turinio publikavimui. Skirtingai nei universalios CMS, kurios bando būti viskas visiems, Ghost koncentruojasi į tai, ką daro geriausiai.

Techninė pusė yra įdomi. Ghost parašytas naudojant Node.js, o tai reiškia greitą veikimą ir modernią architektūrą. Duomenų bazei naudojamas MySQL arba SQLite, o pats turinys saugomas JSON formatu. Bet svarbiausia – Ghost turi galingą Content API, kuris leidžia gauti turinį bet kokiai aplikacijai ar svetainei.

Kai sakome „headless”, tai nereiškia, kad Ghost neturi savo frontend. Jis turi puikią numatytąją temų sistemą, paremtą Handlebars šablonais. Bet tikroji galia atsiskleidžia, kai naudojate Ghost tik kaip turinio šaltinį, o frontend kuriate su React, Vue, Next.js ar bet kokia kita moderna technologija.

Kaip veikia Ghost architektūra praktikoje

Pabandykime suprasti, kaip viskas veikia realybėje. Įsivaizduokite, kad kuriate technologijų tinklaraštį. Jūsų redaktoriai rašo straipsnius Ghost admin panelėje – tai intuityvi, minimalistinė aplinka, kuri primena Medium redaktorių. Jie prideda paveikslėlius, formatuoja tekstą, nustato publikavimo laiką.

Kai straipsnis publikuojamas, jis išsaugomas Ghost duomenų bazėje. Dabar įdomiausia dalis – kaip šis turinys pasiekia skaitytojus? Turite keletą variantų:

Galite naudoti Ghost numatytąsias temas. Jos yra greitai užsikraunančios, SEO optimizuotos ir atrodo profesionaliai. Bet jei norite daugiau kontrolės, galite sukurti savo temą naudojant Handlebars. Tai nesudėtinga, ypač jei turite HTML ir CSS patirties.

Arba – ir čia prasideda tikroji magija – galite naudoti Ghost Content API. Sukuriate frontend aplikaciją su Next.js ar Gatsby, kuri per API užklausas gauna turinį iš Ghost. Pavyzdžiui, jūsų React komponentas gali atrodyti maždaug taip:


fetch('https://jūsų-ghost-svetainė.com/ghost/api/v3/content/posts/?key=jūsų_api_raktas')
.then(response => response.json())
.then(data => {
// Čia turite visus straipsnius JSON formatu
// Galite juos atvaizduoti kaip norite
});

Tai suteikia neįtikėtiną lankstumą. Tas pats turinys gali būti naudojamas svetainėje, mobiliojoje aplikacijoje, net IoT įrenginiuose.

Našumo pranašumai, kurie tikrai jaučiami

Kalbant apie greitį, Ghost yra tikras čempionas. Kai naudojate jį headless režimu su statinių svetainių generatoriumi, jūsų puslapis gali užsikrauti per sekundes dalis. Kodėl? Nes generuojate statinius HTML failus build metu, o ne kiekvieną kartą, kai kažkas apsilanko svetainėje.

Testavau Ghost su Next.js ir rezultatai buvo įspūdingi. Google PageSpeed Insights rodė 95+ balus tiek mobiliuose, tiek kompiuteriuose. Lyginant su WordPress svetaine, kuri turėjo panašų turinį bet rodė 60-70 balų, skirtumas buvo akivaizdus.

Bet greitis – tai ne tik užkrovimo laikas. Ghost admin panelė taip pat veikia žaibiškai. Nėra to lėtumo, kurį jaučiate WordPress admin panelėje su daugybe papildinių. Rašymo patirtis yra sklandžiai, be jokių trukdžių.

Dar vienas aspektas – serverio resursai. Ghost reikalauja gerokai mažiau resursų nei tradicinės CMS. Galite paleisti Ghost svetainę su tūkstančiais straipsnių ant paprasto VPS už 5-10 eurų per mėnesį ir ji veiks puikiai.

Diegimas ir pradžia: kas jums reikės žinoti

Pradėti su Ghost nėra sudėtinga, bet reikia bent minimalių techninių žinių. Turite keletą variantų, kaip pradėti.

Paprasčiausias būdas – naudoti Ghost(Pro), oficialią hosting paslaugą. Užsiregistruojate, sumokate (planai prasideda nuo ~9 USD per mėnesį), ir per kelias minutes turite veikiančią Ghost instaliaciją. Viską valdo Ghost komanda – atnaujinimus, atsargines kopijas, saugumą. Tai puikus variantas, jei nenorite galvoti apie techninę pusę.

Bet jei esate developeris ir norite daugiau kontrolės, galite įdiegti Ghost ant savo serverio. Jums reikės:

– VPS serverio su Ubuntu (rekomenduojama 20.04 ar naujesnė versija)
– Bent 1GB RAM (2GB būtų geriau)
– Node.js (v14 ar naujesnė versija)
– MySQL arba MariaDB duomenų bazės
– Nginx kaip reverse proxy
– SSL sertifikato (galite gauti nemokamai su Let’s Encrypt)

Ghost turi puikią CLI įrankį, vadinamą Ghost-CLI, kuris automatizuoja daugumą diegimo proceso. Komandos yra gana paprastos:


npm install ghost-cli@latest -g
mkdir ghost-blog && cd ghost-blog
ghost install

Diegimo procesas užduos keletą klausimų – domeno vardą, duomenų bazės detales, ar norite sukonfigūruoti Nginx ir SSL. Atsakę į juos, per 10-15 minučių turėsite veikiančią Ghost instaliaciją.

Turinio kūrimas ir valdymas: redaktoriaus perspektyva

Vienas dalykas, kuris iš karto patraukia Ghost, yra jo redaktorius. Jis naudoja kortelių (cards) sistemą, kuri yra intuityvesnė už tradicinį WYSIWYG redaktorių. Rašote tekstą, o kai norite įterpti paveikslėlį, video, kodą ar kitą elementą, tiesiog spaudžiate „/” ir pasirenkate reikiamą kortelės tipą.

Markdown palaikymas yra puikus. Jei esate įpratę rašyti Markdown formatu (o daugelis techninių rašytojų yra), galite naudoti visus standartinės sintaksės elementus. Bet skirtingai nei kai kurios kitos platformos, Ghost rodo formatuotą rezultatą iš karto, o ne žalią Markdown kodą.

Kodo blokai yra ypač gerai įgyvendinti. Galite pasirinkti programavimo kalbą, ir sintaksės paryškinimas bus pritaikytas automatiškai. Tai svarbu technologijų tinklaraščiui, kur kodo pavyzdžiai yra kasdienybė.

Dar viena naudinga funkcija – narystės ir prenumeratos. Ghost turi integruotą narių valdymo sistemą, kuri leidžia kurti premium turinį. Galite turėti nemokamus ir mokamus narius, siųsti jiems naujienlaiškius, net integruoti Stripe mokėjimus. Tai viskas įtraukta be jokių papildinių.

API galimybės ir integracijos su moderniomis technologijomis

Čia Ghost tikrai spindi. Content API yra RESTful, gerai dokumentuotas ir lengvai naudojamas. Turite du pagrindinius API tipus:

Content API – skirtas viešam turiniui gauti. Tai read-only API, kurį naudojate frontend aplikacijose. Jis grąžina straipsnius, autorius, žymas, puslapius – visa, kas publikuota.

Admin API – suteikia pilną kontrolę. Galite kurti, redaguoti, trinti turinį programiškai. Tai naudinga, jei norite sukurti custom admin panelę arba automatizuoti tam tikrus procesus.

Praktinis pavyzdys: tarkime, kuriate tinklaraštį su Next.js. Galite naudoti getStaticProps funkciją, kad gautumėte straipsnius build metu:


export async function getStaticProps() {
const api = new GhostContentAPI({
url: 'https://jūsų-svetainė.com',
key: 'jūsų_content_api_raktas',
version: 'v3'
});

const posts = await api.posts.browse({
limit: 'all',
include: 'tags,authors'
});

return {
props: { posts }
};
}

Tai generuoja statinius puslapius su visais straipsniais. Kai publikuojate naują straipsnį Ghost, tiesiog paleiskite rebuild, ir jūsų svetainė atsinaujins.

Ghost taip pat turi webhooks. Galite nustatyti, kad kai publikuojamas naujas straipsnis, automatiškai paleistų Netlify ar Vercel build procesą. Arba siųstų pranešimą į Slack. Arba atnaujintų Algolia paieškos indeksą. Galimybės beveik neribotos.

Saugumo aspektai ir priežiūra

Vienas didžiausių headless CMS privalumų – pagerintas saugumas. Kadangi jūsų frontend ir backend yra atskirti, potencialių atakos vektorių yra mažiau. Jei naudojate statinį svetainės generatorių, jūsų frontend yra tiesiog HTML failai – nėra duomenų bazės, į kurią būtų galima įsilaužti, nėra PHP kodo, kurį būtų galima išnaudoti.

Ghost pats savaime yra gana saugus. Reguliariai išleidžiami saugumo atnaujinimai, o jei naudojate Ghost(Pro), jie taikomi automatiškai. Bet jei talpinate patys, turite pasirūpinti:

Reguliariais atnaujinimais. Ghost-CLI daro tai paprastai – tiesiog paleiskite `ghost update` ir sistema atsinaujins. Bet nepamirškite tai daryti reguliariai.

Atsarginėmis kopijomis. Ghost turi integruotą backup funkciją admin panelėje, bet geriau automatizuoti procesą. Galite naudoti cron job, kuris reguliariai daro duomenų bazės ir failų atsargines kopijas.

SSL sertifikatu. Tai būtina, ne tik saugumo, bet ir SEO požiūriu. Let’s Encrypt suteikia nemokamus sertifikatus, o Ghost-CLI gali juos sukonfigūruoti automatiškai.

Firewall nustatymais. UFW Ubuntu sistemoje yra paprastas naudoti ir pakankamas daugumai atvejų.

Kai Ghost tampa jūsų turinio ekosistemos centru

Dabar, kai supratome technines detales, pažiūrėkime į didesnį vaizdą. Ghost gali tapti ne tik jūsų tinklaraščio platforma, bet visos turinio strategijos centru.

Įsivaizduokite tokį scenarijų: turite technologijų tinklaraštį, kuris publikuoja straipsnius, vadovus, apžvalgas. Naudojate Ghost kaip pagrindinę turinio saugyklą. Jūsų pagrindinis svetainė yra Next.js aplikacija, kuri gauna turinį per Ghost API ir generuoja super greitą statinę svetainę.

Bet tai ne viskas. Turite mobiliąją aplikaciją? Ji taip pat gali naudoti tą patį Ghost API ir rodyti tą patį turinį, pritaikytą mobiliam ekranui. Norite siųsti savaitinius naujienlaiškius? Ghost turi integruotą email funkciją. Planuojate podcast? Galite pridėti audio failus prie straipsnių ir naudoti Ghost kaip podcast feed šaltinį.

Visa tai veikia su vienu turinio šaltiniu. Rašote kartą, publikuojate visur. Tai ne tik efektyvu, bet ir užtikrina turinio nuoseklumą visose platformose.

Realus pavyzdys iš praktikos: vienas mano klientas naudoja Ghost savo įmonės tinklaraščiui, dokumentacijai ir vidiniams pranešimams. Viešas turinys rodomas per Next.js svetainę, dokumentacija per custom React aplikaciją, o vidiniai pranešimai per private Ghost temą. Viskas valdo viena komanda, viename admin panelėje, bet pateikiama skirtingai priklausomai nuo auditorijos.

Kaina? Viso labo Ghost(Pro) prenumerata ir Vercel nemokamas planas frontend hostingui. Našumas? Puslapis užsikrauna per 1-2 sekundes iš bet kurios pasaulio vietos. Priežiūra? Minimali, nes dauguma dalykų automatizuota.

Tai ir yra modernaus headless CMS grožis – lankstumas be sudėtingumo, galia be perkrovos. Ghost suteikia pakankamai funkcionalumo, kad galėtumėte pradėti greitai, bet pakankamai lankstumo, kad galėtumėte augti ir adaptuotis keičiantis poreikiams. Ar tai idealus sprendimas kiekvienam projektui? Tikriausiai ne. Bet jei kuriate turinį orientuotą projektą ir vertinate greitį, paprastumą ir modernią architektūrą, Ghost tikrai verti jūsų dėmesio.

Daugiau

Elasticsearch pilno teksto paieška: indeksavimas ir užklausos