- jekyll は Ruby で書かれた、いわゆる
static site generator
というやつ - これをベースにした Octopress なんかが有名
- Ruby より Python が好きな人は Pelican を使うようだ
- Jekyll にしろ、Octopress にしろ Pelican にしろ、GitHub Pages に簡単にホスティングできるっつーことで人気らしい
- なお、一般的に以下の手順でブログを生成、アップロードするそうだ
- vim なり markdown エディタで記事を書く
- html ジェネレートコマンド叩く
- 内蔵のローカルサーバ (
WEBrick
の様だ) を立ち上げてブラウザで確認 rake
やmake
コマンドで GitHub Pages や Amazon S3 にアップロード
- つまり、ローカル環境に jekyll なり octopress なり実行できる環境整えて、コマンドを叩かねばならない
- いかにシンプルに git で記事を管理できるとは言え、たかが blog を書くだけに大げさである
- ・・・というわけで、その環境も一緒に全部 OpenShift に乗せればよくね?というのが始まり
OpenShift に Jekyll をホスティングするとどうなるか
- 記事を書くクライアントには
git
コマンドと適当なエディタだけあれば良いjekyll
なりoctopress
のコマンドは OpenShift 上で叩かれる
- つまり手順が以下のようになる
- 記事を適当なエディタで書く
git add
,git commit
,git push
で OpenShift にデプロイ、終了
- なにこれハイパー楽である
- 更に
git commit
は git now にしちゃうとすげー楽
- 更に
OpenShift の話
- OpenShift の良いところ
- 3 インスタンス (最小スペック) まで無料
- これはホントに無料
- クレカ登録すら不要
- 昔触ったときは Custom domains や Auto scaling は無償枠だとダメだった気がするんだけど、今は無償枠でいけるようだ
- ちなみにサービス開始当初は確か OpenShift Express, OpenShift Flex, OpenShift Power ってサービススタックだった気がするけど、いまは OpenShift Online という様だ
ssh
で入れる(・・・!)- 自由度半端ない
- 普通に入って
bash
が叩ける圧倒的安心感 bash
のenv
みると大体の作りが分かる- デプロイに失敗したときなどトラブルシューティングが比較的しやすい
- オートスケール、楽勝です
ha-proxy
ベースの様だ- カートリッジ作成時にチェックを入れるだけ (または
rhc app create <app name> -s
) - 無償枠でも 3 インスタンス分あるので、いきなり 3 台分オートスケールいける
- 3 インスタンス (最小スペック) まで無料
- OpenShift の不満なところ
- 無償枠のインスタンスは確か Amazon EC2 で動いていたと記憶しているんだけど、これ恐らく日本じゃないリージョンの様だ
- つまるところ、
ssh
なりgit
のアクセスがちょっと待たされる感ある 180 ms
くらい待ちある- 我慢できるけど、そのうち途中に master レポつくって hook から aync で投げるようにしたい
- つまるところ、
- 無償枠のインスタンスは確か Amazon EC2 で動いていたと記憶しているんだけど、これ恐らく日本じゃないリージョンの様だ
やったこと
- OpenShift のクイックスタートに Jekyll は用意されている
- ソースの
bin/control
みると分かるんだけど、path
の指定方法がちょっと不十分に見える- というわけで、このレポから fork された codemiller/openshift-jekyll-cartridge を利用しようと思った
- けど、別の問題もあって
jekyll
コマンド実行時にLANG
指定しておかないと日本語の記事をビルドしてくれない・・・ - 結局 fork して追記した
$ rhc app create blog https://raw.github.com/kazuhisya/openshift-jekyll-cartridge/master/metadata/manifest.yml -s
- 最後の
-s
はオートスケールにするために付けた - あとは簡単
- 適当なテーマを適用して、記事を作る
$ cd blog
$ vim _posts/2014-04-18-hello-world.md
- 最後に
git add
,git commit
とgit push
で終了
$ git add -A; git commit -m "hello world"; git push