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.conf
でenvironment
の指定ができるらしい。
environment=PERL_CARTON_CPANFILE=cpanfileのパス
を追記し、再起動した所無事に起動した。
supervisorctl status starman RUNNING pid 11240, uptime 0:00:03