Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

runapp(3pm) [debian man page]

RunApp(3pm)						User Contributed Perl Documentation					       RunApp(3pm)

NAME
RunApp - A generic module to run web-applications SYNOPSIS
use RunApp '-chdir'; use RunApp; use RunApp::Apache; my $cmd = shift || 'development'; my $config = { var => 'value', app_apache => { var_for_apache => 'value'} }; RunApp->new (app_apache => RunApp::Apache->new (root => catfile (cwd, $_), httpd => '/path/to/httpd'), my_daemon => RunApp::Control::AppControl->new (binary => '/path/to/daemon', args => ['--daemon'], pidfile => '/path/to/daemon.pid', ) )->$cmd ($config); DESCRIPTION
"RunApp" streamlines the process for configuring applications that requires one or more web servers and/or other daemons, during develop- ment or deployment. It builds the config files required by the services from the $config hash, such as apache's httpd.conf. OPTIONS
use RunApp '-chdir'; use RunApp qw(-chdir ..); This will cause the your script to "chdir" to the base directory. If it's a symbolic link it will be resolved and you will be in the directory of where the original script is. The "lib" directory will be added into @INC, and you can use the modules in that path. It also takes an optional relative path if want the script to chdir to somewhere else. This makes it possible for symlinking the your runapp script into system's rc.d startup directory. CONSTRUCTOR
new (@services) @services is actually an hash, with keys being the name of the service, and values being "RunApp::Control" objects. Use an array instead of a hash here to retain the order of dispatching. The names are used to pick config from the hash, which will be flatten into top level of the config hash, when running "build" for the each service. METHODS
$self->development ($conf) Runs "build" and "start", and then waits for SIGINT to <stop> the servers. AUTOLOAD
All other methods are dispatched to the "RunApp::Control" objects in the order called in CONSTRUCTOR. Note that this is done with RunApp::Control dispatching to the "dispatch" method. SEE ALSO
RunApp::Apache, RunApp::Control::AppControl, App::Control AUTHORS
Chia-liang Kao <clkao@clkao.org> Refactored from works by Leon Brocard <acme@astray.com> and Tom Insam <tinsam@fotango.com>. COPYRIGHT
Copyright (C) 2002-5, Fotango Ltd. This module is free software; you can redistribute it or modify it under the same terms as Perl itself. perl v5.8.8 2008-01-09 RunApp(3pm)

Check Out this Related Man Page

Control(3pm)						User Contributed Perl Documentation					      Control(3pm)

NAME
App::Control - Perl module for apachectl style control of another script or executable SYNOPSIS
use App::Control; my $ctl = App::Control->new( EXEC => $exec, ARGS => @args, PIDFILE => $pidfile, SLEEP => 1, VERBOSE => 1, ); my $pid = $ctl->pid; if ( $ctl->running ) { print "$pid is running "; } else { print "$pid is not running "; } # or alternatively ... print $ctl->status; $ctl->start; # or alternatively ... $ctl->cmd( 'start' ); $ctl->stop; $ctl->hup; $ctl->restart; DESCRIPTION
App::Control is a simple module to replicate the kind of functionality you get with apachectl to control apache, but for any script or exe- cutable. There is a very simple OO interface, where the constructor is used to specify the executable, command line arguments, and pidfile, and various methods (start, stop, etc.) are used to control the executable in the obvious way. The module is intended to be used in a simple wrapper control script. Currently the module does a fork and exec to start the executable, and sets the signal handler for SIGCHLD to 'IGNORE' to avoid zombie processes. CONSTRUCTOR
The constructor is called with a hash of options in the standard way. The options are as follows: EXEC Path to the executable to be controlled. This option is REQUIRED. ARGS Command line arguments for the executable. This option is OPTIONAL, but if set, should be an ARRAY reference. PIDFILE Path to the pidfile for the executable. This need not exists, but the constructor will die if it thinks it can't create it. If the path where the pidfile lives doesn't exist the constructor will try to create it. This option is REQUIRED. IGNOREFILE The ignore file allows you to temporarily disable the control functionality. Suppose you have a chkdaemon / crontab entry that restarts a service; specifying an IGNOREFILE means that you can disable this wihtout having to edit the relevant config files. CREATE_PIDFILE By default, App::Control depends on the application to manage the pid file. This is consistent will analogous utilities (apachectl, chk- daemon, etc.), but if you would like App::Control to create and remove pid files for you, then set this option to a true value. SLEEP Number of seconds to sleep before checking that the process has been started. If the start fails, the control script will loop with a SLEEP delay per iteration until it has (see <"LOOP">). Default is 1 second. head2 LOOP Number of times to loop before giving up on starting the process. VERBOSE If set to a true value, the module will output verbose messages to STDERR. METHODS
start Start the executable specified in the constructor. This method waits until it is convinced that the executable has started. It then writes the new pid to the pidfile. stop Stop the executable specified in the constructor. It assumes that the pid listed in the pidfile specified in the constructor is the process to kill. This method waits until it is convinced that the executable has stopped. hup Send a SIGHUP to the executable. restart Basically; stop if running, and then start. status Returns a status message along the lines of "$exec ($pid) is / is not running". cmd All of the above methods can also be invoked using cmd; i.e.: $ctl->start; is equivilent to: $ctl->cmd( 'start' ); give or take a call to AUTOLOAD! pid Returns the current value of the pid in the pidfile. running returns true if the pid in the pidfile is running. AUTHOR
Ave Wrigley <Ave.Wrigley@itn.co.uk> COPYRIGHT
Copyright (c) 2001 Ave Wrigley. All rights reserved. This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself. perl v5.8.8 2003-08-27 Control(3pm)
Man Page