因為公司要架設公開的 blog ,參考了下面這些文章:
- WORDPRESS, TUMBLR, MEDIUM OR …? 8 BEST BLOGGING PLATFORMS REVIEWED
- The 18 best blogging sites and publishing platforms on the internet today
沒想到支援 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/