DotCloudにSinatraアプリ(Lokka)を設置してみた
最近Lokkaにはまってる
で,せっかくなのでいろんな環境でデプロイしてみたりしてるんだけど,
その中でもDotCloudでのデプロイは面倒という話
DotCloudとは
PaaSとか言われるものに分類されるっぽい
HerokuとかGAEとかと一緒にされますが,
それらよりもいろいろな言語とかデータベースとか
その他ソフトウェアに対応してる
DotCloudめんどう
DotCloudはいろいろな部分が低レベル
もともとruby専用だったHerokuと違い
使う言語やDBを指定しないと行けなかったり,
設定がrubyの環境変数ではなくファイルで置かれていたり,
sshで作業することが前提となっていたり(そのおかげでcronとか普通に使えるのは便利)
どちらかというとレンタルサーバで作業している気分になれる
仕様変更
ついこの間バージョンアップがあったようで使い方が変更されている
公式ドキュメント以外ほぼ情報がないところが多くて大変困る
Lokkaのデプロイ
めんどくさかったので一番楽そうな方法をまとめた
ダウンロード
git clone git://github.com/yayugu/lokka.git git checkout dotcloud
あるいは
公式のLokkaをcloneして
diff --git a/config.yml b/config.yml index 0dab043..98de2a4 100644 --- a/config.yml +++ b/config.yml @@ -1,5 +1,15 @@ +<% +# for dotcloud +dotcloud = + if File.exist? '/home/dotcloud/environment.json' + JSON.parse(File.read('/home/dotcloud/environment.json'))['DOTCLOUD_DATA_SQL_URL'].gsub('pgsql', 'postgres') + '/template1' + else + nil + end +%> + production: - dsn: <%= ENV['DATABASE_URL'] || ENV['DUOSTACK_DB_MYSQL'] %> + dsn: <%= ENV['DATABASE_URL'] || ENV['DUOSTACK_DB_MYSQL'] || dotcloud %> development: dsn: sqlite3://<%= root %>/db/development.sqlite3 test: diff --git a/dotcloud.yml b/dotcloud.yml new file mode 100644 index 0000000..3607612 --- /dev/null +++ b/dotcloud.yml @@ -0,0 +1,7 @@ +www: + type: ruby + exclude_bundler_groups: + - development + - test +data: + type: postgresql
dotcloudではdbのURLとかはrubyの環境変数に入れてくれないので読みにいく必要がある.
それからpostgresなのはmysqlだとデフォルトデータベースがないので,dbのサーバにsshでログインして'create database lokka;'とかやる必要があるから.
postgresだとなぜかtemplate1という空のデータベースが1つつくられてあるのでそれを利用*1
おしまい
自由度が高い&変な抽象化っていうのは厄介だね.
でも無料でいろいろできるしパフォーマンスもHerokuと比べて良かった気がしたので
そのへんはいいところ
特にHerokuの泣きどころの久しぶりのアクセス1回目はすごく遅いってもんだいがあんまりなさそう(な気がした)のはいいね