Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

bowwow


Thoughts, stories and ideas.

在synology nas上架設簡約風格的ghost blog(node.js blog)

一般建立網站
大家常用的大約有wordpress、drupal、joomla、ghost

安迪兒看了一下今年列出來2015 best的統計
順便給大家參考
Best Content Management System of 2015
https://www.hoasted.com/blog/best-content-management-system-of-2015/

之前對於ghost的簡約風格
安迪兒一直很有好感
加上ghost又是用node.js開發,和wordpress相比
有簡易、輕量,效能優越,服務的訪客數較高
markdown編輯器...等好處

安迪兒之前有試過在自家的nas上架wordpress
wordpress+php+mariadb+apache

但整個弄下來再加上wordpress一點點的基本外掛
整個太肥了,連線時頁面瀏覽的效能不是很好
(呃..說實話安迪兒的nas沒買頂規的, 以下是安迪兒的nas)

所以安迪兒後來就沒用wordpress
剛好前陣子nas也支援node.js了
所以就來試一下在synology的nas上
架個ghost的blog來玩玩。

和wordpress一樣,不一定要自已架設
也可以直接使用外面的網站上的服務

像是
ghost本身的站可以註冊免費試用一個月
digitalocean 每個月5美元
heroku 免費但有5M的限制(db可以放別的地方)

安迪兒這次用的是synology的ds213j 有2個HDD做raid1
上面的版本是DSM5.1,己經有node.js可以安裝了
不用像早期國外的user很坎坷的自己想盡辦法改核心移植上去

以下安迪兒記錄一下整個安裝的過程

1.捉ghost回來在筆電上試玩
2.裝到nas裡,因為nas不關機,可以一直開著
3.常駐服務,關掉ssh視窗也會背景執行

第一個步驟,先捉最新的ghost版本
安迪兒是0.6.2版 https://ghost.org/download/

大至上照著installation的說明
https://github.com/TryGhost/Ghost
http://support.ghost.org/installing-ghost-mac/

筆電上安裝好node.js、npm好所有的package
下個npm start --production 啟動
打開http://localhost:2368 就能看到ghsot簡約的畫面了

因為這部份文件說的很詳細了, 安迪兒就直接從nas的安裝過程開始記錄

第二個步驟

  • nas上先安裝好node.js,開好ssh確定能登入ssh的登入畫面
    可以參考安迪兒之前的
    用Synology NAS 架 Git Server做版本控管

  • ssh登入nas 測一下node.js有無裝好,版本多少?

  • 把電腦上整包的ghost放到nas裡
    因為nas效能不好,所以安迪兒是在筆電上裝好ghost用到的modules
    壓成zip整個搬到nas上,解開後再做修改 裝modules其實就是說明文件裡提到
    在電腦上ghost的目錄那裡執行
    npm install --production

就會裝上所有用到的modules
(裝完可以在node_modules的資料匣裡看到)

裝完後本機測試完 把ghost整包傳上nas裡 (安迪兒是放到/volume1/web/blog)

記得要放到/volume1裡面
(volume1指的是nas的硬碟
不然nas的DSM一升級,東西就沒了)

傳檔完成後,就來試試能不能執行

首先ssh root@192.x.x.x 進到nas
再到/volume1/web/blog的目錄下
執行
npm start --production

嗯,有些錯誤
沒關係,修正一下
第一次出現了arm nodesqlite3.node的錯
「node
sqlite3-v2.2.3-node-v11-linux-arm bababa....」

因為安迪兒沒另外再架db,是用sqllite(一個檔案搞定db)
這邊的錯誤是說沒有相關arm架構的lib

安迪兒看了一下node_modules裡的資料匣
sqlite3的lib裡還真的只有node-v11-darwin-x64的資料匣

路徑如下:
web/blog/node_modules/sqlite3/lib/binding/node-v11-linux-arm

安迪兒google了一下arm版的sqlite3
這邊有人有提到
https://github.com/mapbox/node-sqlite3/issues/298

依issues裡面提到的,可以直接download這邊的來用
https://github.com/sweetpi/node-sqlite3-arm/releases/tag/node_sqlite3-v2.2.4-node-v11-linux-arm

安迪兒在nas上建一下資料匣把node_sqlite3.node放入
再執行
npm start --production
就成功了

第二次因為server有在跑
但瀏覽器一直連不到ghost的頁面
安迪兒依序做了一些相關的測試和調整

先寫隻test.js的server 跑看看瀏覽器有無畫面
var http = require ('http');
http.createServer (function (req, res) {
res.writeHead (200, {'Content-Type': 'text / plain'});
res.end ('Hello World \ n ') ;
}).listen (1337);

存檔執行 node test.js

curl一下看本機有沒反應(ip是同一台)
curl http://127.0.0.1:1337
curl http://192.168.x.x:1337

看一下netstat -tl起了什麼port192.168.x.x
netstat -tl

然後再開一下防火牆
最後調了一下ghost裡面的config的設定檔
(加上url和修改host/port等等)

弄完後再執行
npm start --production

這次就成功了,真是開心吶

第三個步驟
總不能一直用ssh連線去啟動server吧

安迪兒找了一下,看到其它人用的方式

screen
嗯...沒辦法時的最下策
http://blog.vantol.org/installing-ghost-on-synology/

forever
沒試,看資料說nas上的forever有點問題
http://nodejust.com/foever-npm-start-nodejs-ghost-background/

supervisor
還ok,但有點麻煩
http://blog.vantol.org/running-node-js-on-synology-with-supervisor/

nas上的排程
呃,每小時執行一次怪怪的

最後安迪兒看到supervisor文章裡的init.d和supervisord.conf
就想說那直接放到etc/init裡弄個conf檔,開機執行一下services看看
就寫了一隻blog.conf
(執行ghost時用http user來跑,小心別用root喔XD)

可以參考這邊 UpStart 簡介

blog.conf內容:
start on started httpd-user stop on runlevel [06] setuid http exec npm start /volume1/web/blog --production

寫完後用root的權限傳上nas
cat blog.conf | ssh root@192.168.x.x cat ">" /etc/init/blog.conf

然後ssh 用root登入測試一下 剛寫好的blog.conf能不能start or stop

切換到/etc/init下
cd /etc/init
start blog
stop blog

沒寫錯的話,應該可以正常啟動或關掉服務
到這邊就差不多完成了

再來就下reboot nas吧
shutdown -r now

等一陣子nas重開後,再試試ghost blog能不能連吧。

以下是安迪兒的成果(在自家nas上)
http://bowwow.zapto.org/

收工嘍~收工嘍

5/13補充:
中午發現ghost blog突然沒了
檢查了一下
init裡的blog啟動檔整個不見
原來是很好運的
今天剛好碰到DSM由5.1升級成5.2 init裡邊的東西全被還原了

所以相關的檔案資料千萬要放在volume裡面
不然會像安迪兒一樣,神不知鬼不覺的自動升級後就沒了..XD


About the author

bowwow

TW


Discussions

comments powered by Disqus