2013/09/03 Gehirn(ゲヒルン)RS2で最新のtDiaryを使うメモ [長年日記]
さくらインターネットのレンタルサーバプレミアムを解約してドメイン移行
ファイル容量もそんなに使ってなかったり、ハズレサーバなのか妙にレスポンスが悪いので、レスポンス改善と費用削減を兼ねて半額ぐらいのところに変更してみた。
移動先は、Gehirn RS2のトール。VPSとレンタルサーバの中間的な事ができそうというのが、選んだ理由。
サンプルで設置してみた既設CGIのレスポンスがかなり改善されたので、基本的には移行前提で作業を進めてみる。
クレジットカードの有効期限切れによる料金未納から一時的に失効してしまったおかげで、今つかっているドメインが復活手数料こみで6000円近くもかかっているので、当面はこのドメインを継続利用としたい。
ゲヒルンDNS側で、さくらで取得したドメインを管理できるように事前準備をおこなう。
ゲヒルンDNS側でドメイン追加
表示されたとおりさくらのドメイン管理画面からTXTレコードを追加
ゲヒルンDNS側でAレコード、MXレコード追加
サブドメインを使いたい場合は、その分だけ追加しておく。
サブドメインは、特定のディレクトリおよび指定したポートへリダイレクト(リバースプロキシ)可能。
さくらのドメインサーバでwhois情報のNSサーバをゲヒルンのものに変更
DNS伝搬されるのを待つ、別にどうでもいいサーバなので今回は事前にTTLとかいじらない。
さくらインターネットのサーバにsshでログインして、nslookup等で変更されている事を確認する。
tDiaryをgemでインストール
WordPressに浮気しているうちに、tdiaryのインストール環境も随分と様相が変わっていた。
従来のCGI版で動作させようとセットアップするもののうまく動かないので、rack環境用の手順を参考にインストール。
rubyや必要ライブラリの準備
ruby等は、RS2コマンドでtdiary4.0系が動くものに変更しておく。
rvmコマンドでバージョンを追加したり、変更可能。
$ rs2 install ruby 1.9.3
動作に必要なものをいれておく。
$ gem install rack $ gem install bandler
tdiary本体のインストール
--no-documentを指定しないとエラーがでるので、--no-documentを指定してインストール。
$ gem install tdiary --no-document Successfully installed tdiary-4.0.1 1 gem installed
インストールディレクトリ名(例:td)を指定して下記のコマンドを実行
$ tdiary new td
ユーザ名とパスワードがきかれるので入力する。これは、更新時に要求されるユーザ名とパスワードになる。
その他の雑作業
インストールディレクトリに移動し、残った手作業を実施をする
imageプラグイン用の設定
$ cd td $ mkdir images $ ln -s /home/username/public_html/td/images ./public/images
imagesフォルダがないので、設定しておく。
staticなファイルをrack環境から見せるには、public配下にシンボリックリンク等を設定しておけばよい。
tDiaryの起動+リバースプロキシの設定
reverse proxyで使えるポートは、ユーザ毎に固定の数ポートが割り振られている。
RS2のコンパネからRS2→DNS→(tDiaryで利用する)サブドメイン→Reverse Proxyの設定の実施
選択したポートはメモしておく
メモしたポートを-pで指定して起動する。
bundle exec tdiary server -p ポート番号 $ bundle exec tdiary server -p xxxxx
設定が保存できないとき
設定したサブドメインにアクセスすることで、内部のlocalhost:xxxxにリダイレクトされる。
実際は、localhost:xxxxxで起動しているため、ブラウザのリファラと一致しないためCSRF対策にひっかかり設定が保存できない。
!! Unexpected error while processing request: Security Error: Possible Cross-site Request Forgery (CSRF) Diagnostics: - Protection Method is 1 - Mode is saveconf - GET is not allowed - Request Method is POST - Referer is another page - Given referer: http://blog.moooi.jp/update.rb - Expected base URI: http://localhost:61046/ - Expected update URI: http://localhost:61046/update.rb - CSRF key is nothing
対処案
その1:Refererをexpected update URIに偽装してやる
ブラウザのアドオンとか使えば、Referer偽装できるのでそれでやりすごしてtdiaryのパスを、リバプロ経由(localhost〜じゃないアドレス)外向けのURLに変更する。
その2:base_urlを設定ファイル直書きで回避
力技。
data/tdiary.conf Options2 = { 'base_url' => "http://blog.moooi.jp/"}
まだ色々とよくわからない事が多いが、とりあえずはこれで運用してみることとする。