See blogi põhineb hetkel Jekyll staatilise blogi mootoril ja on hostitud GitHubis, kuid tavalisele blogijale käib selle kasutamine üle jõu. Sellepärast saigi vahepeal uuritud blogimootorit Ghost ja selle tasuta hostimise võimalusi ning dokumenteerisin nüüd hiljem ka selle käigu.
Eeldused:
- Heroku kasutaja olemasolu
- paigaldatud Heroku Toolbelt
- Heroku Toolbelti sisse logitud (
heroku login
) - alla laetud ja lahti pakitud Ghost lähtekood
- git ja npm
Liigume käsurealt kausta, kuhu Ghost sai lahti pakitud ja loome Heroku äpi EU regiooni:
heroku apps:create minu-ghost-blogi --region eu
Paigaldame kohalikuks katsetamiseks kõik sõltuvused:
npm install
Seadistamine
Muudame faili config.example.js
nime ära, paneme talle nimeks lihtsalt config.js
ja avame. Objekti production
muudame selliseks:
production: {
url: 'http://minu-ghost-blogi.herokuapp.com',
mail: {
transport: 'SMTP',
options: {
service: 'Mailgun',
auth: {
user: process.env.MAILGUN_USER, // mailgun username
pass: process.env.MAILGUN_PASSWORD // mailgun password
}
}
},
database: {
client: 'pg',
connection: {
host : process.env.POSTGRES_HOST,
user : process.env.POSTGRES_USER,
password : process.env.POSTGRES_PASSWORD,
database : process.env.POSTGRES_DATABASE,
charset : 'utf8'
}
},
server: {
host: '0.0.0.0',
port: process.env.PORT
},
fileStorage: false
},
Seadistuste selgitused
url
URL on vastavalt valitud nimele või kui on eraldi domeen registreeritud, tuleks sinna panna see (nt minu-ghost-blogi.com).
See on oluline selleks, et Ghost oskaks meiliteavitusi välja saata. Endale on armsaks saanud Mailgun ja soovitan seda ka teistele. Kui Mailguni veebist domeen luua, antakse sealt SMTP login ja parool, mis tuleb Heroku keskkonnamuutujate kaudu paika panna. Konfifaili neid hardcodeda ei tasu. Keskkonnamuutujate seadistamine käiks antud juhul nii:
heroku config:set MAILGUN_USER=postmaster@minu-ghost-blogi.com
heroku config:set MAILGUN_PASSWORD=242efca428de9caf03cf3abc1343eef0
database
Andmebaasi jaoks installime postgre andmebaasi kliendi:
sudo npm install -g pg
Konfis tuleb andmebaasi klient samuti määrata pg
. Andmebaasi võimekuse tekitamine käib järgnevalt:
heroku addons:add heroku-postgresql
Mille peale teatab Heroku Toolbelt midagi analoogset (värv on erinev tõenäoliselt):
Attached as HEROKU_POSTGRESQL_BROWN_URL
Selle sama nimega jooksutame järgmise käsud:
heroku pg:promote HEROKU_POSTGRESQL_BROWN_URL
heroku pg:credentials HEROKU_POSTGRESQL_BROWN_URL
Ja viimasest saame kõik andmebaasiühenduseks vajalikud andmed, mis määrame keskkonnamuutujate väärtusteks:
heroku config:set POSTGRES_HOST=host
heroku config:set POSTGRES_USER=user
heroku config:set POSTGRES_PASSWORD=password
heroku config:set POSTGRES_DATABASE=database
server
Serveri blokk on täiesti Heroku-spetsiifiline ja peab olema täpselt selline, kus host on 0.0.0.0
ja port antakse automaatselt keskkonnamuutuja kaudu Heroku poolt ette.
fileStorage
Failide üleslaadimise funktsionaalsus tasub Heroku puhul maha keerata, sest sealne failisüsteem on efemeerne ehk lühiealine - kui dyno ennast välja lülitab, siis taaskäivitumisel taastub repost laetud seis. Pilte ja muid staatilisi andmeid saab kasvõi Dropboxi avalikust kataloogist linkida..
Viimane lihv
Heroku jaoks on veel vajalik teha fail nimega Procfile
, millel sisuks:
web: node index.js --production
Ning kindluse mõttes tasub ka veel Node keskkond produktsiooniks muuta:
heroku config:set NODE_ENV=production
Publitseerimine
git add -A
git commit -m "minu ghost plogi esimene lüke"
git push heroku master
Viimase käsuga ta buildib ja paneb rakenduse püsti, logisid saab hiljem sirvida käsuga heroku logs
.
Viimaste seadistuste tegemiseks ja postituste kirjutamiseks tuleb nüüd minna adminpaneeli: http://minu-ghost-blogi.herokuapp.com/ghost