トップ «前の日記(2012/05/22 (火) ) 最新 次の日記(2012/05/24 (木) )» 編集 RSS feed

HsbtDiary


2012/05/23 (水) [長年日記]

[tDiary][sqale] tDiary を sqale.jp で動かす方法

勤務先の paperboy が PaaS の sqale をリリースしたみたいなので、早速 tDiary を動かしてみました。

http://tdiary-hsbt.sqale.jp

以下手順。

git clone して作業用ブランチを用意する

$ git clone git://github.com/tdiary/tdiary-core.git
$ cd tdiary-core
$ git checkout -b sqale

sqale 用にファイルを変更する

まず、.gitignore から tdiary.conf の行を削除して tdiary.conf ファイルを雛形からコピーします。

$ cp tdiary.conf.heroku tdiary.conf

tdiary.conf の中の @style を GFM から Wiki に変更します。なぜなら sqale では libffi が使えないからです。そのうち使えるようになると思います。多分。

次に、.env ファイルに必要な環境変数 DATABASE_URL を書き込みます。.env はいわゆる heroku config:add var1=foo 的な奴なので、必要に応じてどんどん増やすことが出来ます。DATABASE_URL の値はダッシュボードのアプリケーション詳細 > データベース接続情報 に書いてある値を用います。

DATABASE_URL=mysql://username:password@hostname/databasename

続いて、Gemfile を sqale 用に編集します。とりあえず pg と thin をコメントアウトして mysql のコメントアウトを外せば動きます。必要ない dalli や redcarpet 関連は使わないので、気持ち悪い場合はコメントアウトしておきます。

パスワードファイルを作る

認証時に使用するパスワードファイルを作ります。machu さんが作ってくれた rake task を使うと便利です。

$ rake auth:password:create

テーマを入れる

デフォルトのテーマが素っ気ない場合は https://github.com/tdiary/tdiary-theme から格好いい奴を theme フォルダの下にまるっとコピーします。例えば gustav を使いたい場合は

$ git clone git://github.com/tdiary/tdiary-theme.git
$ cp -r tdiary-theme/gustav theme
$ rm -rf tdiary-theme

という感じです。作業ディレクトリとかは適当に読み替えてください。

asset を入れる

sqale は heroku と違って、最初にロードバランサとして ELB, コンテナ毎に nginx と unicorn が動く仕組みなので、assets を nginx から見えるように配置する必要があります。Rails は public 配下を上手いことやってくれるので必要ありませんが、tDiary は上手いことやってくれないので手でコピーする必要があります。

こんな事もあろうかと rake assets:copy というタスクを作っておきました。これを実行すると public/assets の下に必要なファイルが良い感じにコピーされます。このタスクの FileTest が無駄と怒られたのは後で直しておきます。

sqale にプッシュする

ここまで出来たところで sqale の git url をリモートブランチとして登録します。この値はダッシュボードのアプリケーション詳細に書いてあります。

$ git remote add sqale ssh://sqale@gateway.sqale.jp:2222/hsbt/tdiary.git

プッシュします。

$ git push sqale sqale:master

データベースを作成する

sqale ではデータベースを操作する時は ssh でログインして実行する必要があります。この辺は画面から操作できるように、そのうち楽になるかもしれません。ssh は port 2222 なので以下のように ssh にオプションを付けてログインします。

$ ssh -p 2222 sqale@gateway.sqale.jp 

複数のコンテナを有効にした状態でログインすると、コンテナの選択メニューが出ます。今回は共用のデータベースを変更したいので適当なコンテナを選択します。

ログイン後に current ディレクトリに移動してから環境変数 DATABASE_URLRACK_ENVをシェルに設定します。

$ export DATABASE_URL=mysql://username:password@hostname/databasename
$ export RACK_ENV=production

RACK_ENV を指定しているのは、こうしないと sequel が require されないから。この辺はもう少し洗練させないとなあ。とりあえず設定後にデータベースを作成する

$ bundle exec rake db:create

最後に nginx と unicorn を再起動

$ /etc/init.d/app restart

今のところ sqale のコンテナ間で tDiary のキャッシュを共有する仕組みがないので、複数のコンテナを使おうとすると日記やコメントの内容がちぐはぐになってしまうけど、その辺はご愛敬。memcached とかに入れないとダメなんだろうけど、その辺の機能は正式リリース時には追加されるんじゃないかな。

sqale は VPS と Heroku の間をターゲットにした、ちょっと変わった PaaS なので、試してやるぜという方がいたらクローズドβの追加募集に申し込んでみてください。