---
title: "Ghost blogi ja Node.js Zone virtuaalserveris"
canonical_url: "https://www.zone.ee/blogi/ghost-blogi-nodejs-zone-virtuaalserveris/"
post_type: "post"
published: "2016-09-23T06:26:56+00:00"
modified: "2016-09-23T06:26:56+00:00"
author: "Jaanus Putting"
taxonomies:
  category:
    - name: "Zone.ee Blog"
      url: "https://www.zone.ee/blogi/category/zone-ee-blog/"
  post_tag:
    - name: "ghost"
      url: "https://www.zone.ee/blogi/tag/ghost/"
    - name: "node.js"
      url: "https://www.zone.ee/blogi/tag/node-js/"
---

# Ghost blogi ja Node.js Zone virtuaalserveris

> Hiljuti lisandus Zone virtuaalserveri pakettides võimalus kasutada lisaks PHP-veebirakendustele ka [Node.js-rakendusi](https://www.zone.ee/blogi/2016/07/22/node-js-veebirakendus-websocket/)

Käesolevas näites paigaldame Zone virtuaalserverisse populaarse [Ghost](https://ghost.org/) blogimootori, mis on eelkõige tuntud oma lihtsuse ja viisaka välimuse poolest. Kui niiöelda suured blogimootorid, näiteks WordPress, võimaldavad teha kõikvõimalikke veebilehti visiitkaartidest kuni suurte e-poodideni, siis Ghost võimaldab teha vaid üht ehk siis kõige tavalisemat blogi.

Vaikimisi kasutab Ghost andmebaasina SQLite manus-andmebaasi, kuid toetatud on ka MySQL, mida proovimegi kasutada SQLite asemel. SQLite on väga mugav katsetusteks, selle tarbeks ei ole vaja paigaldada väliseid teenuseid, kuid tunduvalt ebamugavam on see haldamise mõttes, kuna sellele ei pääse “väljastpoolt” kuidagi ligi. Samuti võib 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 võtta.

##### Alamdomeeni loomine

Esimese sammuna loome Zone haldusliideses uue alamdomeeni, millel hakkab meie Ghost blogi tööle.

[![ghost02](https://www.zone.ee/static/sites/2/2016/09/ghost02-300x154.png)](https://www.zone.ee/static/sites/2/2016/09/ghost02.png)

Alamdomeeni jaoks valime kõigepealt sobiva domeeninime, siin näites on selleks *ghost.tahvel.info*, ja seejärel määrame *mod\_proxy* sihtpordi. Vajalik on sihtpordi määramine seetõttu, et Node.js rakendusi ei käivitata erinevalt PHP rakendustest läbi Apache, vaid siinkohal töötab Apache veebiserver hoopis veebiproksina – päringud tulevad sisse ja kui need on suunatud kindlale alamdomeenile, siis Apache suunab need lihtsalt edasi järgmisele serverile, mis juhtub kuulama *mod\_proxy* seadetes määratud pordil. Ghost kasutab vaikimisi pordina 2368 ja selle numbri valimegi.

[![ghos03](https://www.zone.ee/static/sites/2/2016/09/ghos03-300x212.png)](https://www.zone.ee/static/sites/2/2016/09/ghos03.png)

Kausta väärtus ei ole siinkohal üldse oluline, kuna Apache nende failide poole ei pöördu. Seame selleks siin näites *ghost*, kuid reaalselt pole sellel väärtusel erilist vahet.

##### Koodifailide laadimine

Kui alamdomeen on olemas, tuleks saada Ghost koodifailid kuidagi meie virtuaalserverisse. Üheks võimaluseks on külastada Ghost [allalaadimiste lehte](https://ghost.org/developers/) ja vajalikud failid sealt zip-failina alla laadida. Seejärel tuleks need failid kas FTP või SSH abil virtuaalserverisse toimetada.

[![ghost01](https://www.zone.ee/static/sites/2/2016/09/ghost01-300x221.png)](https://www.zone.ee/static/sites/2/2016/09/ghost01.png)

Teine võimalus on laadida koodifailid *wget* käsu abil otse serverist. Seega tuleks meil logida SSH abil serverisse. Kuidas seda täpselt teha, saab lugeda [siit](https://www.zone.ee/blogi/2015/06/18/ssh-kasutamisest-zone-virtuaalserveris/).

Kui ühel hetkel juba serveris sees oleme, saab vajalikud failid alla laetud ja paigaldatud järgmiste käskude abil:

```
$ cd ~
$ wget https://ghost.org/zip/ghost-0.11.0.zip
$ unzip ghost-0.11.0.zip -d ghost
$ cd ghost
```

Sellega tekitasime oma kodukataloogi uue kausta *./ghost*, milles asuvadki kõik Ghost koodifailid.

Paigaldame kohe ka kõik vajalikud alammoodulid, mida Ghost oma töö jaoks vajab. Vaikimisi ei taha Ghost Node.js versiooniga 6 ja uuemad töötada, eelkõige probleemide tõttu SQLite andmebaasiga, aga kuna meie seda ei kasuta, siis ei pea me ka muretsema. Ütleme lisaparameetriga, et Ghost ei kontrolliks Node.js versiooni.

```
$ GHOST_NODE_VERSION_CHECK=false npm install --production
```

##### Andmebaasi loomine

Edasi tuleks meil hakata rakenduse konfiguratsioonifaili looma, kuid see eeldab MySQL andmebaasi ja -kasutaja olemasolu. Pöördumegi selle jaoks tagasi Zone haldusliidesesse ja avame sektsiooni *Andmebaasid* ja sealt *MySQL*.

[![ghost04](https://www.zone.ee/static/sites/2/2016/09/ghost04-300x95.png)](https://www.zone.ee/static/sites/2/2016/09/ghost04.png)

Esiteks tuleks meil luua uus andmebaas. Valime baasile sobiva nime ja lisame selle.

[![ghost05](https://www.zone.ee/static/sites/2/2016/09/ghost05-300x138.png)](https://www.zone.ee/static/sites/2/2016/09/ghost05.png)

Kui baas on loodud, saame lisada ka andmebaasi kasutaja.

[![ghost06](https://www.zone.ee/static/sites/2/2016/09/ghost06-300x241.png)](https://www.zone.ee/static/sites/2/2016/09/ghost06.png)

Ja kui ka kasutaja on loodud, saame samal lehel määrata uuele kasutajale vajalikud õigused Ghost andmebaasiga toimetamiseks. Kõige lihtsam on lihtsalt klikata nupul “vali kõik,” kuid reaalselt ei lähe nimekirja lõpus olevad linnukesi siiski vaja.

[![ghost07](https://www.zone.ee/static/sites/2/2016/09/ghost07-300x107.png)](https://www.zone.ee/static/sites/2/2016/09/ghost07.png)

##### Ghost blogi seadistamine

Nüüd saame jälle minna SSH juurde tagasi ja lisame ./ghost kausta uue konfiguratsioonifaili. Üks võimalus on nimetada fail *config.example.js* ümber failiks *config.js* ja muuta selle sisu. Kuid võib selle faili ka täiesti ise teha. Konfiguratsioonifaili sisu peaks välja nägema järgmine (asenda *url* ning MySQL seadistuse väärtused).

```
var path = require('path'), config;
config = {
  production: {
    url: 'http://ghost.tahvel.info',
    mail: {
      transport: 'SMTP'
    },
    database: {
      client: 'mysql',
      connection: {
        host : 'd12345.mysql.zone.ee',
        user : 'd12345_ghost',
        password : 'Ghostpass123',
        database : 'd12345_ghost',
        charset : 'utf8'
      }
    },
    server: {
      host: '127.0.0.1',
      port: '2368'
    }
  }
};
module.exports = config;
```

Väärtus *config.production.url* hakkab olema meie blogi veebiaadress, mida kasutatakse linkide juures.

Meiliseadistuseks *config.production.mail* piisab vaid vajaliku transpordimehhanismi valikust, kuna Zone virtuaalserveritest saab kirju saata standardpordi kaudu ilma autentimata.

Serveri seadistus *config.production.server* ütleb, et meie rakendus hakkab kuulama pordil 2368 ehk sellelsamal, kuhu hakkab edaspidi Apache päringuid suunama.

##### Rakenduse töö seadistamine

Nüüdseks peaks meil olemas olema nii rakenduse failid, toimiv andmebaas ja rakendus olema ka korrektselt seadistatud, kuid erinevalt PHP rakendustest tuleb Node.js rakendused eraldi käima tõmmata, kuna tegu on nn. *deemon* tüüpi rakendustega. Zone virtuaalserverites saab selleks kasutada PM2 nimelist haldustööriista ja tekitamegi selle jaoks vastava konfiguratsioonifaili.

Konfiguratsioonifail *ghost.json*, mis ütleb PM2 rakenduste haldurile kuidas meie Ghost blogi jooksutada, võiks asuda meie kodukataloogis ehk seal kuhu satume, kui ssh’ga sisse logime. Faili sisu peaks välja nägema järgmine:

```
{
  "apps": [{
    "name": "ghost",
    "script": "./ghost/index.js",
    "cwd": "./ghost",
    "watch": true,
    "env": {
      "NODE_ENV": "production",
      "GHOST_NODE_VERSION_CHECK": "false"
    }
  }]
}
```

##### Rakenduse paigaldamine Zone haldusliideses

Nüüd peaks meil olema kõik eeldused olemas, et rakendus lõpuks ometi käivitada. Selle tarbeks avame Zone haldusliideses sektsiooni *Veebiserver* ja sealt alt *Node.js ja PM2*. Avanenud leheküljel saame lisada uue Node.js rakenduse ja rakenduse aknas tuleks meil esiteks määrata rakenduse nimi, milleks võib olla suvaline endale sobiv nimi. Seejärel tuleks öelda, et kust leiab PM2 rakenduse tööks vajaliku konfiguratsioonifaili *ghost.json*, mille tekitasime eelmises punktis oma kodukataloogi ja viimasena valida, et kui palju mälu me rakendusele eraldame.

[![ghost08](https://www.zone.ee/static/sites/2/2016/09/ghost08-300x138.png)](https://www.zone.ee/static/sites/2/2016/09/ghost08.png)

Peale *lisa* nupul klikkimist tuleb veidi oodata, lehekülge värskendades peaksime nägema, et teade “käivitamisel” muutub ühel hetkel “käivitatud”. Nüüd polegi enam muud, kui avada Ghost blogi aadress.

##### Blogi seadistamine

Kui näed blogi aadressil järgmist pilti, siis oled kõik õigesti teinud. Blogi töötab ja on kasutusvalmis.

[![ghost09](https://www.zone.ee/static/sites/2/2016/09/ghost09-300x201.png)](https://www.zone.ee/static/sites/2/2016/09/ghost09.png)

Muidugi on meil vaja ka kasutajakontot ja esimese, niiöelda *admin* konto saab luua, kui minna aadressile domeeninimi*/ghost*.

[![ghost10](https://www.zone.ee/static/sites/2/2016/09/ghost10-300x292.png)](https://www.zone.ee/static/sites/2/2016/09/ghost10.png)

[![ghost11](https://www.zone.ee/static/sites/2/2016/09/ghost11-272x300.png)](https://www.zone.ee/static/sites/2/2016/09/ghost11.png)

Ja kui konto juba loodud, siis polegi muud, kui postitusi kirjutama!

[![ghost12](https://www.zone.ee/static/sites/2/2016/09/ghost12-300x102.png)](https://www.zone.ee/static/sites/2/2016/09/ghost12.png)
