---
name: "FCGI::Engine::Manager"
section: "3pm"
platform: "linux"
package: "libfcgi-engine-perl"
version: "0.22-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/FCGI::Engine::Manager"
---

# FCGI::Engine::Manager(3pm)

Manage multiple FCGI::Engine instances

## NAME

FCGI::Engine::Manager - Manage multiple FCGI::Engine instances

## SYNOPSIS

```
  #!/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 ...
```

## DESCRIPTION

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.

### Use with Catalyst

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.

### Use with Plack

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.

## EXAMPLE CONFIGURATION

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.

```
  ---
  - 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
```

## BUGS

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.

## AUTHOR

Stevan Little \<stevan@iinteractive.com\>

## COPYRIGHT AND LICENSE

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.
