GhostをBusterでGithubPagesにホスティングする

## 概要

Ghost を Buster を利用して静的なサイトとして吐き出して Github Pagesでホスティングする手順と運用方法

## なぜGhostか

HugoやOctopressなど色々試した結果、最終的にGhostで落ち着きました。

Hugoも導入はラクチンでしたがGhostは管理画面が使いやすいのが決め手でした。

## 環境

```
OSX Yosemite 10.10.5

% brew -v
Homebrew 0.9.5
% node -v
v0.10.33
% npm -v
2.1.6
```
## 手順

### node.jsのインストール

wgetはお好みで。

```
% brew install node
% brew install wget
```

### Ghostのインストールと起動

```
% mkdir ghost
% cd ghost
% wget --no-check-certificate https://ghost.org/zip/ghost-0.5.2.zip
% unzip ghost-0.5.2.zip
% npm install --production
% npm start
```

sqlite3のエラーが出る場合は後述。

### Ghostにログイン

`http://localhost:2368/ghost` でアカウント設定を行い、管理画面へログインできる。


### GitHubPagesにレポジトリの作成

1. GiHubにアクセス
2. +new repository
3. `username/username.github.io`のレポジトリを作成


### Ghostのディレクトリに作成したレポジトリをcloneする

```
% pwd /Users/username/ghost
% git clone git@github.com:username/username.github.io.git ./static
```

### Busterのインストール

Ghostを静的ページとしてstaticディレクトリ以下に吐き出すためのツールとしてbusterをインストールする。

npm startはそのままにしておきたいので、ターミナルで新しいタブを開いて作業を行う。

```
% brew install python
% sudo pip install buster
```

### Busterのデプロイ先を設定

```
% buster setup --gh-repo=git@github.com:username/username.github.io.git static
```

### Ghost Buster !!

Ghostの内容をstatic以下にBusterする。

`buster deploy`コマンドで指定したデプロイ先にpushするまでを行ってくれる。

```
% pwd /Users/username/ghost
% buster generate --domain=http://localhost:2368
% buster preview  #browse http://localhost:9000
% buster deploy
Good job! Deployed to Github Pages.
```

### 確認

[生成されたページ](https://satoshin2071.github.io/)

## 運用方法

### staticディレクトリは以外はbitbucketで管理する

```
% rm -rf static
% git init
% git remote add origin bitbucketの管理用リポジトリ
% git add -A
% git commit -m 'add'
% git push -u origin master
```

### staticディレクトリをsubmoduleとして管理する

```
% pwd /Users/username/ghost
% git clone git@github.com:username/username.github.io.git static
% cd static
% git submodule init
% git submodule update
```

### 新規記事投稿

ここまで設定すればあとは以下の手順で記事作成公開できる。

```
% npm start
管理画面 http://localhost:2368/ghost へアクセスして記事投稿

% buster generate --domain=http://localhost:2368
% buster deploy

```

##sqlite3まわりでエラーが出る場合

npm start時に以下のエラーが出てsqlite3のモジュールが見つからないよと言われる場合。再インストールすると上手くいきました。

[Ghost Troubleshooting Guide](http://support.ghost.org/troubleshooting/)

```
ERROR: Cannot find module '/Users/satoshin2071/ghost/node_modules/sqlite3/lib/binding/node-v14-darwin-x64/node_sqlite3.node'


% cd node_modules
% rm -rf ./sqlite3
% npm install sqlite3 --build-from-source
もしくは
% npm install https://github.com/mapbox/node-sqlite3/tarball/master
% npm cache clean
```

##nodeのヴァージョンが違うとき

```
Migrations: Up to date at version 003

ERROR: Unsupported version of Node
Ghost needs Node version ~0.10.0 you are using version 0.12.2
Please go to http://nodejs.org to get a supported version
```

Package.jsonを修正します。

```
% vim package.json

"engines": {
        "node": "~0.10.0"
    },

↓

"engines": {
        "node": "~0.12.2"
    },

% npm start

> ghost@0.5.2 start /Users/satoshin2071/ghost
> node index

Migrations: Up to date at version 003
Ghost is running in development...
Listening on 127.0.0.1:2368
Url configured as: http://localhost:2368
Ctrl+C to shut down

```

いけました。



## 参考

[Setup Ghost for GitHub Pages](https://stefanscherer.github.io/setup-ghost-for-github-pages/)

[(RE)STARTING A BLOG WITH GHOST](http://xavierriley.co.uk/blogging-with-ghost-buster-and-github-pages/index.html)

[Git Submoduleの基礎](http://qiita.com/sotarok/items/0d525e568a6088f6f6bb)

[Running and Installing Ghost on Node 0.12.0](http://blog.paulbird.co/running-ghost-in-node-0-12-0/)