mk-mode BLOG

このブログは自作の自宅サーバに構築した Debian GNU/Linux で運用しています。
PC・サーバ構築等の話題を中心に公開しております。(クローンサイト: GitHub Pages

ブログ開設日2009-01-05
サーバ連続稼働時間
Reading...
Page View 合計
Reading...
今日
Reading...
昨日
Reading...

Octopress - 環境構築!

[ ブログ ] [ Lokka, Octopress, Ruby, WordPress, nanoc, tDiary ]

こんばんは。

少し前には、Ruby 製の日記ツール tDiary や、CMS の nanoc, Lokka が気になっていました。
しかし最近は、それらよりも Octopress の方が非常に気になる存在になっていました。
そこで、ついに当方のサーバに Octopress の環境を構築しました。(昨日も言いましたが)

WordPress(PHP + MySQL) は、プラグインが豊富で、設定次第ではとても快適に使用できます。
しかし、当方は一応 Rubyist なので、Ruby や Rails 製の方が使いやすいのでは?と最近は感じていた次第です。

今日は、環境構築についての記録です。
(基本的には Octopress の説明通り)

0. 前提条件

  • クライアント側は Linux Mint 13 (64bit) を想定。
  • クライアント側の Ruby は rbenv でインストールする。
  • クライアント側に Git がインストール済みである。
    (Octpress のインストール、ソースのバージョン管理で使用する)
  • Github Pages や Heroku は使用せず、Rsync 経由でデプロイする。
  • サーバ側は CentOS 6.3 (32bit) を想定。
  • サーバ側には OpenSSH サーバが構築済みで、鍵ペアによる SSH 接続が可能になっている。
  • サーバ側には Git サーバが構築済みである。
  • サーバ側ディレクトリは “/var/www/octopress” で SSH 接続するユーザの権限になっている。
  • 以降の作業は当方の環境によるものなので、適宜ディレクトリ等の記述は置き換えて考えること。

1. Octopress インストール

1-1. Ruby インストール

rbenv でインストールされている Ruby が 1.9.3-p194(次項で作成されるファイル .rbenv-version に記載されているバージョンに合わせるため) でないならインストールする。

1
2
$ rbenv install 1.9.3-p194
$ rbenv rehash

.rbenv-version のバージョンを変更してもよかったのかも知れない。

1-2. Octopress のインストール

1
$ git clone git://github.com/imathis/octopress.git octopress

1-3. 依存関係のインストール

1
2
3
4
$ cd octopress
$ gem install bundler
$ rbenv rehash              # <- rbenv で Ruby をインストールしている場合のみ
$ bundle install

1-4. デフォルトテーマのインストール

1
$ rake install

2. SSH 経由 Rsync でデプロイ!

2-1. Rakefile 編集

以下を Rakefile に追加する。

Rakefile
1
2
3
4
ssh_user       = "user@server"          # <- 実際のユーザ名、サーバ名を指定
document_root  = "/var/www/octopress/"  # <- サーバでの配置ディレクトリ
rsync_delete   = true
deploy_default = "rsync"

2-2. デプロイ

1
2
$ rake generate
$ rake deploy

ローカルの public ディレクトリ配下とサーバ側のドキュメントルートにファイルが生成される。

2-3. プレピュー

1
$ rake preview

ローカルでブラウザで http://localhost:4000/ にアクセスすれば、プレビューを確認できる。

2-4. Rsync で同期除外

Rsync による同期をさせたくないファイル・ディレクトリがある場合、それらを以下のように rsync-exclude に記載しローカルに配置する。

rsync-exclude
1
2
3
some-file.txt
some-directory/
*.mp4

2-5. サブディレクトリ運用

http://<サーバURL>/fuga のようにサブディレクトリ運用する場合は、以下のようにする。

1
$rake set_root_dir[fuga]
_config.yml
1
url: http://www.mk-mode.com/fuga  # <- サブディレクトリ追加
Rakefile
1
document_root = "/var/www/octopress"  # <- 必要ならここも変更

次回から、http://localhost:4000/fuga でアクセスする。

3. ソースのバージョン管理

3-1. リモートリポジトリ作成

ソース管理用に自前の Git サーバにリモートリポジトリを作成する。
サーバの ~/git ディレクトリに octopress.git というリポジトリを作成する。
※前提条件に記載しているように、今回は GitHub は使用しない。

1
2
3
$ mkdir /var/lib/git/public_git/octopress.git
$ cd /var/lib/git/public_git/octopress.git
$ git --bare init --shared

3-2. バージョン管理

Octopress から clone しているので、orignclone したリポジトリになっている。
自前の Git サーバを使用するので、originoctopress に変更しておく。
そして、自前 Git サーバ用に origin を登録し直し、新しい origin をデフォルトブランチに設定する。

1
2
3
$ git remote rename origin octopress
$ git remote add origin ssh://bar@foo.mk-mode.com/var/lib/git/public_git/octopress.git
$ git config branch.master.remote origin

後は、通常の Git 操作でよい。(ローカルポジトリを add, commit して、リモートリポジトリに push する)

4. 記事作成

4-1. 記事作成

テスト用に記事を作成する。

1
$ rake new_post['Test post by Octopress']

これで、 source/_posts/2012-11-27-test-post-by-octopress.markdown というファイルが作成される。 内容を Markdown 記法で編集する。 タイトルもここで日本語にできる。

1
2
3
4
5
6
7
---
layout: post
title: "Test post by Octopress"
date: 2012-11-27 13:56
comments: true
categories:
---

4-2. プレビュー

1
2
$ rake generate
$ rake preview

ブラウザで http://localhost:4000/fuga にアクセスすれば確認できる。

5. 日常作業

日常の作業は、記事やページを作成後、HTML 変換、プレピュー、デプロイでよい。

1
2
3
4
5
$ rake new_post["title"]  # <- 新規記事を作成
$ rake new_page["title"]  # <- 新規ページを作成
$ rake generate           # <- 記事を HTML に変換
$ rake preview            # <- プレビュー(http://localhost:4000/octopress)
$ rake deploy             # <- 記事を公開(サーバにデプロイ)

6. その他

6-1. 所感

  • データベース(WordPress の MySQL 等) を使わず、1記事1テキストファイルなので、管理しやすい。
  • Markdown 記法で記事を作成できる。
  • Ruby 製なので Rubyist は何かとメンテナンスしやすい。
  • GitHub Pages, Heroku で運用するなら、レンタルサーバや自前のサーバは不要。(当方は自宅サーバで運用している)
  • デフォルトのクラシックテーマでも、シンプルで見やすい。

6-2. 今後の課題

  • テーマのカスタマイズ。
  • 各種プラグインの導入。(コメント、Twitter、等々)
  • アクセス解析をどうするか?
  • 既存の WordPress の記事の移行作業。
  • 記事投稿時の ping 送信処理をどうするか?(Ruby で XML-RPC 使用?)
  • W3C Validation はどうするか?(HTML5だからやらない?)
  • Git 知識の習得。
  • Markdown 記法についての知識の習得。

6-3. 参考サイト


明日以降も、各種設定や WordPress からの移行について掲載していく予定です。

以上。

Comments