將部落格從 WordPress 遷移到 Ghost
寫習慣 Markdown 之後,WordPress 對於現在的我來說已經過於臃腫了,即便有外掛可以支援 Markdown,非原生的體驗還是有差。資料的備份與網站的管理也造成了我不小的負擔,隨著工作佔用的時間越來越多,部落格還是維持簡單就好。因此下定決心把用了很久的 Dreamhost WordPress 搬到自己的 VPS 上面維護。過程有點繁瑣,順手記錄下來,希望可以幫到有同樣需求的人。
安裝 Ghost
Ubuntu 安裝步驟如下:
curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip
wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.1/install.sh | bash
nvm install v4
cd /var/www/ghost && npm install --production
vi config.js
npm start --production 2>&1 >> /var/log/ghost.log &
# open http://your-ghost.com or http://11.22.33.44:2368
將 Ghost 執行於背景
將 Ghost 執行於背景有以下三種方法:
- 寫 ghost 命令
/etc/init/ghost.conf
- 寫啟動腳本
/etc/init.d/ghost
- 透過 pm2 讓 Ghost 常駐
下面介紹第三種用法:
cd /path/to/ghost/folder
sudo npm install -g pm2
echo "export NODE_ENV=production" >> ~/.profile
source ~/.profile
pm2 kill
pm2 start index.js --name ghost
pm2 dump
sudo pm2 startup <centos|ubuntu|amazon>
文章與圖片備份
- 安裝 Ghost Plugin
- 到管理後台的工具匯出得到 Ghost 的 JSON 檔案
- 將匯出的檔案中的圖片路徑從
wp-content/uploads
改為content/images
,執行命令:sed -i .bak -e 's|wp-content|content\\/images|g' wp2ghost_export_1462376963.json
- 備份
wp-content/uploads
圖片目錄 - 安裝 Ghost
- 匯入前面修改過的 Ghost JSON 檔案
- 將備份的
wp-content/uploads
資料夾上傳替換為/var/www/ghost/content/images
留言備份
安裝 Disqus
- 註冊 Disqus,創建新的 Site
- 取得 Universal Code 或者直接參考複製這裡的程式碼片段將
disqus_shortname
改為你在 Disqus 註冊的站名 - vi /content/themes/THEME_NAME/post.hbs
- 將上面複製的程式碼貼到 {{/post}} 與 之間
- service ghost restart
https://wordpress.org/plugins/disqus-comment-system/
遷移留言到 Disqus
- 安裝 Disqus Comment System
- 啟用並且到設定頁登入 Disqus
- 迴響 -> Disqus -> Export
- 當 Disqus import 完成後會發信件通知下載(不下載也沒關係)
- 域名更改後原有的留言就會完成遷移
安裝 uno-zen 主題
uno-zen 是我個人蠻喜歡的 Ghost 主題,uno-zen 主題支援語法高亮,可惜的是根據文件上的說明,目前只有支援 markup, css, c, javascript
三種。
首先,下載主題:
cd /var/www/content/theme
curl -sSL http://git.io/vcIHr | sh
貼到 Code injection -> Blog Footer 中:
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/zepto/1.1.6/zepto.min.js"></script>
<script>jQuery = Zepto</script>
接著做個人化設定:
- 重啟 Ghost 後到設定頁更換主題
- 替換掉 Logo 與 Cover(這步沒做的話頁面顯示會不正常)
- 換上自己的社群網站連結
vi /var/www/ghost/content/themes/uno-zen/partials/social.hbs
大功告成!