Blame README-FCGID

Packit Service f9aed3
Unix Build Instructions
Packit Service f9aed3
-----------------------
Packit Service f9aed3
Packit Service f9aed3
To build and install as a DSO outside of the httpd source
Packit Service f9aed3
build, from the fcgid source root directory, simply;
Packit Service f9aed3
Packit Service f9aed3
    ./configure.apxs
Packit Service f9aed3
    make
Packit Service f9aed3
    make install
Packit Service f9aed3
Packit Service f9aed3
If apxs is not in your path, or you are building to a different
Packit Service f9aed3
httpd installation, or your distribution has an alternate script
Packit Service f9aed3
name for apxs (e.g. apxs2), then either set the APXS environment
Packit Service f9aed3
variable, or use the syntax;
Packit Service f9aed3
Packit Service f9aed3
    APXS=/path/to/bin/apxs ./configure.apxs
Packit Service f9aed3
Packit Service f9aed3
so the desired configuration is used.
Packit Service f9aed3
Packit Service f9aed3
To build static, or as a DSO but within the same build as httpd,
Packit Service f9aed3
copy the entire fcgid source directory tree on top of your existing 
Packit Service f9aed3
httpd source tree, and from the httpd source root directory
Packit Service f9aed3
Packit Service f9aed3
    ./buildconf  (to pick up fcgid)
Packit Service f9aed3
    ./configure --enable-fcgid {your usual options}
Packit Service f9aed3
Packit Service f9aed3
and proceed as usual.
Packit Service f9aed3
Packit Service f9aed3
Packit Service f9aed3
Win32 Build Instructions
Packit Service f9aed3
------------------------
Packit Service f9aed3
Packit Service f9aed3
1. Win32 build based on Visual Studio
Packit Service f9aed3
Packit Service f9aed3
The windows packages prior to 2.2.7 (or 2.0.62) left out the file
Packit Service f9aed3
include\mod_log_config.h, just copy these from the source tree
Packit Service f9aed3
or you can export them from subversion, just change to your
Packit Service f9aed3
installed Apache 2.2 (or 2.0) include subdirectory and...
Packit Service f9aed3
Packit Service f9aed3
  svn export http://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x/modules/loggers/mod_log_config.h
Packit Service f9aed3
Packit Service f9aed3
(for your 2.0 installation, replace 2.2.x with 2.0.x in the
Packit Service f9aed3
command above).  You should be ready to compile the project.
Packit Service f9aed3
Packit Service f9aed3
On windows, before building for httpd-2.0, you must adjust the
Packit Service f9aed3
two apr 1.x specific lines in modules\fcgid\mod_fcgid.dsp which begin
Packit Service f9aed3
Packit Service f9aed3
    # ADD LINK32 libapr-1.lib libaprutil-1.lib ...
Packit Service f9aed3
Packit Service f9aed3
to start with the apr 0.9 equivilants for httpd-2.0,
Packit Service f9aed3
Packit Service f9aed3
    # ADD LINK32 libapr.lib libaprutil.lib ...
Packit Service f9aed3
Packit Service f9aed3
If using httpd development version 2.3 plus APR 2.0, replace both 
Packit Service f9aed3
of these entries with the single (combined) entry;
Packit Service f9aed3
Packit Service f9aed3
    # ADD LINK32 libapr-2.lib ...
Packit Service f9aed3
Packit Service f9aed3
To build on windows out-of-tree as a DSO, simply
Packit Service f9aed3
Packit Service f9aed3
    set APACHE2_HOME=c:\path\to\Apache2.2
Packit Service f9aed3
Packit Service f9aed3
and then, for Visual Studio 6.0 (98)...
Packit Service f9aed3
Packit Service f9aed3
    msdev /useenv mod_fcgid.dsw
Packit Service f9aed3
Packit Service f9aed3
or for Visual Studio .NET (2002) and later ...
Packit Service f9aed3
Packit Service f9aed3
    devenv /useenv mod_fcgid.dsw
Packit Service f9aed3
Packit Service f9aed3
The later command is needed on Visual Studio .NET/2002 and later, 
Packit Service f9aed3
and converts mod_fcgid.dsw to mod_fcgid.sln.  So after converting once,
Packit Service f9aed3
use the newly converted solution instead...
Packit Service f9aed3
Packit Service f9aed3
    devenv /useenv mod_fcgid.sln
Packit Service f9aed3
Packit Service f9aed3
On windows you can overlay mod_fcgid source files into the httpd source
Packit Service f9aed3
file tree, and make the following changes for an in-tree build;
Packit Service f9aed3
Packit Service f9aed3
 * Manually add the project mod_fcgid.dsp to the Apache.dsw workspace.
Packit Service f9aed3
 * Ensure the BuildBin project includes the mod_fcgid project dependency.
Packit Service f9aed3
 * Add mod_fcgid project dependencies of libhttpd, libapr and libaprutil.
Packit Service f9aed3
 * Remove /D "FCGID_APXS_BUILD" from the # ADD CPP lines of
Packit Service f9aed3
   modules\fcgid\mod_fcgid.dsp.
Packit Service f9aed3
 * Replace /I "$(APACHE2_HOME)/include" with /I "../../modules/loggers" 
Packit Service f9aed3
   for both # ADD CPP lines of modules\fcgid\mod_fcgid.dsp.
Packit Service f9aed3
 * Remove the libraries libapr[-1].lib libaprutil[-1].lib libhttpd.lib 
Packit Service f9aed3
   and the /libpath:"$(APACHE2_HOME)\lib" flag from the # ADD LINK32 
Packit Service f9aed3
   lines of modules\fcgid\mod_fcgid.dsp.
Packit Service f9aed3
Packit Service f9aed3
Note that mod_fcgid.so needs to be added to the module installation 
Packit Service f9aed3
lines in Makefile.win, or you must manually copy the .so module from 
Packit Service f9aed3
modules\fcgid\Release after compiling.
Packit Service f9aed3
Packit Service f9aed3
2. Win32 build based on cmake:
Packit Service f9aed3
Packit Service f9aed3
Note: This support is experimental and may not build mod_fcgid in a
Packit Service f9aed3
      manner compatible with the existing Windows build support.  The
Packit Service f9aed3
      build interfaces may change as feedback is received and bugs are
Packit Service f9aed3
      resolved.  Currently a .conf file is not created.
Packit Service f9aed3
Packit Service f9aed3
Install httpd and APR to a common prefix, and point CMAKE_INSTALL_PREFIX
Packit Service f9aed3
to that prefix when configuring mod_fcgid.
Packit Service f9aed3
Packit Service f9aed3
Example using the "NMake Makefiles" generator from a Visual Studio command
Packit Service f9aed3
prompt:
Packit Service f9aed3
Packit Service f9aed3
  cd some-build-directory
Packit Service f9aed3
  cmake -G "NMake Makefiles" ^
Packit Service f9aed3
        -DCMAKE_INSTALL_PREFIX=C:\Apache246 ^
Packit Service f9aed3
        -DCMAKE_BUILD_TYPE=RelWithDebInfo ^
Packit Service f9aed3
        C:\path\to\fcgid-sources\modules\fcgid
Packit Service f9aed3
  nmake && nmake install
Packit Service f9aed3
Packit Service f9aed3
The last argument to cmake in the example is the directory "modules\fcgid"
Packit Service f9aed3
within your svn checkout or tarball/zip extract of mod_fcgid.
Packit Service f9aed3
Packit Service f9aed3
Add -DINSTALL_PDB=OFF to the cmake invocation to leave mod_fcgid.pdb (if
Packit Service f9aed3
generated) in the build directory.
Packit Service f9aed3
Packit Service f9aed3
Add the following LoadModule directive to your configuration:
Packit Service f9aed3
Packit Service f9aed3
  LoadModule fcgid_module modules/mod_fcgid.so
Packit Service f9aed3
Packit Service f9aed3
Documentation Build
Packit Service f9aed3
-------------------
Packit Service f9aed3
Packit Service f9aed3
To regenerate the html.en documentation, here again it's as simple
Packit Service f9aed3
as copying the content docs/ into an httpd/docs/ tree and regenerating
Packit Service f9aed3
httpd's documentation.  However, it's also possible you are generating
Packit Service f9aed3
a local copy for reference in mod_fcgid's tree, in that case you must
Packit Service f9aed3
have a copy of the httpd docs/manual/style.  For example;
Packit Service f9aed3
Packit Service f9aed3
    cd docs/manual
Packit Service f9aed3
    svn co http://svn.apache.org/repos/asf/httpd/httpd/branches/2.2.x/docs/manual/style
Packit Service f9aed3
Packit Service f9aed3
In either case;
Packit Service f9aed3
Packit Service f9aed3
    cd docs/manual
Packit Service f9aed3
    svn co http://svn.apache.org/repos/asf/httpd/docs-build/trunk build
Packit Service f9aed3
    cd build
Packit Service f9aed3
Packit Service f9aed3
and finally;
Packit Service f9aed3
Packit Service f9aed3
    ./build.sh all
Packit Service f9aed3
Packit Service f9aed3
or on windows...
Packit Service f9aed3
Packit Service f9aed3
    build.bat all
Packit Service f9aed3
Packit Service f9aed3
To make this simpler on unix, after invoking ./configure.apxs in the 
Packit Service f9aed3
top level directory, you can simply;
Packit Service f9aed3
Packit Service f9aed3
    make generate-docs
Packit Service f9aed3
Packit Service f9aed3
which will fetch up those style and build directories (for httpd-2.2)
Packit Service f9aed3
and generate the docs for you.  After using make and make install, you
Packit Service f9aed3
can even merge the directives for the installed manual using this target;  
Packit Service f9aed3
Packit Service f9aed3
    make manualdir=/path/to/httpd/manual generate-docs
Packit Service f9aed3
Packit Service f9aed3
The same rules about an installed, locatable JAVA_HOME apply to building
Packit Service f9aed3
mod_fcgid docs as apply to building the httpd manual.
Packit Service f9aed3
Packit Service f9aed3
The advantage to building in-tree within httpd is that you gain the complete
Packit Service f9aed3
directive cross references applicable to all httpd and mod_fcgid directives,
Packit Service f9aed3
before installing the httpd\manual files.
Packit Service f9aed3
Packit Service f9aed3
Packit Service f9aed3
Incompatible configuration changes
Packit Service f9aed3
----------------------------------
Packit Service f9aed3
Some changes have been made in the ASF release of mod_fcgid which can affect
Packit Service f9aed3
existing configurations:
Packit Service f9aed3
Packit Service f9aed3
i.   All directives have been renamed in order to use a common prefix "Fcgid".
Packit Service f9aed3
     Underscores in directive names have been eliminated in favor of
Packit Service f9aed3
     CamelCase. The old directive names will still work but are deprecated.
Packit Service f9aed3
     To fix your configuration you can use the sed script build/fixconf.sed.
Packit Service f9aed3
     A table with old and new directive names is included in CHANGES-FCGID.
Packit Service f9aed3
Packit Service f9aed3
ii.  Some directives which could be placed inside <VirtualHost > but were
Packit Service f9aed3
     ignored before now result in configuration errors.  As before, these 
Packit Service f9aed3
     directives must be set at global scope to have the desired effect.
Packit Service f9aed3
     The directives are FcgidBusyScanInterval, FcgidBusyTimeout,
Packit Service f9aed3
     FcgidMaxProcessesPerClass, FcgidDefaultMinProcessCount,
Packit Service f9aed3
     FcgidErrorScanInterval, FcgidIdleScanInterval, FcgidIdleTimeout,
Packit Service f9aed3
     FcgidMaxProcesses, FcgidFixPathinfo, FcgidProcessLifetime,
Packit Service f9aed3
     FcgidProcessTableFile, FcgidIPCDir, FcgidSpawnScore,
Packit Service f9aed3
     FcgidSpawnScoreUpLimit, FcgidTerminationScore, FcgidTimeScore, and 
Packit Service f9aed3
     FcgidZombieScanInterval.
Packit Service f9aed3
Packit Service f9aed3
iii. Some directives which could be placed inside <VirtualHost > but were
Packit Service f9aed3
     ignored before are now respected.  These include FcgidIdleTimeout,
Packit Service f9aed3
     FcgidProcessLifeTime, and others.  (Consult CHANGES-FCGID for the complete
Packit Service f9aed3
     list.)
Packit Service f9aed3
Packit Service f9aed3
iv.  Some directives which can optionally be placed inside <VirtualHost >
Packit Service f9aed3
     were not inherited as expected in older releases.  This has been
Packit Service f9aed3
     corrected, and behavior will change for some configurations.  The 
Packit Service f9aed3
     affected directives are FcgidIOTimeout, FcgidConnectTimeout,
Packit Service f9aed3
     FcgidMaxRequestInMem, FcgidMaxRequestLen, FcgidMaxRequestsPerProcess,
Packit Service f9aed3
     and FcgidOutputBufferSize.
Packit Service f9aed3
Packit Service f9aed3
v.   Some directives which can be placed inside <Directory >, <Location >,
Packit Service f9aed3
     etc. were not inherited as expected in older releases.  This has been
Packit Service f9aed3
     corrected, and behavior will change for some configurations.  The affected
Packit Service f9aed3
     directives are FcgidAccessChecker, FcgidAccessCheckerAuthoritative,
Packit Service f9aed3
     FcgidAuthenticator, FcgidAuthenticatorAuthoritative, FcgidAuthorizer,
Packit Service f9aed3
     FcgidAuthorizerAuthoritative, and FcgidWrapper.
Packit Service f9aed3
Packit Service f9aed3
Acknowledgements
Packit Service f9aed3
----------------
Packit Service f9aed3
Portions of this software were originally developed by
Packit Service f9aed3
Ryan Pan (Pan Qingfeng) <pqf@mailtech.cn>.
Packit Service f9aed3
Packit Service f9aed3
This software implements portions of the FastCGI specification
Packit Service f9aed3
as defined by Open Market, Inc.  The specification is available from
Packit Service f9aed3
  http://www.fastcgi.com/devkit/doc/fcgi-spec.html