さて、夏バテ気味の僕もついにあのdotcloudに入門してみました。
作業するための環境を用意する
今回は作業環境にさくらVPS(CentOS5.5)を使うことにしました。理由は聞かないで。python2.6とeazy_install, pipを入れる必要があるらしい
こちらの記事を参考に、素直にrootでpython2.6などをビルド&インストールしました。補足としては、先のブログの「インストール」のところにあるコードスニペットの7行目
zlib zlibmodule.c -I$(prefix)/include -L$(exec_prefix)/lib -lzここは、「こういう行が Modules/Setup の中でコメントアウトされているから、それをコメントインしなさいね」の意であるようです。
ちなみにこのステップをpythonbrewを使って楽することも出来るってすごい人から教えてもらいました。すげー!
dotcloud コマンドラインツールをインストール
どう見ても# easy_install-2.6 dotcloudこれだけでした。本当にありがとうございました。
一般ユーザ権限でpython2.6を使えるように設定
先のブログにも書いてますけど、$HOME/.bashrcに以下を追記すればOKです。PATH=$PATH:/usr/local/python/bin alias python='python2.6'
アプリケーションをdotcloudに登録する
デプロイの準備としてアプリケーション名をdotcloudに教える必要があるので、アプリケーション登録をします。$ dotcloud create [App-Name][App-Name]には半角英字4文字以上でアプリケーション名を入れてあげましょう。
初回起動時に限り、dotcloudのapi-keyを聞かれますので、このあたりでコピーし、ターミナルに貼り付けてやればいいです。
PSGIアプリをこさえてUPする
このあたりにグッドでナイスなドキュメントがありますが、重要なのはdotcloud.ymlという設定ファイルと、アプリのファイル構造です。とはいえ、本当にスッカスカの状態のアプリを作って上げないことには基本がわかりにくい気もするので、スッカスカアプリ(ハローワールド)を仕立てていきます。
アプリのディレクトリを作る
そのまんまです。好きな名前のディレクトリ名でいいでしょう。$ mkdir myhello
アプリのルートディレクトリを作る
approotと呼ばれるディレクトリを用意する必要があります。さっき作ったディレクトリの直下に置くということさえ守れば、ディレクトリ名はなんでもOKです。$ mkdir myhello/oreapp
dotcloud.ymlを書く
dotcloudにアプリを上げて適正に動作させるためには、dotcloud.ymlが不可欠です。とはいえ、非常にシンプルなので臆せずに。viなどのエディタで、先に作成したアプリのディレクトリ直下(approotと同列)にdotcloud.ymlを作りましょう。www: type: perl approot: oreapp
app.psgiを書く
取り急ぎ以下のようなアプリを書いて、oreapp/app.psgi として保存します。sub { [ 200, [ 'Contents-type' => 'text/html' ], [ 'All your vase are belong to ass' ] ] }
デプロイする
dotcloudにアプリをデプロイします。$ dotcloud push myhello ./myhello/
すると、rsyncで同期しているような表示がでてきて、ちょっとまっていると
2011-09-02 15:31:08 [api] All the services are ready. Beginning the build. 2011-09-02 15:31:08 [www.0] The build started 2011-09-02 15:31:09 [www.0] Fetched code revision rsync-1314977467.1 2011-09-02 15:31:11 [www.0] Reloading nginx configuration: nginx. 2011-09-02 15:31:13 [www.0] uwsgi: started 2011-09-02 15:31:14 [www.0] The build finished successfully 2011-09-02 15:31:14 [api] Deploy finished Deployment finished. Your application is available at the following URLs www: http://ytnobody-myhello.dotcloud.com/みたいな感じの表示が出てきます。これでデプロイ終了です。
最後に表示されたURLにアクセスして、
All your vase are belong to assと表示されていれば無事にアプリが稼動しています。
perl on dotcloud に関するもっと良い情報
hachioji.pm常連のすごい人がまとめてるPerl on DotCloud まとめがいい感じです。さいごに
途中から書くのだるくなっちゃって、テキトーな感じになりましたが、意外とdotcloudは難しくないぞ、ということを言いたかったのであります。ついでに
こうなったらどうすればいいのでしょうか。どなたか教えてください><Deployment for "ytnobody" triggered. Will be available in a few seconds. 2011-09-02 16:31:15 [api] Deploy ytnobody scheduled for revision=latest 2011-09-02 16:31:15 [api] Waiting for the build. (It may take a few minutes) 2011-09-02 16:31:15 [api] All the services are ready. Beginning the build. 2011-09-02 16:31:15 [www.0] The build started 2011-09-02 16:31:16 [www.0] Fetched code revision rsync-1314981073.92 2011-09-02 16:31:17 [www.0] --> Working on . 2011-09-02 16:31:17 [www.0] Configuring Ytnobody-Hello-0.01 ... OK 2011-09-02 16:31:17 [www.0] ==> Found dependencies: Pickles 2011-09-02 16:31:18 [www.0] --> Working on Pickles 2011-09-02 16:31:18 [www.0] Fetching http://search.cpan.org/CPAN/authors/id/D/DM/DMAKI/Pickles-0.08.tar.gz ... OK 2011-09-02 16:31:18 [www.0] Configuring Pickles-0.08 ... N/A 2011-09-02 16:31:18 [www.0] ! Configure failed for Pickles-0.08. See /home/dotcloud/.cpanm/build.log for details. 2011-09-02 16:31:18 [www.0] ! Bailing out the installation for Ytnobody-Hello-0.01. Retry with --prompt or --force. 2011-09-02 16:31:20 [www.0] Reloading nginx configuration: nginx. 2011-09-02 16:31:24 [www.0] uwsgi: stopped 2011-09-02 16:31:24 [www.0] uwsgi: ERROR (abnormal termination) 2011-09-02 16:31:24 [www.0] The build finished successfully 2011-09-02 16:31:24 [api] Deploy finished
調査の仕方というかsshログインの仕方がわかったのでメモ。
$ dotcloud ssh [appname].[servicename]
で、$HOME/.cpanm/build.logを漁ってみたところ、疑問は氷解。
* Module::Install::AuthorTests; * Module::Install::TestTarget;
こいつらが足りなかったので、
$ cpanm Module::Install::AuthorTests Module::Install::TestTarget
としてから再度PicklesベースのアプリをデプロイしてやればOKでした。