T.I.D.

Git や GitHub と戯れる、オレオレ的おとなの遊び場

Octopressのインストールから運用管理まで

あらためて GitHub へのインストールから、GitHub Pages への記事投稿、Bitbucket での原稿管理までをまとめておく。 インストールは、公式サイトの Octopress Setup に従う。 GitHub Pages には、ユーザーページとプロジェクトページがあるが、以下ユーザーページ用を主とする。

1. Octopress 利用の前提条件

  • Git + GitHub アカウント
  • ruby 1.9.2 1.9.3 以上 + RubyGems
    RubyGems は、ruby 1.9.2 以上であれば インストーラー のパッケージに含まれているという情報が多い(特に Windows)。 Mac であれば、rvm からアップデートする。 また、gem は gem update --system で最新版にしておく。

2. GitHub ユーザーページ用リポジトリの作成

GitHub で username.github.comリポジトリを作成 しておく。

ローカル側の設定
1
2
3
$ mkdir username.github.com
$ cd username.github.com
$ git init
Initialized empty Git repository in /path/to/repo/username.github.com/.git/
何でもいいからコミット
1
2
3
$ touch README.md
$ git add README.md
$ git commit -m 'first commit'
[master (root-commit) a3bd2f1] first commit
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 README
リモートの登録
1
2
$ git remote add origin git@github.com:username/username.github.com.git
$ git push -u origin master
Counting objects: 3, done.
Writing objects: 100% (3/3), 205 bytes, done.
Total 3 (delta 0), reused 0 (delta 0)
To git@github.com:username/username.github.com.git
 * [new branch]      master -> master
Branch master set up to track remote branch master from origin.

3. Octopress のインストール

とりあえず、ユーザーページ用リポジトリ username.github.com と同じ階層にインストールする。

Octopress のクローンを作る
1
2
$ cd ../
$ git clone git://github.com/imathis/octopress.git octopress
Cloning into 'octopress'...
remote: Counting objects: 5685, done.
remote: Compressing objects: 100% (2262/2262), done.
remote: Total 5685 (delta 3247), reused 5225 (delta 2933)
Receiving objects: 100% (5685/5685), 1.21 MiB | 435 KiB/s, done.
Resolving deltas: 100% (3247/3247), done.
bundler をインストール
1
2
$ cd octopress
$ gem install bundler
Successfully installed bundler-1.0.21
1 gem installed
Installing ri documentation for bundler-1.0.21...
Installing RDoc documentation for bundler-1.0.21...

ちなみに、いちいち ri とか RDoc とかのインストールがうざい場合、RubyGemsでgemのインストール時に–no-ri –no-rdocをデフォルトにする - アインシュタインの電話番号 を参考に .gemrc を設定する。

次はおそらく Gemfile に書かれた gem を、依存関係含めてインストールしているのだと思う。

必要な gem をインストール
1
$ bundle install
Using rake (0.9.2) 
Using RedCloth (4.2.8) 
...
Using bundler (1.0.21) 
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

そして、Rakefile のエントリー install を実行する。

Octopress デフォルトのテーマ classic のインストールやら
1
$ rake install
## Copying classic theme into ./source and ./sass

4. Octopress サイトの立ち上げ

ここからは、公式サイトの Deploying to Github Pages With Github User/Organization pages の内容。

GitHub Pages との接続設定
1
$ rake setup_github_pages
Enter the read/write url for your repository: git@github.com:username/username.github.com.git
Added remote git@github.com:username/username.github.com.git as origin
Set origin as default remote
Master branch renamed to 'source' for committing your blog source files
Initialized empty Git repository in /path/to/repo/octopress/username.github.com/_deploy/.git/
[master (root-commit) 314edb9] Octopress init
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 index.html

---
## Now you can deploy to http://username.github.com with `rake deploy` ##

Initialized empty Git repository のパスが変だけど、_deploy.git ができているのは確で、.git/config を確認。

実行される内容は次の通り。

  1. GitHub Pages リポジトリへの read/write 可能なプロトコル/パスを入力
  2. imathis/octopress を指すリモート名を origin から octopress に変更
  3. GitHub Pages リポジトリへのリモート名を origin に設定
  4. アクティブなブランチを master から source に変更
  5. リポジトリへのパス名に応じて、ブログサイトの URL を設定
  6. _deploy ディレクトリに、デプロイ用の master ブランチを設定

特に 4. 〜 6. 辺りの処理は、1. の入力に応じて自動的にデプロイ先のブランチが設定される(ユーザーページ用は master、プロジェクトページ用は gh-pages)。

そして、サイトの生成とデプロイ(後述の「6. 新規記事、新規ページの作成」も同じ)。

サイトの生成とデプロイ
1
2
rake generate
rake deploy

2つを一気に実行するには rake gen_deploy を、まずはローカルでプレビューするという場合には rake preview を実行後に http://localhost:4000/ にアクセスする。

5. Octopress サイトの設定

公式サイトの Configuring Octopress を参考に、_config.yml を設定。

6. 新規記事、新規ページの作成

公式サイトの Blogging Basics を参照。

–新規投稿–

コマンド
rake new_post['post title']

記事のタイトルは、英語で。

ファイル
source/
└── _post/
    └── YYYY-MM-DD-post-title.markdown
YAMLブロック
---
layout: post
title: "post title"
date: YYYY-MM-DD hh:mm
comments: true
categories: [category1, ...]
---

ここで、title を日本語にすれば良い。

–新規ページ–

コマンド
rake new_page[my-new-page]
rake new_page[my-new-page.html]
ファイル
source/
└── my-new-page/
    ├── index.markdown	# rake new_page[my-new-page]
    └── index.html		# rake new_page[my-new-page.html]
YAMLブロック
---
layout: page
title: 
date: YYYY-MM-DD hh:mm
comments: true
sharing: true
footer: true
---

7. サイトの運用管理

Deploying to Github Pages には、ユーザーページ、プロジェクトページのそれぞれで、本体のリポジトリと統合する方法が推奨されている。

ユーザーページ用リポジトリへの push
1
2
3
$ git add .
$ git commit -m 'your message'
$ git push origin source
プロジェクトページ用リポジトリへの push
1
2
3
$ git remote add origin (your repo url)
$ git config branch.master.remote origin # set your new origin as the default branch
$ git push origin source

統合後は、ローカルの octopress リポジトリは不要になる。

ただし、実際にやってみると次のようなデメリットもある。

  • source ブランチで管理外だった _deploypublic などを、デプロイ先のブランチでも管理外にする必要アリ。(.gitignore の再設定)。
  • source ブランチでの rake deploy で デプロイ先のブランチが直接更新されるため、git fetch; git pull でローカルに反映させる必要アリ。
  • この反映が、場合によってはコンフリクトを発生させる。

コンフリクトは例えばこんな感じ。

Auto-merging stylesheets/screen.css
CONFLICT (add/add): Merge conflict in stylesheets/screen.css
Auto-merging sitemap.xml
CONFLICT (add/add): Merge conflict in sitemap.xml
Auto-merging index.html
CONFLICT (add/add): Merge conflict in index.html
Auto-merging blog/archives/index.html
CONFLICT (add/add): Merge conflict in blog/archives/index.html
Auto-merging atom.xml
CONFLICT (add/add): Merge conflict in atom.xml
Automatic merge failed; fix conflicts and then commit the result.

こうなると手作業でコンフリクトを解消するか、次のようにしてローカルの内容を強制的にリモートで上書きしなければならない。

強制的にリモートの内容で上書きする
1
2
$ git reset --hard HEAD
$ git pull --rebase

ということで特にユーザーページ用においては、Octopress リポジトリは単独で管理する、しかも非公開が好ましいと言うのが現時点での結論。

この目的にぴったりなのが Bitbucket というわけ。Git が使える上、リポジトリを非公開にでき、5人まで無料。個人利用であれば言うことなし。

Bitbucket のアカウント取得後にまずやることは、「Account settings」で SSH key を設定すること。Using SSH to Access your Bitbucket Repository を参考に。

次に Bitbucket に octopress リポジトリを作成し、リモートとして登録。

リモート名 bitbacket で optopress リポジトリを登録する
1
2
$ git remote add bitbucket git@bitbucket.org:username/octopress.git
$ git push -u bitbucket source

この段階で、リモートとして originoctopressbitbucket の3つが登録されることとなる。これ以降、記事のデプロイは rake deploy、原稿のバックアップは git push でできるようになる。

8. Octopress の更新

本家の更新を取り込んでマージする。gems の更新も忘れずに。

Octopress の更新
1
2
3
$ git fetch octopress
$ git pull octopress master
$ bundle update rake

参考情報

Comments