FCGI::Engine::Manager - Manage multiple FCGI::Engine instances
#!/usr/bin/perl my $m = FCGI::Engine::Manager->new( conf => 'conf/my_app_conf.yml' ); my ($command, $server_name) = @ARGV; $m->start($server_name) if $command eq 'start'; $m->stop($server_name) if $command eq 'stop'; $m->restart($server_name) if $command eq 'restart'; $m->graceful($server_name) if $command eq 'graceful'; print $m->status($server_name) if $command eq 'status'; # on the command line perl all_my_fcgi_backends.pl start perl all_my_fcgi_backends.pl stop perl all_my_fcgi_backends.pl restart foo.server # etc ...
This module handles multiple FCGI::Engine instances for you, it can start, stop and provide basic status info. It is configurable using Config::Any, but only really the YAML format has been tested.
Since FCGI::Engine is pretty much compatible with Catalyst::Engine::FastCGI, this module can also be used to manage your Catalyst::Engine::FastCGI based apps as well as your FCGI::Engine based apps.
Plack support is provided via the FCGI::Engine::Manager::Server::Plackup module. All that is required is setting the server_class parameter in the configuarion and it will Just Work.
server_class
Here is an example configuration in YAML, it should be noted that the options for each server are basically the constructor params to FCGI::Engine::Manager::Server and are passed verbatim to it. This means that if you subclass FCGI::Engine::Manager::Server and set the server_class: option appropriately, it should pass any new options you added to your subclass automatically. The third server in the list shows exactly how this is used with a Plack application.
server_class:
--- - name: "foo.server" server_class: "FCGI::Engine::Manager::Server" scriptname: "t/scripts/foo.pl" nproc: 1 pidfile: "/tmp/foo.pid" socket: "/tmp/foo.socket" additional_args: [ "-I", "lib/" ] - name: "bar.server" scriptname: "t/scripts/bar.pl" nproc: 1 pidfile: "/tmp/bar.pid" socket: "/tmp/bar.socket" - name: "baz.server" server_class: "FCGI::Engine::Manager::Server::Plackup" scriptname: "t/scripts/baz.psgi" # the .psgi file nproc: 1 pidfile: "/tmp/baz.pid" socket: "/tmp/baz.socket" additional_args: [ "-e", "production" ] # plackup specific option
All complex software has bugs lurking in it, and this module is no exception. If you find a bug please either email me, or add the bug to cpan-RT.
Stevan Little <stevan@iinteractive.com>
Copyright 2007-2010 by Infinity Interactive, Inc.
http://www.iinteractive.com
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
To install FCGI::Engine, copy and paste the appropriate command in to your terminal.
cpanm
cpanm FCGI::Engine
CPAN shell
perl -MCPAN -e shell install FCGI::Engine
For more information on module installation, please visit the detailed CPAN module installation guide.