summaryrefslogtreecommitdiffstats
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--README110
-rw-r--r--README.CHANGES19
-rw-r--r--README.cmake329
-rw-r--r--README.platforms112
4 files changed, 570 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..f1f6d78
--- /dev/null
+++ b/README
@@ -0,0 +1,110 @@
+
+ Apache HTTP Server
+
+ What is it?
+ -----------
+
+ The Apache HTTP Server is a powerful and flexible HTTP/1.1 compliant
+ web server. Originally designed as a replacement for the NCSA HTTP
+ Server, it has grown to be the most popular web server on the
+ Internet. As a project of the Apache Software Foundation, the
+ developers aim to collaboratively develop and maintain a robust,
+ commercial-grade, standards-based server with freely available
+ source code.
+
+ The Latest Version
+ ------------------
+
+ Details of the latest version can be found on the Apache HTTP
+ server project page under https://httpd.apache.org/.
+
+ Documentation
+ -------------
+
+ The documentation available as of the date of this release is
+ included in HTML format in the docs/manual/ directory. The most
+ up-to-date documentation can be found at
+ https://httpd.apache.org/docs/2.4/.
+
+ Installation
+ ------------
+
+ Please see the file called INSTALL. Platform specific notes can be
+ found in README.platforms.
+
+ Licensing
+ ---------
+
+ Please see the file called LICENSE.
+
+ Cryptographic Software Notice
+ -----------------------------
+
+ This distribution may include software that has been designed for use
+ with cryptographic software. The country in which you currently reside
+ may have restrictions on the import, possession, use, and/or re-export
+ to another country, of encryption software. BEFORE using any encryption
+ software, please check your country's laws, regulations and policies
+ concerning the import, possession, or use, and re-export of encryption
+ software, to see if this is permitted. See <https://www.wassenaar.org/>
+ for more information.
+
+ The U.S. Government Department of Commerce, Bureau of Industry and
+ Security (BIS), has classified this software as Export Commodity
+ Control Number (ECCN) 5D002.C.1, which includes information security
+ software using or performing cryptographic functions with asymmetric
+ algorithms. The form and manner of this Apache Software Foundation
+ distribution makes it eligible for export under the License Exception
+ ENC Technology Software Unrestricted (TSU) exception (see the BIS
+ Export Administration Regulations, Section 740.13) for both object
+ code and source code.
+
+ The following provides more details on the included files that
+ may be subject to export controls on cryptographic software:
+
+ Apache httpd 2.0 and later versions include the mod_ssl module under
+ modules/ssl/
+ for configuring and listening to connections over SSL encrypted
+ network sockets by performing calls to a general-purpose encryption
+ library, such as OpenSSL or the operating system's platform-specific
+ SSL facilities.
+
+ In addition, some versions of apr-util provide an abstract interface
+ for symmetrical cryptographic functions that make use of a
+ general-purpose encryption library, such as OpenSSL, NSS, or the
+ operating system's platform-specific facilities. This interface is
+ known as the apr_crypto interface, with implementation beneath the
+ /crypto directory. The apr_crypto interface is used by the
+ mod_session_crypto module available under
+ modules/session
+ for optional encryption of session information.
+
+ Some object code distributions of Apache httpd, indicated with the
+ word "crypto" in the package name, may include object code for the
+ OpenSSL encryption library as distributed in open source form from
+ <https://www.openssl.org/source/>.
+
+ The above files are optional and may be removed if the cryptographic
+ functionality is not desired or needs to be excluded from redistribution.
+ Distribution packages of Apache httpd that include the word "nossl"
+ in the package name have been created without the above files and are
+ therefore not subject to this notice.
+
+ Contacts
+ --------
+
+ o If you want to be informed about new code releases, bug fixes,
+ security fixes, general news and information about the Apache server
+ subscribe to the apache-announce mailing list as described under
+ <https://httpd.apache.org/lists.html#http-announce>
+
+ o If you want freely available support for running Apache please see the
+ resources at <https://httpd.apache.org/support.html>
+
+ o If you have a concrete bug report for Apache please see the instructions
+ for bug reporting at <https://httpd.apache.org/bug_report.html>
+
+ o If you want to participate in actively developing Apache please
+ subscribe to the `dev@httpd.apache.org' mailing list as described at
+ <https://httpd.apache.org/lists.html#http-dev>
+
diff --git a/README.CHANGES b/README.CHANGES
new file mode 100644
index 0000000..a1d2637
--- /dev/null
+++ b/README.CHANGES
@@ -0,0 +1,19 @@
+Changes can be documented in two ways now: Either by directly editing the
+CHANGES file like it was done until now or by storing each entry for the
+CHANGES file correctly formated in a separate file in the changes-entries
+directory.
+
+The benefit of the single file per change approach is that it eases backporting
+the CHANGES entry to a stable branch as it avoids the frequent merge conflicts
+as changes are merged in different orders or not at all in the stable branch.
+
+In order to keep the current CHANGES file for the users as is there is a new
+make target called 'update-changes'. It merges all change files in the
+changes-entries directory to the top of the CHANGES file and removes them
+afterwards.
+
+This make target can be seen in a similar way as the scripts to update the
+documentation files from its xml sources. It can be executed immediately
+after the new file in the changes-entries directory has been created / merged
+and committed or it can executed later. It should be executed at least before
+a release gets tagged.
diff --git a/README.cmake b/README.cmake
new file mode 100644
index 0000000..60fcc42
--- /dev/null
+++ b/README.cmake
@@ -0,0 +1,329 @@
+Experimental cmake-based build support for Apache httpd on Microsoft Windows
+
+Status
+------
+
+This build support is currently intended only for Microsoft Windows.
+
+This build support is experimental. Specifically,
+
+* It does not support all features of Apache httpd.
+* Some components may not be built correctly and/or in a manner
+ compatible with the previous Windows build support.
+* Build interfaces, such as the mechanisms which are used to enable
+ optional functionality or specify prerequisites, may change from
+ release to release as feedback is received from users and bugs and
+ limitations are resolved.
+
+Important: Refer to the "Known Bugs and Limitations" section for further
+ information.
+
+ It is beyond the scope of this document to document or explain
+ how to utilize the various cmake features, such as different
+ build backends or provisions for finding support libraries.
+
+ Please refer to the cmake documentation for additional information
+ that applies to building any project with cmake.
+
+Prerequisites
+-------------
+
+The following tools must be in PATH:
+
+* cmake, version 2.8 or later
+ cmake version 3.1.3 or later is required to work with current OpenSSL
+ releases. (OpenSSL is an optional prerequisite of httpd.)
+* Perl
+* If the WITH_MODULES feature is used: awk
+* If using a command-line compiler: compiler and linker and related tools
+ (Refer to the cmake documentation for more information.)
+
+The following support libraries are mandatory:
+
+* APR, built with cmake
+ + Either APR 2.0-dev (trunk) or APR 1.5.x and APR-Util 1.5.x.
+ + When building APR (but not APR-Util), specify the build option
+ APR_INSTALL_PRIVATE_H so that non-standard files required for building
+ Apache httpd are installed.
+ + Additional APR settings affect httpd but are not mandatory, such as
+ APR_HAVE_IPV6.
+* PCRE
+
+Certain optional features of APR 2.0-dev (trunk) or APR-Util 1.5.x
+allow some optional features of httpd to be enabled. For example,
+APU_HAVE_CRYPTO is required for mod_session_crypto.
+
+Additional support libraries allow some optional features of httpd to be
+enabled:
+
+* libxml2 (e.g., mod_proxy_html)
+* lua 5.1 (mod_lua)
+* nghttp2 (mod_http2)
+* openssl (mod_ssl and https support for ab)
+* zlib (mod_deflate)
+
+OpenSSL
+-------
+
+If you have a binary install of OpenSSL in a well-known directory (e.g.,
+%HOME%\OpenSSL-Win64) and you wish to build httpd against a different
+install of OpenSSL, the cmake build may unexpectedly select OpenSSL
+libraries in the well-known directory even if the expected include files
+are used. Check the cmake output from your httpd build to confirm that
+the expected OpenSSL libraries and include files are used.
+
+The cmake FindOpenSSL module searches for OpenSSL libraries in a "VC"
+subdirectory of the OpenSSL install with filenames that indicate the build
+type (e.g., "<PREFIX>/lib/VC/ssleay32MD.lib"); defining CMAKE_PREFIX_PATH
+or OPENSSL_ROOT_DIR or even OPENSSL_LIBRARIES does not circumvent finding
+these libraries.
+
+To work around this issue, rename the well-known OpenSSL directory while
+building httpd. Let us know if you find a better solution.
+
+nghttp2
+-------
+
+This is required for mod_http2.
+
+cmake-based build support for nghttp2 for Windows can be found at
+https://github.com/trawick/nghttp2-minimal-cmake. That easily fits into
+a build system that already uses cmake for httpd, apr, and perhaps other
+packages. A dynamic build of nghttp2 using its normal Windows build
+system should also be usable by nghttp2.
+
+How to build
+------------
+
+1. cd to a clean directory for building (i.e., don't build in your
+ source tree)
+
+2. Make sure cmake and Perl are in PATH. Additionally, some backends
+ require compile tools in PATH. (Hint: "Visual Studio Command Prompt")
+ In the unlikely event that you use -DWITH_MODULES, described below, make
+ sure awk is in PATH.
+
+3. cmake -G "some backend, like 'NMake Makefiles'"
+ -DCMAKE_INSTALL_PREFIX=d:/path/to/httpdinst
+ -DENABLE_foo=A|I|O|a|i
+ -DENABLE_MODULES=A|I|O|a|i
+ d:/path/to/httpdsource
+
+ Alternately, you can use the cmake-gui and update settings in the GUI.
+
+ PCRE_INCLUDE_DIR, PCRE_LIBRARIES, APR_INCLUDE_DIR, APR_LIBRARIES,
+ NGHTTP2_INCLUDE_DIR, NGHTTP2_LIBRARIES:
+
+ cmake doesn't bundle FindXXX for these packages, so the crucial
+ information has to be specified in this manner if they aren't found
+ in their default location.
+
+ -DPCRE_INCLUDE_DIR=d:/path/to/pcreinst/include
+ -DPCRE_LIBRARIES=d:/path/to/pcreinst/lib/pcre[d].lib
+
+ These will have to be specified only if PCRE is installed to a different
+ directory than httpd, or if debug *and* release builds of PCRE were
+ installed there and you want to control which is used. (Currently the
+ build will use pcred.lib (debug) if it is found in the default location
+ and not overridden with -DPCRE_LIBRARIES.)
+
+ -DAPR_INCLUDE_DIR=d:/path/to/aprinst/include
+ -DAPR_LIBRARIES="d:/path/to/aprinst/lib/libapr-1.lib;d:/path/to/aprinst/lib/libaprutil-1.lib"
+
+ These will have to be specified if APR[-Util] was installed to a
+ different directory than httpd.
+
+ When building with APR trunk (future APR 2.x, with integrated APR-Util),
+ specify just the path to libapr-2.lib:
+
+ -DAPR_LIBRARIES=d:/path/to/aprinst/lib/libapr-2.lib
+
+ APR+APR-Util 1.x vs. APR trunk will be detected automatically if they
+ are installed to the same location as httpd.
+
+ APR-Util 1.x has an optional LDAP library. If APR-Util has LDAP enabled
+ and httpd's mod_ldap and mod_authnz_ldap are being used, include the
+ path to the LDAP library in the APR_LIBRARIES setting. (If APR and
+ APR-Util are found in the default location, the LDAP library will be
+ included if it is present.
+
+ -DNGHTTP2_INCLUDE_DIR=d:/path/to/nghttp2inst/include (which has nghttp2/*.h)
+ -DNGHTTP2_LIBRARIES=d:/path/to/nghttp2inst/lib/nghttp2.lib"
+
+ These will have to be specified if nghttp2 was installed to a different
+ directory than httpd.
+
+ LIBXML2_ICONV_INCLUDE_DIR, LIBXML2_ICONV_LIBRARIES
+
+ If using a module that requires libxml2 *and* the build of libxml2 requires
+ iconv, set these variables to allow iconv includes and libraries to be
+ used. For example:
+
+ -DLIBXML2_ICONV_INCLUDE_DIR=c:\iconv-1.9.2.win32\include
+ -DLIBXML2_ICONV_LIBRARIES=c:\iconv-1.9.2.win32\lib\iconv.lib
+
+ CMAKE_C_FLAGS_RELEASE, _DEBUG, _RELWITHDEBINFO, _MINSIZEREL
+ CMAKE_BUILD_TYPE
+
+ For NMake Makefiles the choices are at least DEBUG, RELEASE,
+ RELWITHDEBINFO, and MINSIZEREL
+ Other backends may have other selections.
+
+ ENABLE_foo:
+
+ Each module has a default setting which can be overridden with one of
+ the following values:
+ A build and Activate module
+ a build and Activate module IFF prereqs are available; if
+ prereqs are unavailable, don't build it
+ I build module but leave it Inactive (commented-out
+ LoadModule directive)
+ i build module but leave it Inactive IFF prereqs are
+ available; if prereqs are unavailable, don't build it
+ O Omit module completely
+
+ Examples: -DENABLE_ACCESS_COMPAT=O
+ -DENABLE_PROXY_HTML=i
+
+ ENABLE_MODULES:
+
+ This changes the *minimum* enablement of all modules to the specified
+ value (one of A, a, I, i, O, as described under ENABLE_foo above).
+
+ The ranking of enablement from lowest to highest is O, i, I, a, A.
+ If a specific module has a higher rank enablement setting, either from
+ a built-in default or from -DENABLE_foo, ENABLE_MODULES won't affect
+ that module. However, if a specific module has a lower-rank enablement
+ setting, presumably from a built-in default, the value of ENABLE_MODULES
+ will be used for that module.
+
+ Explanations for possible values:
+
+ -DENABLE_MODULES=a build and activate all possible modules,
+ ignoring any with missing prereqs
+ (doesn't affect modules with A for ENABLE_foo)
+
+ -DENABLE_MODULES=i build but leave inactive all possible
+ modules, ignoring any with missing
+ prereqs
+ (doesn't affect modules with A, a, or I for
+ ENABLE_foo)
+
+ -DENABLE_MODULES=O no impact, since all modules are either
+ already disabled or have a higher setting
+
+ -DENABLE_MODULES=A build and activate all possible modules,
+ failing the build if any module is missing
+ a prereq
+
+ -DENABLE_MODULES=I similar to -DENABLE_MODULES=A
+ (doesn't affect modules with A or a for
+ ENABLE_foo)
+
+ WITH_MODULES:
+
+ Comma-separated paths to single file modules to statically linked into
+ the server, like the --with-module=modpath:/path/to/mod_foo.c with
+ the autoconf-based build. Key differences: The modpath (e.g.,
+ "generators") isn't provided or used, and the copy of the module
+ source being built is automatically updated when it changes.
+ See also EXTRA_COMPILE_FLAGS, EXTRA_INCLUDES, and EXTRA_LIBS.
+
+ EXTRA_COMPILE_FLAGS:
+
+ Space-delimited compile flags to define with the build.
+
+ EXTRA_INCLUDES:
+
+ List of additional directories to search for .h files. This may
+ be necessary when including third-party modules in the httpd build
+ via WITH_MODULES.
+
+ EXTRA_LIBS:
+
+ List of additional libraries to link with. This may be necessary when
+ including third-party modules in the httpd build via WITH_MODULES.
+
+ Port and SSLPort:
+
+ Port numbers for substitution into default .conf files. (The defaults
+ are 80 and 443.)
+
+ INSTALL_PDB:
+
+ If .pdb files are generated for debugging, install them.
+ Default: ON
+
+ The .pdb files are generally needed for debugging low-level code
+ problems. If they aren't installed, they are still available in the
+ build directory for use by alternate packaging implementations or when
+ debugging on the build machine.
+
+ INSTALL_MANUAL:
+
+ Install the Apache HTTP Server manual.
+ Default: ON
+
+ This could be turned off when developing changes in order to speed up
+ installation time.
+
+4. Build using the chosen generator (e.g., "nmake install" for cmake's "NMake
+ Makefiles" generator).
+
+Running the server and support programs
+---------------------------------------
+
+This build system does not copy binaries such as dlls from other projects
+into the httpd install location. Without taking some precautions, httpd
+and support programs can fail to start or modules can fail to load because
+a support library can't be found in PATH or in the directory of the httpd
+binary.
+
+This can be resolved in several different ways:
+
+* Install httpd and the various support libraries to a common install
+ prefix so that support libraries and httpd programs are installed in
+ the same bin directory and are found without setting PATH.
+
+* Update PATH to include the bin directories of all necessary support
+ libraries.
+
+ Depending on where PATH is set, it may not affect starting httpd as
+ a service.
+
+* Maintain a script which combines required binaries into a common
+ location, such as the httpd installion bin directory, and use that
+ script after building or otherwise installing or updating support
+ libraries.
+
+* AVOID THE USE of any unrepeatable process of copying dll files around
+ from different install locations until something starts working. The
+ result is that when you later update a support library to pick up a
+ security fix, httpd will likely continue to use the old, vulnerable
+ library file.
+
+Known Bugs and Limitations
+--------------------------
+
+* no standard script or makefile is provided to tie together the builds
+ of httpd and support libraries in a manner suitable for typical users
+* no logic to find support libraries or otherwise build these modules:
+ + mod_socache_dc (requires distcache), mod_serf (requires serf)
+ + additionally, mod_firehose doesn't compile on Windows anyway
+* buildmark.c isn't necessarily rebuilt when httpd.exe is regenerated
+* ApacheMonitor has a build error and is disabled
+* CGI examples aren't installed
+* dbmmanage.pl and wintty aren't built/installed
+* module enablement defaults are not in sync with the autoconf-based build
+* no support for static support library builds; unclear if that is a
+ requirement; if so: taking PCRE as an example, we'd need to detect that it
+ is static and then turn on PCRE_STATIC for the libhttpd build
+
+Generally:
+
+* Many httpd features have not been tested with this build.
+* Developers need to examine the existing Windows build in great detail and see
+ what is missing from the cmake-based build, whether a feature or some build
+ nuance.
+* Any feedback you can provide on your experiences with this build will be
+ helpful.
diff --git a/README.platforms b/README.platforms
new file mode 100644
index 0000000..a377079
--- /dev/null
+++ b/README.platforms
@@ -0,0 +1,112 @@
+
+ Apache HTTP Server
+
+ Platform specific notes:
+ ------------------------
+
+================
+ Darwin (OS X):
+ Apache 2 relies heavily on the use of autoconf and libtool to
+ provide a build environment. Darwin provides these tools as part
+ of the Developers Tools package. Under Darwin, however, GNUlibtool
+ is installed as 'glibtool' to avoid conflicting with the Darwin
+ 'libtool' program. Apache 2 knows about this so that's not a
+ problem.
+
+ As of OS X 10.2 (Jaguar), the bundled versions work perfectly. Partly
+ this is due to the fact that /bin/sh is now 'bash' and not 'zsh' as
+ well as the fact that the bundled versions are up-to-date:
+ autoconf 2.52 and (g)libtool 1.4.2.
+
+ You will note that GNU libtool should actually be installed as
+ glibtool, to avoid conflict with a Darwin program of the same
+ name.
+
+ There have been some reports that autoconf 2.52 prevents Apache's
+ build system from correctly handling passing multi-value envvars
+ to the build system (eg: CFLAGS="-g -O3" ./configure), causing
+ errors. Use of bash does not seem to help in this situation. If
+ this affects you, downgrading to autoconf 2.13 (which is installed
+ on Darwin) will help.
+
+ With Leopard (at least up to 10.5.2), when running configure
+ you will likely see errors such as:
+
+ rm: conftest.dSYM: is a directory
+
+ This is a known issue and will be fixed in a later version of the
+ autoconf suite. These errors can be safely ignored.
+
+ For later versions of OS X, (10.8 and 10.9), be sure to have Xcode
+ AND Xcode Command Line Tools installed. httpd will built both with
+ gcc and clang.
+
+==========
+ FreeBSD:
+ autoconf 2.52 creates scripts that are incompatible with the Posix
+ shell implementation (/bin/sh) on FreeBSD. Be sure to use v2.13
+ of autoconf.
+
+ Threaded MPMs are not supported on FreeBSD 4.x. Current releases of
+ FreeBSD 5.x (5.2 or later) support threaded MPMs correctly. You must pass
+ '--enable-threads=yes' to APR's configure in order to enable threads.
+ Additionally, you must use libthr or libkse via libmap.conf as the default
+ libc_r is still broken as of this writing. Please consult the man page for
+ libmap.conf for more details about configuring libthr or libkse.
+================
+ HP-UX:
+ The dlopen() system call in HP-UX has problems when loading/unloading
+ C++ modules. The problem can be resolved by using shl_load() instead
+ of dlopen(). This is fixed in the Apache 2.0.44 release.
+ To enable loading of C++ modules, the httpd binary has to be linked with
+ the following libraries :
+
+ HP-UX (11.0 / 11i):
+ When using shl_load : "cpprt0_stub.s -lcl"
+ When using dlopen : "cpprt0_stub.s -lcl -lCsup"
+
+ HP-UX (11i version 1.5 and greater):
+ When using dlopen/shl_load : "cpprt0_stub.s -lcl -lunwind"
+
+ The cpprt0_stub.s can be downloaded from the web site :
+ http://h21007.www2.hp.com/hpux-devtools/CXX/hpux-devtools.0107/0083.html
+
+ Compile cpprt0_stub.s with the PIC option
+ cc -c +z cpprt0_stub.s
+ - OR -
+ gcc -c -fPIC cpprt0_stub.s
+================
+ AIX, using the vendor C compiler with optimization:
+ There is an issue with compiling server/core.c with optimization enabled
+ which has been seen with C for AIX 5.0.2.3 and above. (5.0.2.0, 5.0.2.1,
+ and 5.0.2.2 have an additional problem with Apache 2.0.x, so either upgrade
+ the compiler or don't use optimization in order to avoid it.)
+
+ cc_r works fine with -O2 but xlc_r does not. In order to use xlc_r with
+ -O2, apply the patch at
+
+ http://www.apache.org/dist/httpd/patches/apply_to_2.0.49/aix_xlc_optimization.patch
+
+ (That patch works with many recent levels of Apache 2+.)
+
+================
+ Solaris:
+
+ On Solaris, better performance may be achieved by using the Sun Studio
+ compiler instead of gcc. As of version 11, it is now free (registration
+ required). Download the compiler from:
+
+ http://developers.sun.com/prodtech/cc/downloads/index.jsp
+
+ If you use Sun Studio, the following compiler flags (CFLAGS) are
+ recommended:
+
+ -XO4 -xchip=generic
+
+================
+ Ubuntu:
+
+ You will need to ensure that you have either libtool 1.5.6
+ or 2.2.6b, or later. Expat 2.0.1 and PCRE 8.02 are also
+ recommended to be installed. If building PCRE from source,
+ you'll also need g++.