Blog

Newmo を dotcloud にうつした記録

http://www.newmo.dotcloud.com/

構成は以下のとおり。

newmo.wwwweb + cron
newmo.dbmysql
newmo.mtasmtp

mysql をつかう際には DBD::mysql への依存を Makefile.PL にかけばすぐにつかえるようになる。create table するときに charset=utf8 を明示的に指定しないと latin1 になるので注意。

smtp の設定を各インスタンスにたいしておこなう場合、service の deploy 時にしか設定はおこなえないので、あとから設定しなおす場合には destroy+deploy するべしとのこと(miyagawaさんじょうほう)

cron の設定は、postinstall script でおこなうのが簡単。まあ以下のようなかんじで処理している。

#!/bin/sh
crontab - < crontab
echo installed crontab

crontab ファイルの中身は以下のようにしている。PATH とかの指定は shell でつかっている設定をうまいことつっこめるようなかんじで運用できたほうがいいなあとはおもう。

PATH=/home/dotcloud/perl5/bin:/opt/perl5/perls/current/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
PERL5LIB=/home/dotcloud/perl5/lib/perl5
PLACK_ENV=deployment

# m h  dom mon dow   command

*/10 *  *   *   *     semaphore --max=1 --file=/tmp/crawler.semaphore -- cronlog  --logfile=/tmp/crawler.cronlog --timestamp perl /home/dotcloud/code/script/cron/crawler.pl

semaphore と cronlog は kaztools の中にはいっているので、それを使用。Makefile.PL 内で以下のように指定している。もうすこし楽に設定できるといいのにな、とおもったりはする。というか CPAN にあがってるとなにもかんがえてすむのに。

can_run('cronlog') or do {
        use File::Temp;
        my $tmp = File::Temp->new(UNLINK => 1);
        system "curl -L --output $tmp http://github.com/kazuho/kaztools/tarball/master";
        system "cpanm -nv $tmp";
};