DotCloudで少し遊んでみました。
以下はDotCloud上でPerlのCGIスクリプトを動かすまでの手順です。
1. DotCloudのフロントエンドをインストールします。
$ sudo easy_install dotcloud
2. owawaという名前のアプリを作ります。アプリというか、(複数のサービスを束ねる)ネームスペースを予約しているだけのような気がします。
$ dotcloud create owawa Created "owawa"
3. owawaアプリにcgitestというサービスを追加して、Perlの実行環境をデプロイします。
$ dotcloud deploy -t perl owawa.cgitest Created "owawa.cgitest".
4. 手元でプログラムを作ります。githubにサンプルを置いておきました。
$ git clone git@github.com:ogawa/dotcloud-cgibin-test.git
肝は2つ。1つはMakefile.PLで下のように依存するモジュールを列挙しておくこと。
PREREQ_PM => {
'Plack' => 0,
'CGI::Compile' => 0,
'CGI::Emulate::PSGI' => 0,
},
もう1つは、app.psgiの書き方ですね。下はPlack::App::CGIBinのサンプルを参考に、DotCloudで動くように若干修正したものです。
#!/usr/bin/env perl
use strict;
use warnings;
use Plack::Builder;
use Plack::App::CGIBin;
my $basedir = '/home/dotcloud/current';
builder {
mount "/" =>
Plack::App::CGIBin->new( root => $basedir, exec_cb => sub { 0 } )->to_app;
};
5. コードをowawa.cgitestサービスにpushします。初回はPlackとかインストールするのでかなり時間がかかります。
$ cd dotcloud-cgibin-test $ dotcloud push owawa.cgitest . .... uwsgi: stopped uwsgi: started Connection to cgitest.owawa.dotcloud.com closed.
6. hello.cgi にアクセスして正しく返答があればOk。
$ curl http://cgitest.owawa.dotcloud.com/hello.cgi Hello, world!