因為公司要架設公開的 blog ,參考了下面這些文章:

沒想到支援 Markdown 的這麼少,身為一個工程師還挺意外的,以為這是很主流的功能。

最後決定使用 Ghost

Ghost 是一套 Open Source 的 blog 系統,會選中他主要是因為支援 Markdown 、又可以自己客製化,而且可以讓多個成員在團隊裡共同編寫。

缺點是官方代管要付費,不想付費就要自己架自己 host ,不過身為一個工程師不應該懼怕這些!

首先查查看能不能把 Ghost host 在 Github Pages ,參考了這個教學,看起來 Ghost 的本體是用 node.js 架起,而教學上的作法是:

  • 自己在本機端架起 Ghost server
  • 使用本機 Ghost 的後台發文
  • 使用 Python package buster 把目前的網站生成 static files
    ( buster 是專門給 Ghost 的 static site generator ,好奇看了一下他的 source code ,大概就是個爬蟲)
  • 把檔案們上 Github pages
  • 要發新文章或是更新文章時,重複上述步驟

作法還滿有趣的,缺點是Github 上的 blog 沒有後台可以用,要自己起 server 才能寫文章,對非工程師來說極不友善,就算對工程師來說也有點麻煩。

看來想要有後台最好的方式還是自己 host ,架在 AWS 上面也好。

前面說過官方代管要付費,有興趣的人可以去官網註冊一個帳號免費試用 14 天,可以有一個 {username}.ghost.io 的網址,不過我沒有嘗試,不知道提供什麼功能。

接下來只考慮自己架。

安裝 Ghost

Ghost 是 open source ,可以直接看 Github 上的說明,介紹了三種安裝方式:

  • 直接上 Developers page 下載 latest release 的 .zip 檔
  • 自己把專案 clone 下來
  • npm install ghost

前兩種安裝方式基本上差不多,第二種要用 grunt 先 build 過,第三種我沒有試過。另外要注意不管哪一種安裝方式本機上都要有 node 環境,建議使用的 node 版本是 >= 4.0 < 5 ,超過這個版本執行起來可能會有問題。詳細的安裝步驟就直接看 Github 裡面的說明吧,寫的很清楚。

如果是將來有可能自己對 Ghost 本身做一些客製化的,還是自己 clone 下來比較好, Developers page 上也提供了很多相關專案,說不定可以引入各種外掛。

再來就介紹一些我自己設定上的細節。

設定 Ghost
基本設定

Ghost 有兩種執行模式: development & production ,除了一些 debug 之類的不同之外,也會連到兩個不同的 DB 。

打開設定檔 config.js

config = {
    // ### Production
    production: {
        url: 'http://{yourdomain}',  // 這個 blog 的公開網址,會用在連結、 RSS 或 email 認證等方面
        mail: {},
        database: {
            client: 'sqlite3',  // 預設是 SQLite ,不過也支援 MySQL & PostgreSQL
            connection: {
                filename: path.join(__dirname, '/content/data/ghost.db')  // DB connection ,因為是 SQLite 所以是檔案路徑
            },
            debug: false
        },
        server: {
            host: '0.0.0.0',  // 注意要設定成 0.0.0.0 而不是 127.0.0.1 ,否則外部無法連到
            port: '2368'
        }
    },
    development: {
        ......
    }
    ......
}

基本上設定檔裡原本的註解都好好說明了要怎麼設定,我目前就只設定了這些,更詳細的說明也可以到 Developers page 去看。

設定好以後,就可以用不同的啟動方式來啟動 development or production mode 。

development mode

$ npm start

production mode

$ npm start --production
背景執行

為了讓 node 可以背景執行又安裝了 forever 來跑 server ,並寫兩支 sh 來執行 start 和 stop :

start.sh

# 設定了 production 參數才會跑 prod mode
NODE_ENV=production forever start index.js

stop.sh

forever stop index.js
轉址

最後,因為想要達到 http://blog.domain.name 這樣的網址,而不是 http://domain.name:2368 ,於是把已經在機器上用掉 port 80 的 Apache 的其中一個 cname 導過來。

找到 apache2 的設定檔,在我們的機器上是 /etc/apache2/sites- available/000-default.conf ,加上一個 VirtualHost:

<VirtualHost *>
     ServerName blog.domain.name
     ProxyPreserveHost on
     ProxyPass / http://localhost:2368/
</VirtualHost>

在 domain 服務者那邊也要記得把 blog 這個 cname 連到這台機器上。

這樣就大功告成了!

這邊只做架設分享,使用上的分享就免了,操作滿簡單的,用一用就會了!目前也只完成到基本架設,以後如果更深入研究再來分享。

Reference

http://startbloggingonline.com/blog-platform-comparison-chart/
http://thenextweb.com/businessapps/2015/05/11/the-18-best-blogging-and-publishing-platforms-on-the-internet-today/#gref
https://github.com/paladini/ghost-on-github-pages
https://www.ghostforbeginners.com/how-to-host-ghost-on-an-apache-subdomain/