Help us understand the problem. What is going on with this article?

middleman-blogをgithubでホストする

More than 3 years have passed since last update.

この記事は2013年6月21日にatsuyaによってCoiney Developer Blogに書かれた記事の転載です。

最近は色々魅力的ブログサービス沢山ありますが、自分の書いた記事が手元にファイルとして残るのは嬉しい事です。このブログは、middleman (とmiddleman-blog) を使って作成し、記事を含んだ全てのデータをgithubで管理しています。middlemanは、最終的にhtmlファイルを出力するので、それらのhtmlファイルを公開したい場合は、どこかでホストする必要があります。既にgithubを使ってデータを管理しているので、ここではgithubでmiddlemanで作成したブログをホストする方法を解説します。

github pages

githubには、github pagesという、静的なコンテンツをホスト出来る機能があります。githubのユーザかorganizationに対するサイトか、プロジェクトに対するサイトか、によって設定の方法が少し違います。

ユーザかorganizationに対するサイトの場合

レポジトリの名前は、username/username.github.ioというネーミングスキーマに従う必要があります。そして、masterブランチのコンテンツが使われます。

プロジェクトに対するサイトの場合

レポジトリの名前は、なんでも構いません。ただ、masterブランチではなく、gh-pagesブランチのコンテンツが使われます。

ここでは、coineyというorganizationに対するサイトをホストする事を前提に解説します。つまり、coiney/coiney.github.ioというレポジトリのmasterブランチにブログのコンテンツをpushします。

middleman-deployを使ってデプロイする

middlemanの出力したファイルを特定のブランチにpushする場合、手動でも構わないのですが少し面倒です。そこで、middleman-deployというmiddlemanのextensionを使って、コマンド一つでgithubにpush出来るように設定します。

Gemfileにmiddleman-deployを追加します。

gem 'middleman-deploy'

そしてインストールします。

bundle install

config.rbに以下のコードを追加します。

activate :deploy do |deploy|
  deploy.method = :git
  deploy.branch = 'master'
end

'master'の部分でpushするブランチを指定しています。githubのプロジェクトに対するサイトをホストする場合は、ここは'gh-pages'になります。

最後に、以下のコマンドでgithubにデプロイ出来ます。

bundle exec middleman build
bundle exec middleman deploy

デプロイされたサイトは、http://{githubのusername}.github.ioでアクセス出来るようになります。

github.io以外のドメインを使う

デフォルトでは、github pagesを利用したサイトはgithub.ioドメインでホストされます。もし自分の持っているドメインを使いたい場合は、CNAMEという名前のファイルを作成し、そこに使いたいドメインを記述します。

coiney.github.ioではなくblog.coiney.comを使いたい場合は、CNAMEblog.coiney.comと書きます。

blog.coiney.com

注意したいのは、CNAMEファイルを足すブランチです。github pagesは、ユーザかorganizationに対するサイトの場合はmaster、プロジェクトに対するサイトの場合はgh-pagesのコンテンツを使います。従って、CNAMEファイルは、mastergh-pagesブランチに足す必要があります。

結論

以上で、middlemanで作成したブログがgithubでホスト出来るようになります :) github pagesについてもっと詳しく知りたい場合は、github pagesのヘルプが非常に参考になります。

また、githubではなくs3でホストしたい場合は、qnypさんの記事が参考になります。

yuyaohshimo
Coiney Inc. Software Engineer twitter: https://twitter.com/ohshimoshimo
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away