PaaSを使ってみる(その1 dotCloud)
とりあえず、サーバ側は動くようになったのでスマホ側からアクセスさせるための準備でどっか公開されたところにアプリアップします。
いきなり、サーバ借りるわけにもいかないのでPaaS利用してみます。
今回はRuby Rails Redisが使えるPaaSを探してみましたが色々あってよくわからないので、いくつかお試しで使ってみようと思います。
本日は 「dotCloud」です。
dotCloudでサポートされている言語は
サポートされるデータベースは
- mySQL
- mongoDB
- Redis
- PostgreSQL
その他
このようなサービスも利用可能です。
気になる料金
今回はRubyとRedis使用するのでこのような条件で見積もって
このような価格になりました。
dotCloudではサービスの提供に、Sandbox(開発時)、Live(公開時)の2パターン(Flavorと呼んでいるようです)があります。
開発時は独自のドメインが使えず、ベストエフォートであるものの、サービスのリソース制限もなく、SSLも使えるようです。
開発者にはかなり優しいのではないでしょうか?
dotCloud - Application Flavors
こちらに詳しく制限については書いてありました。
Sandboxだと一定期間で休止状態(Hiberbnate)になるとのことなので
継続したサービスには使えなさそうですね。
まずはサインイン
dotCloud - One home for all your apps にアクセスして右上の「Sign Up」をクリックすると
メールアドレスを聞かれるので、ここにメールアドレスを入力し、ダイアログの「Sign Up」をクリックすると
入力したメールアドレスに下記のようなメールが届き、そこにあるStep1のリンクからアカウントのアクティベートを行います。
Thanks for registering for dotCloud, the easiest way to deploy and scale your web applications. You're 3 simple steps away from deploying your first app: 1. Activate your account by visiting: http://www.dotcloud.com/accounts/activate/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx 2. Install our CLI: http://docs.dotcloud.com/firststeps/install/ 3. Create a simple "hello world" sandbox app: http://docs.dotcloud.com/firststeps/quickstart/#a-simple-example Happy hacking!
アクティベートには、ユーザ名とパスワードを設定します。
アクティベートが終わるとダッシュボードが表示され、アプリケーションを追加することができます。
dotCloud CLIをインストール
dotCloudを操作するためにはdotCloud CLIをインストールします。このツールはpythonで動くので予めpythonのインストールが必要です。
Windowsの場合は先にcygwinのインストールが必要とのこと。
自分の環境は、ubuntuなので
$ sudo easy_install pip && sudo pip install dotcloud sudo: easy_install: コマンドが見つかりません
まだ easy-installがインストールされていない様なので
$ sudo apt-get install python-setuptools
を実行した後再度、実行します。
Railsアプリのデプロイ
- 普通にRailsアプリを新規で作成します。
$ rails new sample create create README.rdoc create Rakefile create config.ru create .gitignore create Gemfile create app create app/assets/images/rails.png create app/assets/javascripts/application.js create app/assets/stylesheets/application.css create app/controllers/application_controller.rb create app/helpers/application_helper.rb create app/mailers create app/models create app/views/layouts/application.html.erb .........
Rails3.1以降ではプリコンパイル済みのアセットが必要です。
$ rake assets:precompile
- dotCloud上にアプリを作成します。
$ cd sample $ dotcloud create sample ==> Creating a sandbox application named "sample" ==> Application "sample" created. Connect the current directory to "sample"? [Y/n]: y
これでdotCloud上にsampleと言うアプリケーションが作成されました。
- Buldファイルの作成
dotCloudでアプリケーションを動かすために「dotcloud.yml」というファイルを用意します。
RailsでMysqlを使う場合はこの様なファイルを作成します。
www: type: ruby db: type: mysql
Redisを使用する場合は
www: type: ruby data: type: redis
この様になります。
詳しくは、dotCloudのドキュメントのBuildFileのページ、また各サービス(言語、DB)のページにBuildファイルの記述例があります。
dotCloud - Available dotCloud Services
dotCloud - Build File
dotcloud.ymlをアプリケーションのルートに保存して
次のコマンド dotcloud push で dotcloudサーバにアプリケーションがアップされます。
$ dotcloud push ==> Pushing code with rsync from "./" to application sample building file list ... done ./ .gitignore .rbenv-gemsets .rbenv-version Gemfile Gemfile.lock README.rdoc Rakefile config.ru dotcloud.yml .dotcloud/ .dotcloud/config app/ ................. sent 29.49K bytes received 1.25K bytes 5.59K bytes/sec total size is 46.16K speedup is 1.50 ==> Submitting a deployment request for application sample ==> Deployment of revision rsync-1355159207277 scheduled for sample - 2012-12-11 (sample deployment, deploy_id=a1686a7b-dc80-4019-9d0e-49fc2098b9e4) 02:07:25: [www] Fetching gem metadata from https://rubygems.org/......... 02:07:27: [www] Fetching gem metadata from https://rubygems.org/.. 02:07:28: [www] Installing rake (10.0.2) 02:07:28: [www] Installing i18n (0.6.1) 02:07:28: [www] Installing multi_json (1.4.0) 02:07:29: [www] Installing activesupport (3.2.9) 02:07:46: [www] Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed. 02:07:46: [www] Post-install message from rdoc: 02:07:46: [www] Depending on your version of ruby, you may need to install ruby rdoc/ri data: 02:07:46: [www] 02:07:46: [www] <= 1.8.6 : unsupported 02:07:46: [www] = 1.8.7 : gem install rdoc-data; rdoc-data --install 02:07:46: [www] = 1.9.1 : gem install rdoc-data; rdoc-data --install 02:07:46: [www] >= 1.9.2 : nothing to do! Yay! 02:07:46: [www] ................. 02:07:52: [www] Build completed successfully. Compiled image size is 10MB 02:07:52: [www] Build successful for service (www) 02:07:52: --> Application (sample) build is done 02:07:52: --> Provisioning services' instances... (This may take a few minutes) 02:07:52: [www] Using default scaling for service www (1 instance(s)). 02:07:52: [www.0] Provisioning service (www) instance #0 02:08:08: --> All services' instances have been provisioned. Installing code... 02:08:09: [www.0] Installing build revision rsync-1355159207277 for service (www) instance #0 02:08:19: [www.0] Running postinstall script... 02:08:21: [www.0] Launching... 02:08:22: [www.0] Waiting for the instance to become responsive... 02:08:22: [www.0] Re-routing traffic to the new build... 02:08:24: [www.0] Successfully installed build revision rsync-1355159207277 for service (www) instance #0 02:08:24: [www.0] Installation successful for service (www) instance #0 02:08:24: --> Application (sample) fully installed ==> Application is live at http://sample-euledge.dotcloud.com
デプロイにはrsyncでサーバーにファイルがアップされるようです。
またアップが終わると自動的にBundle Installがされインスタンスの起動まで行われています。
ダッシュボードで確認してみましょう。
デプロイ時の最後、またはダッシュボードに公開されているURLが記されているので早速アクセスしてみると。
こんな感じでデプロイできています。
ダッシュボードからは、メモリ使用量、トラフィック、サーバーログ、環境変数、ドメイン名、課金状況など表示することができます。
ちなみに、ログをみるとWebサーバーはnginxが動いてるみたいです。
またSandboxからLiveへの切り替えもダッシュボードのAdminから行うようです。
あとは、ローカルでアプリコーディングして $dotCloud pushでデプロイのサイクルをしていけば良さそう。
そういえば、課金されたときの支払いはクレジットカードですが、Sandbox利用している段階ではクレジット情報の入力は不要みたいです。つまりSandbox利用中はずっと無料ってこと、これなら結構気楽に使っていけるんじゃないでしょうか?
色々なPaaS触ってみようと思ったけど、何か既にこれで十分な気がしてきた。その2があるかどうかは未定ってことで