Dmitry Smirnov > FCGI-Daemon-0.20111121 > FCGI::Daemon

Download:
FCGI-Daemon-0.20111121.tar.gz

Dependencies

Annotate this POD

CPAN RT

New  1
Open  0
View/Report Bugs
Module Version: 0.20111121   Source  

NAME ^

FCGI::Daemon - Perl-aware Fast CGI daemon for use with nginx web server.

VERSION ^

Version 0.20111121

SYNOPSIS ^

This is executable FastCGI daemon i.e. modulino (it doesn't have any Perl-module functionality).

DESCRIPTION ^

FCGI::Daemon is a small FastCGI server for use as CGI-wrapper for CGI applications.

Like mod_perl FCGI-Daemon stay persistent in memory and accelerate unmodified CGI applications written in Perl.

FCGI-Daemon run CGI scripts with RLIMITs and predefined number of workers.

It was developed as replacement for cgiwrap-fcgi.pl (http://wiki.nginx.org/SimpleCGI) and fcgiwrap (http://nginx.localdomain.pl/wiki/FcgiWrap)

Unlike fcgiwrap, FCGI-Daemon correctly passing STDERR to web server.

FCGI-Daemon check for executable in path and correctly set PATH_INFO environment variable which is crucial for some CGI applications like fossil (http://fossil-scm.org). (Lack of this functionality make cgiwrap-fcgi.pl unsuitable for some scripts.)

FEATURES ^

* drop privileges when run as root * setrlimit for RLIMIT_AS and RLIMIT_CPU * detection of script executable in path (PATH_INFO) * DOing .pl - run CGI scripts in Perl with persistent interpreter (like mod_perl). * detection of memory leaks

USAGE ^

It can be manually invoked as "perl /usr/share/perl5/FCGI/Daemon.pm" or with included SysV init script.

Please make sure that user should have write permissions for sock file.

OPTIONS ^

Options: (default arguments given for convenience)

  -h                              # brief help message
  -w 1                            # number of preforked processes (workers)
  -q 96                           # max queue
  -m 512                          # RLIMIT_AS in MiB (see setrlimit)
  -c 32                           # RLIMIT_CPU in seconds (see setrlimit)
  -e 10240                        # max evals before process restart. 0 disables DOing perl scripts.
  -f \.pl                         # regex to match script file name
                                   # script will be evaluated on match (if -e parameter allows)
                                   # otherwise fallback to CGI exec mode.
                                   # EXAMPLE: -f \.pl|perlcgi/[^/]+\.cgi
  -l 1.3                          # memory leak threshold
  -p /var/run/fcgi-daemon.pid     # write pId (process ID) to given file (only if daemonize)
  -s /var/run/fcgi-daemon.sock    # socket file for Fast CGI communication
  -u www-data                     # user name to become (if run as root)
  -g www-data                     # group name to become (if run as root)
  -d                              # daemonize (run in background)

All options are optional.

-e

By default FCGI::Daemon DOing .pl scripts up to -e times. This is several times faster than invoking Perl for every call of CGI script. This option define how often parent process (worker) should restart. Warning - some scripts may be incompatible with this so disable with "-e0" if necessary.

-f

By default only .pl scripts executed by persistent interpreter. However some Perl scripts may have .cgi extension so to accelerate such scripts a following regex may be used: perlcgi/[^/]+\.cgi|\.pl Where perlcgi stand for path so not all .cgi will be treated as perl but only ones from perlcgi folder (or from folder which name ends with perlcgi). This regex will be anchored to end of file name.

-l

In DOing mode ( i.e. max_evals > 0 ) worker process terminates if upon CGI execution VmSize/VmRSS < leak treshold.

This is helpful for scripts that are leaking memory

PREREQUISITES ^

FCGI FCGI::ProcManager

For Debian GNU/Linux (perhaps the best platform) required moduled provided by the following packages:

libfcgi-perl libfcgi-procmanager-perl

INSTALLATION ^

To install this module, run the following commands:

    perl Makefile.PL
    make
    make test
    make install

COMPATIBILITY ^

Tested only on GNU/Linux systems. NOT tested and not expected to work on Windows.

NOTES ^

Find init scripts and nginx configuration sniplets in examples/

FAQ ^

Why not fcgiwrap?

fcgiwrap doesn't pass STDERR to web server for logging.

What's wrong with cgiwrap-fcgi.pl? http://wiki.nginx.org/SimpleCGI

Well, many things...
- It can't DO perl scripts.
- It is written in a strange way which is hard to read and understand. Frankly, it is not very beautiful.
- It takes no options so you have to modify the code.
- It is incompatible with some CGI applications, notably with fossil due to lack of support for PATH_INFO

BUGS ^

Please report any bugs or feature requests to bug-fcgi-daemon at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=FCGI-Daemon. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

During development of this module a bug in Perl was discovered: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=600376 http://rt.perl.org/rt3//Public/Bug/Display.html?id=78436

SUPPORT ^

After installing, you can find documentation for this module with the perldoc command.

    perldoc FCGI::Daemon

You can also look for information at:

AUTHOR ^

Dmitry Smirnov, <onlyjob at cpan.org>

LICENSE ^

FCGI::Daemon - FastCGI daemon Copyright (C) 2011 Free Software Foundation

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.

syntax highlighting: