RSS Git Download  Clone
Raw Blame History
#!/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