あらためて GitHub へのインストールから、GitHub Pages への記事投稿、Bitbucket での原稿管理までをまとめておく。 インストールは、公式サイトの Octopress Setup に従う。 GitHub Pages には、ユーザーページとプロジェクトページがあるが、以下ユーザーページ用を主とする。
1. Octopress 利用の前提条件
- Git + GitHub アカウント
- ruby
1.9.21.9.3 以上 + RubyGems
RubyGems は、ruby 1.9.2 以上であれば インストーラー のパッケージに含まれているという情報が多い(特に Windows)。 Mac であれば、rvm からアップデートする。 また、gem はgem update --system
で最新版にしておく。
2. GitHub ユーザーページ用リポジトリの作成
GitHub で username.github.com
の リポジトリを作成 しておく。
1 2 3 |
|
Initialized empty Git repository in /path/to/repo/username.github.com/.git/
1 2 3 |
|
[master (root-commit) a3bd2f1] first commit
0 files changed, 0 insertions(+), 0 deletions(-)
create mode 100644 README
1 2 |
|
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
と同じ階層にインストールする。
1 2 |
|
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.
1 2 |
|
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 を、依存関係含めてインストールしているのだと思う。
1
|
|
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
を実行する。
1
|
|
## Copying classic theme into ./source and ./sass
4. Octopress サイトの立ち上げ
ここからは、公式サイトの Deploying to Github Pages With Github User/Organization pages の内容。
1
|
|
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
を確認。
実行される内容は次の通り。
- GitHub Pages リポジトリへの read/write 可能なプロトコル/パスを入力
imathis/octopress
を指すリモート名をorigin
からoctopress
に変更- GitHub Pages リポジトリへのリモート名を
origin
に設定 - アクティブなブランチを
master
からsource
に変更 - リポジトリへのパス名に応じて、ブログサイトの URL を設定
_deploy
ディレクトリに、デプロイ用のmaster
ブランチを設定
特に 4. 〜 6. 辺りの処理は、1. の入力に応じて自動的にデプロイ先のブランチが設定される(ユーザーページ用は master
、プロジェクトページ用は gh-pages
)。
そして、サイトの生成とデプロイ(後述の「6. 新規記事、新規ページの作成」も同じ)。
1 2 |
|
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 には、ユーザーページ、プロジェクトページのそれぞれで、本体のリポジトリと統合する方法が推奨されている。
1 2 3 |
|
1 2 3 |
|
統合後は、ローカルの octopress
リポジトリは不要になる。
ただし、実際にやってみると次のようなデメリットもある。
source
ブランチで管理外だった_deploy
やpublic
などを、デプロイ先のブランチでも管理外にする必要アリ。(.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 |
|
ということで特にユーザーページ用においては、Octopress リポジトリは単独で管理する、しかも非公開が好ましいと言うのが現時点での結論。
この目的にぴったりなのが Bitbucket というわけ。Git が使える上、リポジトリを非公開にでき、5人まで無料。個人利用であれば言うことなし。
Bitbucket のアカウント取得後にまずやることは、「Account settings」で SSH key を設定すること。Using SSH to Access your Bitbucket Repository を参考に。
次に Bitbucket に octopress リポジトリを作成し、リモートとして登録。
1 2 |
|
この段階で、リモートとして origin
、octopress
、bitbucket
の3つが登録されることとなる。これ以降、記事のデプロイは rake deploy
、原稿のバックアップは git push
でできるようになる。
8. Octopress の更新
本家の更新を取り込んでマージする。gems
の更新も忘れずに。
1 2 3 |
|