新手試Ghost
由以前慣用的Wordpress轉到來Ghost,可真學習了不少東西,首先是慣用的http server改成Node.js,跟以前安裝一個應用程式完全不同的概念。
為什麼要用Ghost?
2015年由NYS網站開始,幾乎所有平台也轉了做Wordpress,這個最多人使用的CMS平台。不過好景不常,用起來很多Functions也要安裝Plugin,Multipurpose的theme不便宜,而且多數配搭了Visual Composer,使用起來看似很方便,但按來按去還不如我自已用CSS比較快。
最後在朋友介紹下轉用Ghost。
Ghost是什麼鬼?
Ghost是一個open source的發佈平台,基本上是一個極簡版的Wordpress,需設置在運行Node.js的伺服路上。
新手上路
- 安裝環境
- Ubuntu 16.04.1 LTS
- Ghost 0.11.4
- Node.js 6.9.4
- npm 3.10.10
第一次使用Node.js,有點緊張,直接就用apt來安裝
$ sudo apt-get install nodejs
直接使用apt是錯誤的決定,因為Ghost需要Node.js 0.10.30以上及npm 1.4.21以上。
$ sudo apt-get update
$ sudo apt-get install npm
再來一次,先更新apt
再安裝npm
(Node Package Manager)
npm是一個Node.js的管理系統,幾乎什麼有關Node.js的東西也是靠他安裝,只是使用時有點慢(聽說用yarn比較快,但我不太會用)
$ sudo npm install -g n
然後用npm來安裝n
,-g
是global,即是全部位置也可以使用他
$ n
ο node/6.9.4
node/7.4.0
直接用指令n
,可以見到現在的穩定版本及最新版本編號,Ctrl C
可以跳回指令畫面
$ n 7.4.0
用n+版本編號
即可安裝指定編號的Node.js
$ n stable
安裝最新穩定版本
$ n latest
也可以選擇安裝最新版本
$ node -v
v6.9.4
安裝完成後node -v
測試一下
然後安裝SQLite3,這是一個超輕量的數據庫,其實Ghost也可以用MySQL之類傳統數據庫,不過用SQLite3的話設定更簡易
$ sudo apt-get install sqlite3
簡單一句已經完成安裝
$ sudo mkdir /var/www/ghost/Databases/
$ cd /var/www/ghost/Databases/
開新資料夾來存放Databases
$ sqlite3 ghost.db
生成ghost用的db,這樣就完成不用設定其他,然後用.quit
離開
開始安裝
準備工作都做好了可以正式開始安裝Ghost
$ curl -L https://ghost.org/zip/ghost-latest.zip -o ghost.zip
直接由Ghost官網下載最新版本
$ unzip -uo ghost.zip -d /var/www/ghost/
解壓到你要安裝的位置
$ cd /var/www/ghost
跳到安裝的資料夾
$ sudo npm install --production
安裝Production版本
$ npm start
測試一下是否能運作
如果沒有變更過設定的話使用你伺服器ip + :2368就可以見到demo 127.0.0.1:2368
一旦開啟Ghost後就什麼都沒辦法動,先按Ctrl C
離開
設定網址
我本身用Nginx做web server,所以我就直接用Nginx來做反向伺服器
$ sudo apt-get install nginx
如果沒有Nginx可以簡單裝一下
$ sudo nano /etc/nginx/sites-available/ghost
去sites-available
開一個ghost的設定檔
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name www.ghost.com ghost.com;
location / {
proxy_pass http://127.0.0.1:2368;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_set_header X-NginX-Proxy true;
proxy_buffering off;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
將網址反向指到127.0.0.1:2368
,然後按Ctrl X
關閉及Save
$ nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
$ nginx: configuration file /etc/nginx/nginx.conf test is successful
測試一下設定有沒有問題
$ sudo service nginx reload
Reload一下載入新的設定
然後就要處理一下Ghost的設定檔了
$ sudo nano /var/www/ghost/config.js
如果沒有config.js
就用config.example.js
複制一個
config = {
// ### Production
// When running Ghost in the wild, use the production environment.
// Configure your URL and mail settings here
production: {
url: 'http://www.ghost.com/',
mail: {},
database: {
client: 'sqlite3',
connection: {
filename: path.join(__dirname, '/var/www/ghost/Databases/ghost.db')
},
debug: false
},
server: {
host: '127.0.0.1',
port: '2368'
}
},
把url
設定為你的網址,database
中的connection
改成你的db file位置
接下來可以用正式的Production模式開動
$ cd /var/www/ghost/
$ sudo npm start --production
使用你的網址應該就直接可以看到Ghost的畫面了
在網址後加上/ghost
就可以見到開新user的畫面 e.g. http://www.ghost.com/ghost
設定完基本訊息後就可以登入後台開始你的第一篇文章了
管理
由於在Node.js上Ghost是一個應用程式般存在,不像一般http server般一直自動存活,所以要使用一些其他程式來自動重啓及管理Ghost的運作,當中常用的有forever
及PM2
,其中PM2有比較完善的管理能力,所以我就使用了PM2作管理的程式。
$ sudo npm install -g pm2
使用npm
安裝pm2
$ echo "export NODE_ENV=production" >> ~/.profile
$ source ~/.profile
$ pm2 kill
$ pm2 start index.js --Ghost ghost
$ pm2 dump
$ sudo pm2 startup ubuntu
如此設定下就會在開機後自動重啓Ghost
,中間的--Ghost
可以改成你想叫的名稱,最後startup ubuntu
改成你伺服器的系統即可
$ sudo pm2 list
┌───────┬──────┬────────┬───┬─────┬────────────┐
│ Name │ mode │ status │ ↺ │ cpu │ memory │
├───────┼──────┼────────┼───┼─────┼────────────┤
│ Ghost │ fork │ online │ 2 │ 0% │ 105.4 MB │
└───────┴──────┴────────┴───┴─────┴────────────┘
用pm2 list
就可以見到現在你的Ghost是什麼狀況了
後記
Ghost雖然安裝上沒有Wordpress方便,功能也只有基本Wordpress的程度,但是以單純一個Blog來說還是不錯的選擇,剛好打算改用Node.js來做Front-end的東西,所以就改用了Ghost。以上是我安裝時的小心得,因為第一次做用Node.js花了不少時間,如有問題也可以留言給我!