diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 06:33:50 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 06:33:50 +0000 |
commit | fe39ffb8b90ae4e002ed73fe98617cd590abb467 (patch) | |
tree | b80e5956907d8aeaaffe4e4f0c068c0e6157ce8b /README | |
parent | Initial commit. (diff) | |
download | apache2-fe39ffb8b90ae4e002ed73fe98617cd590abb467.tar.xz apache2-fe39ffb8b90ae4e002ed73fe98617cd590abb467.zip |
Adding upstream version 2.4.56.upstream/2.4.56
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | README | 110 | ||||
-rw-r--r-- | README.CHANGES | 19 | ||||
-rw-r--r-- | README.cmake | 329 | ||||
-rw-r--r-- | README.platforms | 112 |
4 files changed, 570 insertions, 0 deletions
@@ -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++. |