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