Ngeblog dengan Ghost di Heroku, Gratis!

Date: 2014/10/30
Categories: blog

Halo,

Pada tulisan ini, saya “meng-Indonesia-kan” panduan yang tertulis di tautan berikut :

http://blog.johnny.io/how-to-get-ghost-running-on-heroku-for-free/

Tulisan ini akan memandu anda bagaimana membangun blog berbasis Ghost dan menumpangkannya di Heroku. Gratis!

Apa itu Ghost?

Tidak seperti platform blogging pada umumnya, Ghost bukan berbasis PHP, melainkan Node.Js. Node.Js adalah platform untuk membangun aplikasi real time, asynchronous, event-driven, menggunakan bahasa Javascript dan engine Javascript v8 dari Google Chrome.

Ghost sangat keren, dirancang untuk ngeblog, tidak yang lain. Salah satu fitur unggulannya adalah menulis secara live preview dengan Markdown.

{<1>}

Dan apa pula itu Heroku?

Heroku adalah web hosting berbasis cloud. Setiap aplikasi yang dikembangkan di Heroku berjalan di atas satu atau lebih dyno. Dyno adalah sebutan Heroku untuk unit virtual yang mem-bekingi aplikasi, mirip dengan gear di Openshift. Sebuah dyno mempengaruhi banyak hal, baik itu CPU, memory, maupun trafik. Akun gratis di Heroku mengizinkan penggunaan 1 dyno untuk setiap aplikasi.

Kebutuhan

Di praktik ini saya menggunakan Ubuntu 14.04. Karena perintah-perintah node pada umumnya sama meski beda sistem operasi, silakan menyesuaikan.

Anda perlu hal-hal berikut ini :

Minimal, anda memiliki pengetahuan dasar mengenai git.

####Disklaimer

Sebelum anda melanjutkan, anda perlu tahu kekurangan dari cara ini :

  • Akun gratis di Heroku hanya menyediakan 1 dyno. 1 dyno tidak cukup kuat untuk menahan trafik yang terlalu tinggi. Jika nantinya blog anda terlalu popluer dan butuh trafik lebih, pertimbangkan membeli beberapa dyno lagi.

Ghost di komputer lokal

Ada dua cara mengunduh Ghost : melalui Npm atau mengunduh langsung. Jika melalui Npm, ghost akan terpasang di ./node-modules/ghost/

$ npm instal ghost

atau

$ wget https://ghost.org/zip/ghost-0.5.3.zip

Kemudian

$ cd ghost/ $ npm install --production

Jalankan ghost :

$ npm start

Sampai di sini, anda dapat mengecek blog baru anda di peramban dengan alamat localhost:2368.

Masih di direktori ghost, anda perlu membuat sebuah berkas yang akan menjelaskan ke Heroku, lingkungan seperti apa yang anda butuhkan. Berkas ini dinamai Procfile.

$ touch Procfile

Karena Ghost membutuhkan lingkungan Node.Js, baris pertamanya isikan :

web: NODE_ENV=production node index.js

Transmisi data dari komputer lokal ke Heroku menggunakan Git. Mari buat repository git anda untuk ghost.

$ git init $ git add --all $ git commit -m "first commit"

Silakan login ke Heroku dengan perkakas Heroku Toolbelts.

$ heroku login

Anda akan dimintai akun email dan password Heroku. Setelah berhasil login, namai apps anda di Heroku.

$ heroku create namanda-ghost

Kemudian anda perlu menyunting berkas config.js, pada bagian

production : {...

Ada 3 parameter yang perlu diperhatikan :

Lihat contoh potongan kode di bawah ini.

production: {
        url: 'https://namaanda-ghost.herokuapp.com',
    mail: {},
    database: {
        client: 'sqlite3',
        connection: {
            filename: path.join(__dirname, '/content/data/ghost.db')
        },
        debug: false
    },

    server: {
        // Host to be passed to node's `net.Server#listen()`
        host: '0.0.0.0',
        // Port to be passed to node's `net.Server#listen()`, for iisnode set this to `process.env.PORT`
        port: process.env.PORT
    }
},

Kemudian unggah kode anda :

$ git push heroku master

Sampai di sini, anda dapat mengecek blog ghost anda yang sudah mengudara di internet dengan alamat namaanda-ghost.herokuapp.com

Menggunakan PostgreSQL sebagai basis data

Secara bawaan, Ghost menggunakan SQLite sebagai basis data. Dan seperti yang sudah dijelaskan sebelumnya, tumpangan di Heroku hanya menerima berkas yang sifatnya statis. Jadi, bagaimanapun data diinput / modifikasi, nanti tetap balik seperti semula. Kita harus memindahkan basis datanya ke luar.

Heroku menyediakan PostgreSQL untuk basis datanya, gratis. Mari manfaatkan.

Masih di direktori yang sama,

$ heroku addons:add heroku-postgresql:dev

Anda akan mendapatkan keluaran semacam :

Attached as HEROKU_POSTGRESQL_XXX_URL

Catat string XXX karena akan digunakan di perintah selanjutnya,

$ heroku pg:promote HEROKU_POSTGRESQL_XXX

Sekarang kita perlu meminta detail basis data dari Heroku untuk disisipkan ke config.js.

$ heroku config

Outputnya seperti di bawah ini (hanya contoh) :

HEROKU_POSTGRESQL_VIOLET_URL: postgres://dbmxyhuxgh:Nqf20t9tDDrstfVdbupA1araNw@ec2-54-83-204-78.compute-1.amazonaws.com:5432/dclkggan2qs8c8

Dari informasti tersebut, berikut keterangannya :

Sunting berkas config.js dan ganti bagian database di production menjadi seperti berikut :

    database: {
        client: 'postgres',
        connection: {
            host     : 'host',
            user     : 'user',
            password : 'passwd',
            database : 'database',
            charset  : 'utf8'
        }
    },

Isikan host, user, passwd, dan database dengan informasi yang diperoleh sebelumnya.

Sekarang kita perlu menyunting berkas lain, package.json, untuk menambahkan dependensi ke postgress. Tambahkan pg persis di bawah mysql (versi saat tulisan ini dipublish adalah 3.6.2). Jangan lupa tanda koma di akhir baris “mysql”:"… .

"validator": "3.4.0",
"xml": "0.0.12",
"mysql": "2.1.1",
"pg": "3.6.2"

Simpan kode anda. Kemudian unggah.

$ git add --all $ git commit -m "change db to postgres" $ git push heroku master

Cek lagi blog anda yang sudah kembali mengudara dengan basis data postgres. Cobalah menulis sesuatu. :)

{<2>}

Kalau ada galat?

Jika ada galat seperti di bawah ini :

{<3>}

Anda dapat mengecek log-nya dengan perintah,

$ heroku logs



>> Home