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

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

一般建立網站
大家常用的大約有wordpress、drupal、joomla、ghost
 
安迪兒看了一下今年列出來2015 best的統計,
順便給大家參考
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的說明
 
筆電上安裝好node.js、npm好所有的package、下個npm start --production 啟動
打開http://localhost:2368 就能看到ghsot簡約的畫面了
因為這部份文件說的很詳細了,
安迪兒就直接從nas的安裝過程開始記錄
 
第二個步驟
a.nas上先安裝好node.js,開好ssh確定能登入
 
ssh的登入等畫面,可以參考安迪兒之前的
 
b.ssh登入nas
測一下node.js有無裝好,版本多少
 
c.把電腦上整包的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 node_sqlite3.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
這邊有人有提到
 
依issues裡面提到的,可以直接download這邊的來用
 
安迪兒在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上的排程
呃,這方法還蠻妙的
http://blog.xuite.net/morose.lion/candle/302783784-Synology+DS214se+%E6%9E%B6+NodeJS
 
 
最後安迪兒看到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啟動檔整個不見
想說會不會HDD壞了
原來是很好運的
昨天剛po完
今天剛好碰到DSM由5.1升級成5.2
init裡邊的東西全被還原了
 
所以相關的檔案資料千萬要放在volume裡面
不然會像安迪兒一樣,神不知鬼不覺的自動升級後就沒了..XD