Ghost 是什麼?

Ghost 是一套由 node.js 寫成的 內容管理系統,內容管理系統有很多像是 Wordpress , Joomla 等等。不過前面兩套都是由 PHP 寫成的就是了。而且Ghost使用Markdown作為編輯器操作簡單,效能也比以 PHP 寫成的 Wordpress 要來的好。不過現在中文資源並不多。

開始教學

先更新一下系統

sudo apt-get update && sudo apt-get -y upgrade

添加 ppa 源

sudo add-apt-repository ppa:chris-lea/node.js

更新來源

sudo apt-get update

安裝 node.js

sudo apt-get install nodejs

確認是否安裝成功,如果成功應該會出現像下面這種形式的版本號

node -v
v0.10.37

確認 npm 是否安裝

npm -v

如果未安裝,請執行

apt-get install npm

如果有安裝到 npm ,應該也會有

2.5.0

如果不是 2.5.0 ,執行下面指令來安裝 2.5.0 版本

npm install [email protected] -g

以下 example.com 請自行代換成自己的域名

建立目錄

sudo mkdir -p /var/www/example.com

切換目錄

cd /var/www/example.com

建立 htdocs 目錄來存放 Ghost 的檔案

mkdir htdocs

切換到 htdocs

cd htdocs

下載最新的 Ghost

wget https://ghost.org/zip/ghost-latest.zip

安裝 unzip 套件,等下解壓縮用

apt-get install unzip

解壓縮

unzip ghost-latest.zip

安裝相依 nodejs 套件

npm install --production

更改設定

cp config.example.js config.js
nano config.js

找到 下面兩行(不同行)

url: 'http://my-ghost-blog.com',
host: '127.0.0.1',

http://my-ghost-blog.com 換成 http://example.com

把 127.0.0.1 改成 0.0.0.0

執行 Ghost,確認沒問題就 Ctrl+C 兩次關閉 Ghost

npm start --production

開啟防火牆的 Port 2368 (我個人的防火牆是使用 ufw )

ufw allow 2368

安裝 nginx (已經有的請跳過)

apt-get install nginx

建立 nginx 設定檔

touch /etc/nginx/sites-available/example.com

修改設定檔

nano /etc/nginx/sites-available/example.com

貼上下列這串 (記得更改 example.com )


server {
    listen 80;
    server_name example.com;
    location / {
        proxy_set_header   X-Real-IP $remote_addr;
        proxy_set_header   Host      $http_host;
        proxy_pass         http://127.0.0.1:2368;
    }
}

建立檔案連接

ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/example.com

重啟 nginx

service nginx restart

為了安全性,新增叫做 ghost 的使用者(記得設定密碼)

adduser --shell /bin/bash --gecos 'Ghost application' ghost

更改 htdocs 內的檔案的擁有者為 ghost

chown -R ghost:ghost /var/www/example.com/htdocs

切換使用者為 ghost

su - ghost

切換目錄

cd /var/www/example.com/htdocs

確認可以執行 Ghost ,確認沒問題就 Ctrl+C 兩次關閉 Ghost

記得開啟 Port 80

ufw allow 80
npm start --production

登出

exit

安裝 forever

npm install -g forever

切換使用者為 ghost

su - ghost

切換目錄

cd /var/www/example.com/htdocs

執行 Ghost ,這樣就算 Ghost 出問題了, forever也會幫你自動重啟

NODE_ENV=production forever start index.js

如果要關閉 Ghost

forever stop index.js

來源

2018 更新:

建議直接使用 docker 可以省下很多麻煩。
via: https://blog.birkhoff.me/migrate-from-ghost-pro-to-self-hosted/