DC4

Cartonで入れたモジュールをSupervisorで起動する方法

xbuildに付属するCartonでインストールしたStarmanをSupervisorで起動しようとしてハマった。

まずは以下の設定で実施 /etc/supervisord.conf

[program:starman]
command=/home/ユーザ名/xbuild/local/perl-5.18.2/bin/carton exec starman 
...省略

# supervisorctl status
starman        FATAL      Exited too quickly (process log may have details)

動かない。

試しにcommandを直接打つと以下のエラーが出る。

# /home/ユーザ名/xbuild/local/perl-5.18.2/bin/carton exec starman 
Can't locate cpanfile: (cpanfile)

Cartonのソースを見てみると、lib/Carton/Environment.pm

my $cpanfile = $self->locate_cpanfile($cpanfile_path || $ENV{PERL_CARTON_CPANFILE});

との記載があった。 どうやら$ENV{PERL_CARTON_CPANFILE}にcpanfileのパスを設定すると回避できそうだ。

環境変数の設定をSupervisor側でどうやるのか調べると、 /etc/supervisord.confenvironmentの指定ができるらしい。

environment=PERL_CARTON_CPANFILE=cpanfileのパス

を追記し、再起動した所無事に起動した。

supervisorctl status
starman        RUNNING    pid 11240, uptime 0:00:03