octopressでgithubにブログ開設

rbenvとoctopressをインストールしてgithubにブログを作る手順のメモです。

rbenvをインストール

を参考にインストールしました。

インストール先は~/.rbenvとしました。

cd
git clone git://github.com/sstephenson/rbenv.git .rbenv

echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> .bash_profile
echo 'eval "$(rbenv init -)"' >> .bash_profile

. ~/.bash_profile

ruby-buildをインストールします。なお、私はHomebrewを使っているので/usr/localには書き込み権限をつけてあります。

cd
git clone git://github.com/sstephenson/ruby-build.git
cd ruby-build
./install.sh

rbenvでruby 1.9.2-p290をインストール。

rbenv install 1.9.2-p290
$ rbenv versions
* 1.9.2-p290 (set by /Users/hnakamur/octopress/.rbenv-version)

でインストールされたrubyがrbenvで認識されたことを確認。

rbenv global 1.9.2-p290

で切替。

$ which ruby
/Users/hnakamur/.rbenv/shims/ruby
$ ruby --version
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.3.0]

octopressでgitにブログをセットアップ

Deploying to Github Pages - Octopress を参考にセットアップしました。

ここでは~/octopressを作業ディレクトリとしました。

cd
git clone git://github.com/imathis/octopress.git octopre
cd octopress
ruby --version
gem install bundler
rbenv rehash
rake install

ブラウザでgithubを開き、自分のアカウント(私の場合はhnakamur)でblogというプロジェクトを作ります。ブラウザで https://github.com/hnakamur/blog を開き、“Next steps:“に

git remote add origin git@github.com:hnakamur/blog.git

と書かれている行のgitのURL(ここではgit@github.com:hnakamur/blog.git)をコピーします。

その後

rake setup_github_pages

を実行し、“Enter the read/write url for your repository:“というプロンプトが出たらURLを貼り付けます。

Enter the read/write url for your repository: git@github.com:hnakamur/blog.git
vi _config.yml

ブログタイトルなどを編集します。

url: http://hnakamur.github.com/blog
title: "hnakamur's blog at github"
subtitle: my trial and error log
author: Hiroaki Nakamura
…(略)…
date_format: "%Y-%m-%d"
…(略)…

さらに

permalink: /blog/:year/:month/:day/:title/
…(略)…
category_dir: blog/categories
…(略)…
titlecase: true       # Converts page and post titles to titlecase

を以下のように変更します。

permalink: /:year/:month/:day/:title/
…(略)…
category_dir: categories
…(略)…
titlecase: false      # Converts page and post titles to titlecase

これは記事のパーマリンクやカテゴリページのURLが/blog/blog/…のようになってしまうのを/blog/…のようにするためです。

またタイトルの先頭を大文字にするのもオフにしています。

なお、アーカイブのページのURLは/blog/blog/archiveになってしまっていますが、変更方法をまだ見つけられていません。

記事の作成と投稿

rake new_post['Hello, octopress!']

と実行すると、最後に

Creating new post: source/_posts/2012-03-03-hello.markdown

と作成されたファイルが表示されます。

エディタでこのファイルを開いて記事を書きます。

vi source/_posts/2012-03-03-hello.markdown
---
layout: post
title: "Hello, octopress!"
date: 2012-03-03
comments: true
categories: octopress
---
octopressでブログ記事を投稿してみるテスト。
rake generate

でHTMLが生成されます。

rake preview

を実行して、ブラウザで http://localhost:4000/blog/ を開くと、プレビューできます。

rake deploy

でgithubにプッシュされ、10分ぐらい待つと http://hnakamur.github.com/blog/ に記事のページで作られました。

時間がかかるのは初回にgithub pagesを作るときだけで、次回以降は即座に作られました。

記事のソースをgithubにプッシュ

リモートの設定にoriginを追加して、そこをデフォルトのブランチに設定。

git remote add origin git@github.com:hnakamur/blog.git
git config branch.master.remote origin

設定の変更と生成されたソースをコミット、プッシュします。

git add .
git commit -m 'Modify config. Add source and sass'
git push origin HEAD:source

github上でのブランチ名をsourceではなくmasterにしてよければ、単に

git push

でOKです。

ローカルのApacheでプレビュー

Apacheは事前にセットアップ済みという前提で、プレビュー用の設定を追加します。

sudo vi /etc/apache2/other/blog.conf

と実行して、以下の内容で作成します(hnakamurの部分は自分のアカウント名で置換してください)。

Alias /blog /Users/hnakamur/octopress/public/blog
<Directory /Users/hnakamur/octopress/public/blog>
	AllowOverride None
  DirectoryIndex index.html
	Order allow,deny
	Allow from all
</Directory>
sudo apachectl restart

でApacheを再起動します。

これ以降は記事を編集してrake generateだけ実行すれば http://localhost/blog/ を開いてプレビューできます。

今回のはまりポイント

YAMLで文字列を"“で囲む必要があった

$ rake generate
(in /Users/hnakamur/octopress)
## Generating Site with Jekyll
unchanged sass/screen.scss
/Users/hnakamur/.rbenv/versions/1.9.2-p290/lib/ruby/1.9.1/psych.rb:148:in `parse': couldn't parse YAML at line 16 column 13 (Psych::SyntaxError)
	from /Users/hnakamur/.rbenv/versions/1.9.2-p290/lib/ruby/1.9.1/psych.rb:148:in `parse_stream'
	from /Users/hnakamur/.rbenv/versions/1.9.2-p290/lib/ruby/1.9.1/psych.rb:119:in `parse'
	from /Users/hnakamur/.rbenv/versions/1.9.2-p290/lib/ruby/1.9.1/psych.rb:106:in `load'
	from /Users/hnakamur/.rbenv/versions/1.9.2-p290/lib/ruby/1.9.1/psych.rb:205:in `load_file'
	from /Users/hnakamur/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/jekyll-0.11.0/lib/jekyll.rb:119:in `configuration'
	from /Users/hnakamur/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/jekyll-0.11.0/bin/jekyll:207:in `<top (required)>'
	from /Users/hnakamur/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/bin/jekyll:19:in `load'
	from /Users/hnakamur/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/bin/jekyll:19:in `<main>'

_config.ymlの

date_format: %Y-%m-%dT%k:%M:%S%z

date_format: "%Y-%m-%dT%k:%M:%S%z"

と修正して再実行したらOKでした。

git push origin sourceでエラー

$ git push origin source
error: src refspec source does not match any.
error: failed to push some refs to 'git@github.com:hnakamur/blog.git'

ググって Error when “git push” to github - Stack Overflow を発見。

git push origin HEAD:source

にしたらOK。