Gentooで Octopressを運用開始するまでの手順をメモに残す。
RubyもOctopressも運用経験がまったくない、と言う人(私もそう)でも、 2014/10付近のGentooでなら、以下の手順でうまく行くのではないかと思う。 無駄なことをしてしまっているかもしれないが。
デプロイについては、私は横着してデプロイ不要にしてしまったので、勉強中ということにしてください。
{:TableOfContents}
トラブルシューティング
- bundle install / update などでエラー
一般ユーザーでのデフォルトのgemインストール先 ~/.gem があれば、下記手順だと参照されるので、 コマンドラインオプションや環境変数でそれを止める。 そんなもの作った覚えはない、なら多分 bundle installに –pathを指定し忘れたため出来たのだろう。~/.gemを消す。
- rootを変更したら、rekeのプレビューがおかしいんだけど?
_config.yml
の root : / を変更するだけでは不足。幾つものファイルに手を入れる必要があるが、rakeがしてくれる。
bundle exec rake set_root_dir[/<subdir>]
下準備
- ruby無しの、かなりプレーンな状態からスタートする。
- 必要なライブラリを、octopress用ディレクトリにインストールする。
ruby他のインストール
ruby, bundler, gitが必要。
# emerge ruby bundler dev-vcs/git
ruby 2.0などもインストールされる場合は、1.9 を eselectしておく。
# eselect ruby list
Available Ruby profiles:
[1] ruby19 (with Rubygems) * # 19ならこのままで良い
[2] ruby20 (with Rubygems)
# eselect ruby set 1
Successfully switched to profile:
ruby19
bundler について
今回のOctpressインストールでポイントだった、bundlerの超概略
(コマンド名はbundle
、rなし)。
必要なライブラリの依存関係を Gemfileに書いておけば、 bundlerがダウンロードしてくれる。
$ bundle install --path <インストール先>
--path
はオプションで、インストール先を、 アプリケーションのディレクトリなどに変更できる。インストール後の環境内で、コマンドを実行させることもできる。
$ bundle exec <コマンド>
Octopressにも、Gemfileが付属している。
Octopressインストール
Octopressのイメージをgithubからcloneする。
$ git clone git://github.com/imathis/octopress.git octopress
$ cd octopress
依存するソフトの追加指定
jsonとrubyracerが足りず、rakeが失敗したため、 これらを Gemfileに追加することで対処した。 rubyracerはjavascriptのランタイム。
$ vi Gemfile
gem 'json', '~> 1.8.1'
gem 'therubyracer', require: "v8"
依存ソフトのインストール
./vendor/bundleにインストールする。LC_ALL=C
は重要で、LC_ALL=ja_JP.UTF8
だとv8のインストールに失敗する。
$ LC_ALL=C bundle install --path vendor/bundle --binstubs vendor/binstubs
binstubsは選択肢。
デフォルトテーマのインストール
$ bundle exec rake install
html生成、プレビュー、投稿
まず生成。え、順序がおかしいですか?でも最初にサイト構築の動作チェックをしたいよね。
次のコマンドで、全ソースの変換が行われ、
$ bundle exec rake generate
プレビューする。簡易サーバーが、tcpポート4000で動作する。 プレビュー中にソースを書き換えると、直ちに変換してくれる。便利。
$ bundle exec rake preview
投稿は、
$ bundle exec rake new_post["title"]
などとする。
楽に更新したい
新規投稿には、bashで次のエイリアスを使っている。
$ alias opost='(cd <octopress>; bundle exec rake new_post)'
$ opost
Enter a title for your post:<記事名>
既存記事の編集は、
~ $ ln -s <octopress>/source/_posts ~/posts
~ $ alias o='(cd <octopress>; bundle exec rake generate)'
としておけば、この記事の編集なら
~ $ vi posts/*octo* ; o
~ $ o
で済む。複数が該当したら、 viの :n
で次の記事へ。
プレビューしながら編集したければ、
~ $ alias op='(cd <octopress>; bundle exec rake preview)'
~ $ op
を、screenやtmuxの別タブで走らせておけば楽。 wyswygのDiscontエディタがあれば、良いかも。Markdownのwyswygとしては、stackEditなどがある。
運用
Octopressのアップデート
準備:本家のリモート名をoctopressに
git cloneしたため、インストール後のoriginは、本家を指している。 バージョン管理にoriginを使いたいため、変更する。
$ git remote rename origin octopress
本家の更新を取り込む
$ git fetch octopress
$ git merge octopress master
gemsも更新できる
$ bundle update
rsyncによる同期
リモートホスト
リモートの変更にローカルを同期させる
rsync -av <remote\>:octopress/ ~/octopress/ --exclude="vendor" --exclude=".bundle" --exclude="Gemfile*"
幾つか--exclude
しているのは、コピーすると bundle, rake がうまく動かなかったから。それぞれのホストで一旦上記手順でOctopressを立ち上げてから、同期を使うようにする。
gitを用いたバージョン管理
自分のリモートリポジトリを登録し、デフォルトブランチとする。(先に上記のように、本家のリモート名をorigin以外にしておいてから)
$ git remote add origin <url>
$ git config branch.master.remote origin
###deploy不要な私のローカル編集・サーバー似非デプロイ手順(git+ssh)
- 編集・プレビューはローカルでサクサク行いたい。
- webサーバーホストで rake generateすると、公開ページが更新されるとする。
- 適当なgitリモートリポジトリにpush / pullできるとする。
手順:
ローカルで編集・プレビュー(screenやtmuxで
b(略) rake preview
しながらvimで編集。:w
で更新されるのがcool)gitで
add -A
commit
する。git push
、リモートでgit pull
してbundle exec rake generate
$ git push; ssh <リモート> "cd ~/octopress; git pull ; bundle exec rake generate"