[{"text_idx": "#000001", "text": "Ghost blogi ja Node.js Zone virtuaalserveris"}, {"text_idx": "#000002", "text": "Antud blogipostitus on 84 kuud vana ning ei pruugi olla enam ajakohane."}, {"text_idx": "#000004", "text": "Ka\u0308esolevas na\u0308ites paigaldame Zone virtuaalserverisse populaarse Ghost blogimootori, mis on eelko\u0303ige tuntud oma lihtsuse ja viisaka va\u0308limuse poolest. Kui niio\u0308elda suured blogimootorid, na\u0308iteks WordPress, vo\u0303imaldavad teha ko\u0303ikvo\u0303imalikke veebilehti visiitkaartidest kuni suurte e-poodideni, siis Ghost vo\u0303imaldab teha vaid u\u0308ht ehk siis ko\u0303ige tavalisemat blogi."}, {"text_idx": "#000005", "text": "Vaikimisi kasutab Ghost andmebaasina SQLite manus-andmebaasi, kuid toetatud on ka MySQL, mida proovimegi kasutada SQLite asemel. SQLite on va\u0308ga mugav katsetusteks, selle tarbeks ei ole vaja paigaldada va\u0308liseid teenuseid, kuid tunduvalt ebamugavam on see haldamise mo\u0303ttes, kuna sellele ei pa\u0308a\u0308se \u201cva\u0308ljastpoolt\u201d kuidagi ligi. Samuti vo\u0303ib tekkida probleeme Node.js versiooni uuendamisel, kuna SQLite draiver tuleb iga Node.js versiooni jaoks eraldi kompileerida. Zone virtuaalserveri pakketides on mugav MySQL tugi samas juba olemas ja seega on seda isegi lihtsam kasutusele vo\u0303tta."}, {"text_idx": "#000006", "text": "Esimese sammuna loome Zone haldusliideses uue alamdomeeni, millel hakkab meie Ghost blogi to\u0308o\u0308le."}, {"text_idx": "#000007", "text": "Alamdomeeni jaoks valime ko\u0303igepealt sobiva domeeninime, siin na\u0308ites on selleks ghost.tahvel.info, ja seeja\u0308rel ma\u0308a\u0308rame mod_proxy sihtpordi. Vajalik on sihtpordi ma\u0308a\u0308ramine seeto\u0303ttu, et Node.js rakendusi ei ka\u0308ivitata erinevalt PHP rakendustest la\u0308bi Apache, vaid siinkohal to\u0308o\u0308tab Apache veebiserver hoopis veebiproksina \u2013 pa\u0308ringud tulevad sisse ja kui need on suunatud kindlale alamdomeenile, siis Apache suunab need lihtsalt edasi ja\u0308rgmisele serverile, mis juhtub kuulama mod_proxy seadetes ma\u0308a\u0308ratud pordil. Ghost kasutab vaikimisi pordina 2368 ja selle numbri valimegi."}, {"text_idx": "#000008", "text": "Kausta va\u0308a\u0308rtus ei ole siinkohal u\u0308ldse oluline, kuna Apache nende failide poole ei po\u0308o\u0308rdu. Seame selleks siin na\u0308ites ghost, kuid reaalselt pole sellel va\u0308a\u0308rtusel erilist vahet."}, {"text_idx": "#000009", "text": "Kui alamdomeen on olemas, tuleks saada Ghost koodifailid kuidagi meie virtuaalserverisse. U\u0308heks vo\u0303imaluseks on ku\u0308lastada Ghost allalaadimiste lehte ja vajalikud failid sealt zip-failina alla laadida. Seeja\u0308rel tuleks need failid kas FTP vo\u0303i SSH abil virtuaalserverisse toimetada."}, {"text_idx": "#000010", "text": "Teine vo\u0303imalus on laadida koodifailid wget ka\u0308su abil otse serverist. Seega tuleks meil logida SSH abil serverisse. Kuidas seda ta\u0308pselt teha, saab lugeda siit."}, {"text_idx": "#000011", "text": "Kui u\u0308hel hetkel juba serveris sees oleme, saab vajalikud failid alla laetud ja paigaldatud ja\u0308rgmiste ka\u0308skude abil:"}, {"text_idx": "#000012", "text": "Sellega tekitasime oma kodukataloogi uue kausta ./ghost, milles asuvadki ko\u0303ik Ghost koodifailid."}, {"text_idx": "#000013", "text": "Paigaldame kohe ka ko\u0303ik vajalikud alammoodulid, mida Ghost oma to\u0308o\u0308 jaoks vajab. Vaikimisi ei taha Ghost Node.js versiooniga 6 ja uuemad to\u0308o\u0308tada, eelko\u0303ige probleemide to\u0303ttu SQLite andmebaasiga, aga kuna meie seda ei kasuta, siis ei pea me ka muretsema. U\u0308tleme lisaparameetriga, et Ghost ei kontrolliks Node.js versiooni."}, {"text_idx": "#000014", "text": "Edasi tuleks meil hakata rakenduse konfiguratsioonifaili looma, kuid see eeldab MySQL andmebaasi ja -kasutaja olemasolu. Po\u0308o\u0308rdumegi selle jaoks tagasi Zone haldusliidesesse ja avame sektsiooni Andmebaasid ja sealt MySQL."}, {"text_idx": "#000015", "text": "Esiteks tuleks meil luua uus andmebaas. Valime baasile sobiva nime ja lisame selle."}, {"text_idx": "#000016", "text": "Kui baas on loodud, saame lisada ka andmebaasi kasutaja."}, {"text_idx": "#000017", "text": "Ja kui ka kasutaja on loodud, saame samal lehel ma\u0308a\u0308rata uuele kasutajale vajalikud o\u0303igused Ghost andmebaasiga toimetamiseks. Ko\u0303ige lihtsam on lihtsalt klikata nupul \u201cvali ko\u0303ik,\u201d kuid reaalselt ei la\u0308he nimekirja lo\u0303pus olevad linnukesi siiski vaja."}, {"text_idx": "#000018", "text": "Nu\u0308u\u0308d saame ja\u0308lle minna SSH juurde tagasi ja lisame ./ghost kausta uue konfiguratsioonifaili. U\u0308ks vo\u0303imalus on nimetada fail config.example.js u\u0308mber failiks config.js ja muuta selle sisu. Kuid vo\u0303ib selle faili ka ta\u0308iesti ise teha. Konfiguratsioonifaili sisu peaks va\u0308lja na\u0308gema ja\u0308rgmine (asenda url ning MySQL seadistuse va\u0308a\u0308rtused)."}, {"text_idx": "#000019", "text": "Va\u0308a\u0308rtus config.production.url hakkab olema meie blogi veebiaadress, mida kasutatakse linkide juures."}, {"text_idx": "#000020", "text": "Meiliseadistuseks config.production.mail piisab vaid vajaliku transpordimehhanismi valikust, kuna Zone virtuaalserveritest saab kirju saata standardpordi kaudu ilma autentimata."}, {"text_idx": "#000021", "text": "Serveri seadistus config.production.server u\u0308tleb, et meie rakendus hakkab kuulama pordil 2368 ehk sellelsamal, kuhu hakkab edaspidi Apache pa\u0308ringuid suunama."}, {"text_idx": "#000022", "text": "Nu\u0308u\u0308dseks peaks meil olemas olema nii rakenduse failid, toimiv andmebaas ja rakendus olema ka korrektselt seadistatud, kuid erinevalt PHP rakendustest tuleb Node.js rakendused eraldi ka\u0308ima to\u0303mmata, kuna tegu on nn. deemon tu\u0308u\u0308pi rakendustega. Zone virtuaalserverites saab selleks kasutada PM2 nimelist haldusto\u0308o\u0308riista ja tekitamegi selle jaoks vastava konfiguratsioonifaili."}, {"text_idx": "#000023", "text": "Konfiguratsioonifail ghost.json, mis u\u0308tleb PM2 rakenduste haldurile kuidas meie Ghost blogi jooksutada, vo\u0303iks asuda meie kodukataloogis ehk seal kuhu satume, kui ssh\u2019ga sisse logime. Faili sisu peaks va\u0308lja na\u0308gema ja\u0308rgmine:"}, {"text_idx": "#000024", "text": "Nu\u0308u\u0308d peaks meil olema ko\u0303ik eeldused olemas, et rakendus lo\u0303puks ometi ka\u0308ivitada. Selle tarbeks avame Zone haldusliideses sektsiooni Veebiserver ja sealt alt Node.js ja PM2. Avanenud leheku\u0308ljel saame lisada uue Node.js rakenduse ja rakenduse aknas tuleks meil esiteks ma\u0308a\u0308rata rakenduse nimi, milleks vo\u0303ib olla suvaline endale sobiv nimi. Seeja\u0308rel tuleks o\u0308elda, et kust leiab PM2 rakenduse to\u0308o\u0308ks vajaliku konfiguratsioonifaili ghost.json, mille tekitasime eelmises punktis oma kodukataloogi ja viimasena valida, et kui palju ma\u0308lu me rakendusele eraldame."}, {"text_idx": "#000025", "text": "Peale lisa nupul klikkimist tuleb veidi oodata, leheku\u0308lge va\u0308rskendades peaksime na\u0308gema, et teade \u201cka\u0308ivitamisel\u201d muutub u\u0308hel hetkel \u201cka\u0308ivitatud\u201d. Nu\u0308u\u0308d polegi enam muud, kui avada Ghost blogi aadress."}, {"text_idx": "#000026", "text": "Kui na\u0308ed blogi aadressil ja\u0308rgmist pilti, siis oled ko\u0303ik o\u0303igesti teinud. Blogi to\u0308o\u0308tab ja on kasutusvalmis."}, {"text_idx": "#000027", "text": "Muidugi on meil vaja ka kasutajakontot ja esimese, niio\u0308elda admin konto saab luua, kui minna aadressile domeeninimi/ghost."}, {"text_idx": "#000028", "text": "Ja kui konto juba loodud, siis polegi muud, kui postitusi kirjutama!"}, {"text_idx": "#000029", "text": "Zone on WordCamp Finland 2023 ho\u0303besponsor"}, {"text_idx": "#000030", "text": "Me peame taas ra\u0308a\u0308kima domeenide hindadest"}, {"text_idx": "#000031", "text": "Zone Veebiakadeemia: veebimajutusteenus - puust ja punaseks"}]