FastCGI 2.4.0 [PSARC/2009/014 FastTrack timeout 01/16/2009]
Nicolas Williams
nw141292 at sac.sfbay.sun.com
Fri Jan 9 19:32:58 PST 2009
Template Version: @(#)sac_nextcase %I% %G% SMI
This information is Copyright 2009 Sun Microsystems
1. Introduction
1.1. Project/Component Working Name:
FastCGI 2.4.0
1.2. Name of Document Author/Supplier:
Author: Amanda Waite
1.3 Date of This Document:
09 January, 2009
4. Technical Description
Including FastCGI 2.4.0 with OpenSolaris
15 December 2008
1. Summary and motivation
1.1. Introduction
This project delivers the FastCGI 2.4.0[1] Application Libraries
into OpenSolaris.
FastCGI is an open variation of the Common Gateway Interface
(CGI) that dramatically reduces the overhead of running CGI-like
programs from a Web Server. It provides high performance without
the limitations of server specific APIs. It is by Web Servers
such as Lighttpd, Nginx and Zeus to communicate with Ruby on
Rails and Python backend processes.
The FastCGI Applications Libraries are the C and C++ libraries
used by FastCGI application developers for creating FastCGI
applications and wrapper programs.
This case seeks Minor Release Binding.
2. Technical issues
2.1. Key objects
/usr/bin/cgi-fcgi
/usr/bin/{ISA}/cgi-fcgi
/usr/lib/libfcgi.so.0.0.0
/usr/lib/libfcgi.so.0
/usr/lib/libfcgi.so
/usr/lib/libfcgi++.so.0.0.0
/usr/lib/libfcgi++.so.0
/usr/lib/libfcgi++.so
/usr/lib/{ISA}/libfcgi.so.0.0.0
/usr/lib/{ISA}/libfcgi.so.0
/usr/lib/{ISA}/libfcgi.so
/usr/lib/{ISA}/libfcgi++.so.0.0.0
/usr/lib/{ISA}/libfcgi++.so.0
/usr/lib/{ISA}/libfcgi++.so
/usr/include/fastcgi/fastcgi.h
/usr/include/fastcgi/fcgi_stdio.h
/usr/include/fastcgi/fcgiapp.h
/usr/include/fastcgi/fcgimisc.h
/usr/include/fastcgi/fcgio.h
/usr/include/fastcgi/fcgios.h
/usr/include/fastcgi/fcgi_config.h
2.2 C++ Libraries
The FastCGI C++ Application library will not be included in the
initial integration as we are dependent on the Apache Std C++
Library. We will aim to add the C++ libraries in time for
availability with OpenSolaris 2009.04 but accept that there is a
risk that the timing may not allow for this. We will raise a CR
to cover the integration of the C++ Libraries.
2.3 Versioning
At any point of time there is only one FastCGI release
available. The current release is 2.4.0.
2.4 Bindings
Many languages provide bindings for FastCGI (popular examples
include Perl, Python, Tcl, Ruby etc). Each of these languages
provide the choice of using either the pure language version or
a version linked with FastCGI library. These (native or pure
bindings for the languages) will have to be installed separately
by the user, or in some cases will be built specifically with
the Libraries that this project delivers.
2.5 Directory Naming and Structure
The proposed directory layout for FastCGI is:
/usr
/bin
/{ISA}
/lib
/{ISA}
/include/fastcgi
/share/man
/man1
/man3
/share/doc
/fastcgi
The detailed directory and file layout for FastCGI is provided
in Addendum 1.
3. FastCGI Documentation.
Man pages for the cgi-fcgi executable and for the documented API
calls will be provided as part of the integration.
A master fastcgi man page will be provided. This will describe
the location of the key components of the integration. As
FastCGI is often referred to as fcgi, this man page will also be
accessible as 'fcgi'. Both will live under section 1m on the
default MANPATH.
The FastCGI documentation will be delivered 'as is' in a
separate package.
4. Packaging and Delivery
We propose to package FastCGI under the following usr packages:
SUNWfcgi - FastCGI 2.4.0
SUNWfcgi-doc - FastCGI 2.4.0 Documentation
5. FastCGI Interfaces
5.1. Interface Stability
FastCGI libraries first became available in 1996, the FastCGI
project released the last major version on 19th January 2003
although development continues for mod_fastcgi at the same site.
Despite this lack of development FastCGI 2.4.0 is seen to be low
risk and "Just works". It is widely used and was integrated with
Sun Java System Web Server 7.
5.2. Imported Interfaces
FastCGI depends on PSARC 2008/549 Apache Standard C++
Library[3], as well as core Solaris libraries (i.e.: libc), but
no others.
5.3. Exported Interfaces
NAME STABILITY NOTES
/usr/bin/cgi-fcgi Uncommitted Executable
/usr/bin/{ISA}/cgi-fcgi Uncommitted Executable
/usr/share/man/man1m/fastcgi.1m Uncommitted Man Page
/usr/lib/libfcgi.so.0.0.0 Uncommitted Shared Library
/usr/lib/libfcgi.so.0 Uncommitted Symbolic Link
/usr/lib/libfcgi.so Uncommitted Symbolic Link
/usr/lib/libfcgi++.so.0.0.0 Uncommitted Shared Library
/usr/lib/libfcgi++.so.0 Uncommitted Symbolic Link
/usr/lib/libfcgi++.so Uncommitted Shared Symbolic Link
/usr/lib/{ISA}/libfcgi.so.0.0.0 Uncommitted Shared Library
/usr/lib/{ISA}/libfcgi.so.0 Uncommitted Symbolic Link
/usr/lib/{ISA}/libfcgi.so Uncommitted Symbolic Link
/usr/lib/{ISA}/libfcgi++.so.0.0.0 Uncommitted Shared Library
/usr/lib/{ISA}/libfcgi++.so.0 Uncommitted Symbolic Link
/usr/lib/{ISA}/libfcgi++.so Uncommitted Symbolic Link
6. References
[1] http://www.fastcgi.com
[2] http://www.fastcgi.com/devkit/doc
[3] http://www.opensolaris.org/os/community/arc/caselog/2008/549/
================================================================
Addendum 1: FastCGI Integration Directory and File Structure.
1. The following files are included in the FastCGI integration:
/usr/share/man/man1m
/fastcgi.1m
/fcgi.1m -> fastcgi.1m
/usr
/bin
/cgi-fcgi
/bin/{ISA}
/cgi-fcgi
/include/fastcgi
/fastcgi.h
/fcgi_stdio.h
/fcgiapp.h
/fcgimisc.h
/fcgio.h
/fcgios.h
/fcgi_config.h
/lib
/libfcgi.so.0.0.0
/libfcgi.so.0
/libfcgi.so
/libfcgi++.so.0.0.0
/libfcgi++.so.0
/libfcgi++.so
/lib/{ISA}
/libfcgi.so.0.0.0
/libfcgi.so.0
/libfcgi.so
/libfcgi++.so.0.0.0
/libfcgi++.so.0
/libfcgi++.so
/share
/man
/man1m
/fastcgi.1m
/man1
/cgi-fcgi.1
/man3
/FCGI_Accept.3
/FCGI_Finish.3
/FCGI_SetExitStatus.3
/FCGI_StartFilterData.3
3/doc/fastcgi
/<various documentation files for FastCGI>
6. Resources and Schedule
6.4. Steering Committee requested information
6.4.1. Consolidation C-team Name:
SFW
6.5. ARC review type: FastTrack
6.6. ARC Exposure: open
More information about the opensolaris-arc
mailing list