#!/usr/bin/env perl
# starts the plackup -s Startman -a NGS/bin/app.pl process
# init.d script needs PERL5LIB env var set so plackup can find Plack::Runner
use warnings;
use strict;
use lib '/home/raj/perl5/lib/perl5';
use Daemon::Control;
# use Plack::Runner; # only needed if using direct in program sub
use Data::Dumper;
use FindBin qw($Bin); # load AFTER local::lib Carp or FindBin loads system Carp
my $GROUP = $ENV{APACHE_GROUP} || die 'no APACHE_GROUP env var set'; # warn $GROUP;
my $USER = $ENV{APACHE_USER} || die 'no APACHE_USER env var set'; # warn $USER;
my $run_dir = '/var/run/requestform'; # location of pid file & stderr
my $app_home = '/home/raj/apps/RequestForm';
my $program = '/home/raj/perl5/bin/plackup';
my $pid_file = $run_dir . '/rf.pid';
my $stdout = $app_home . '/logs/deployment.log';
my $stderr = $stdout; # combined
my $workers = 2;
my $port = 5002;
my $name = 'RequestForm';
my $app = 'app.pl';
my @program_args = (
-s => 'Starman',
-a => "$app_home/bin/$app",
-p => $port,
-E => 'deployment', # tells dancer app which env & logs to use
'--workers' => $workers,
);
my %args = (
name => $name,
# lsb_start => '$syslog $remote_fs',
# lsb_stop => '$syslog',
lsb_sdesc => $name,
lsb_desc => $name,
path => $0, # this script
program => $program,
# program => \&program, # uses Plack::Runner direct
program_args => \@program_args,
pid_file => $pid_file,
stderr_file => $stderr,
stdout_file => $stdout,
user => $USER,
group => $GROUP,
fork => 2,
); # warn Dumper \%args;
Daemon::Control->new(\%args)->run;
sub program {
my $runner = Plack::Runner->new;
$runner->parse_options(@program_args);
$runner->run;
}
__END__
#!/bin/sh
### BEGIN INIT INFO
# Provides: RequestForm
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: NGS daemon
# Description: Controls the requestform_daemon script
### END INIT INFO
export APACHE_USER=www-data
export APACHE_GROUP=www-data
# so plackup can find Plack::Runner:
export PERL5LIB=/home/raj/perl5/lib/perl5
SCRIPT_DIR=/home/raj/apps/RequestForm/bin
SCRIPT=rf.pl
if [ -x $SCRIPT_DIR/$SCRIPT ];
then
/usr/bin/perl $SCRIPT_DIR/$SCRIPT $@
else
echo "Required program $SCRIPT_DIR/$SCRIPT not found!"
exit 1;
fi