トップ «前の日記(2013-12-11) 最新 次の日記(2013-12-13)» 編集

Route 477



2013-12-12

[ruby] MiddlemanをGitHub Pagesにデプロイしてカスタムドメインを使う

昨日に引き続き、Middleman Advent Calendar 2013の12日目です。

最近、Middlemanを使ってGitHub Pages上に静的サイトをデプロイする作業を何度かやったので、手順をまとめておきます。 実際の利用例は https://github.com/yhara/esolang-book-websitehttps://github.com/yhara/w.route477.net です。

静的サイトとはいえ、無料でホスティングしてもらって独自ドメインが使えてIssuesまで付いてくるので、軽く申し訳ない気分になります。気が向いたらグッズでも買うと良いと思います。

GitHub Pagesとは

GitHub上のプロジェクトのREADMEなどを、静的サイトとして公開できるサービスです。 READMEに限らず、任意のHTMLが置けます。ドメインは昔はxxx.github.comでしたが、現在はxxx.github.ioに変わっています。

ファイルの置き方

GitHub Pagesには以下の2種類があります。

ファイルの置き方は、Project pageとUser pageで少し違います。Project pageの場合はリポジトリにgh-pagesというブランチを作り、そこに静的HTMLをpushします。一方、User pageの場合はmasterブランチに直接HTMLを置きます。

MiddlemanをProject pageで運用する場合は、middleman-gh-pages というプラグインを使うと、rake publishでビルド結果をgh-pagesブランチにpushしてくれてとても便利です。masterにコンパイル前のソースを置き、gh-pagesに生成物を置くという形になります。

一方MiddlemanをUser pageで運用する場合は…、どうするんですかね。ビルド先を./build/じゃなく./にすれば良いのかなぁ。masterにHTMLを置くという仕様は静的ファイルジェネレータと相性が悪いので、User pageもgh-pagesブランチを使うというルールの方が嬉しかった気がします。

middleman-gh-pagesの使い方は以下のような感じです。

  1. Gemfileにgem "middleman-gh-pages"を追加 → bundle install
  2. Rakefileにrequire 'middleman-gh-pages'を追加
  3. rake publish でデプロイ(= ./build以下にサイトをビルドし、gh-pagesブランチにコミットし、githubのgh-pagesブランチにpush)

カスタムドメインについて

Middlemanとは関係ないのですが、ついでなのでGithub Pagesで独自ドメインを使う方法についても書いておきます。公式ヘルプに情報があります。

まず「CNAME」というファイルを作り、中に「esolang-book.route477.net」みたいにドメイン名を書きます。 middleman-gh-pagesを(Project pageで)使う場合は、masterブランチのsource以下にCNAMEファイルを置きます。こうすることによって、rake publishによりgh-pagesブランチのトップディレクトリにCNAMEファイルがpushされるという寸法です。

で、それができたらDNSの設定を変更します。こっちの手順はUser pageでもProject pageでも同じですが、サブドメインのありなしで作業が違います。

  • サブドメインなしの場合(例:example.jp):example.jpのAレコードを204.232.175.78に設定します。(IPは変わる可能性があるので最新情報はヘルプを見て下さい)
  • サブドメインありの場合(例:www.example.jp):www.example.jpのCNAMEレコードを(ユーザ名).github.io. に設定します。

ドメインを割り当ててしまえばUser pageもProject pageも違いがないと思うので、middleman-gh-pagesが使えるProject pageの方が便利かなと思います。

以上、MiddlemanのGitHub Pagesでの運用方法でした。