Introduction to Apache HTTPD
        
        
          The Apache HTTPD package contains
          an open-source HTTP server. It is useful for creating local
          intranet web sites or running huge web serving operations.
        
        
          This package is known to build and work properly using an LFS 12.0
          platform.
        
        
          Package Information
        
        
        
          Additional Downloads
        
        
        
          Apache HTTPD Dependencies
        
        
          Required
        
        
          Apr-Util-1.6.3 and pcre2-10.42
        
        
          Optional
        
        
          Brotli-1.0.9, Berkeley DB-5.3.28, Doxygen-1.9.7, jansson-2.14,
          libxml2-2.10.4, Lua-5.4.6, Lynx-2.8.9rel.1 or Links-2.29 or
          ELinks, nghttp2-1.55.1, OpenLDAP-2.6.6
          (Apr-Util-1.6.3 needs to be installed with ldap
          support), rsync-3.2.7, and Distcache
        
        
          Editor Notes: https://wiki.linuxfromscratch.org/blfs/wiki/apache
        
       
      
        
          Installation of Apache HTTPD
        
        
          For security reasons, running the server as an unprivileged user
          and group is strongly encouraged. Create the following group and
          user using the following commands as root:
        
        groupadd -g 25 apache &&
useradd -c "Apache Server" -d /srv/www -g apache \
        -s /bin/false -u 25 apache
        
          Build and install Apache HTTPD by
          running the following commands:
        
        patch -Np1 -i ../httpd-2.4.57-blfs_layout-1.patch             &&
sed '/dir.*CFG_PREFIX/s@^@#@' -i support/apxs.in              &&
sed -e '/HTTPD_ROOT/s:${ap_prefix}:/etc/httpd:'       \
    -e '/SERVER_CONFIG_FILE/s:${rel_sysconfdir}/::'   \
    -e '/AP_TYPES_CONFIG_FILE/s:${rel_sysconfdir}/::' \
    -i configure  &&
./configure --enable-authnz-fcgi                              \
            --enable-layout=BLFS                              \
            --enable-mods-shared="all cgi"                    \
            --enable-mpms-shared=all                          \
            --enable-suexec=shared                            \
            --with-apr=/usr/bin/apr-1-config                  \
            --with-apr-util=/usr/bin/apu-1-config             \
            --with-suexec-bin=/usr/lib/httpd/suexec           \
            --with-suexec-caller=apache                       \
            --with-suexec-docroot=/srv/www                    \
            --with-suexec-logfile=/var/log/httpd/suexec.log   \
            --with-suexec-uidmin=100                          \
            --with-suexec-userdir=public_html                 &&
make
        
          This package does not come with a test suite.
        
        
          Now, as the root user:
        
        make install  &&
mv -v /usr/sbin/suexec /usr/lib/httpd/suexec &&
chgrp apache           /usr/lib/httpd/suexec &&
chmod 4754             /usr/lib/httpd/suexec &&
chown -v -R apache:apache /srv/www
       
      
        
          Command Explanations
        
        
          sed
          '/dir.*CFG_PREFIX/s@^@#@'...: Forces the
          apxs utility to use absolute
          pathnames for modules, when instructed to do so.
        
        
          --enable-authnz-fcgi: Build
          FastCGI authorizer-based authentication and authorization
          (mod_authnz_fcgi.so fast CGI module).
        
        
          --enable-mods-shared="all
          cgi": The modules should be compiled and used as
          Dynamic Shared Objects (DSOs) so they can be included and excluded
          from the server using the run-time configuration directives.
        
        
          --enable-mpms-shared=all:
          This switch ensures that all MPM (Multi Processing Modules) are
          built as Dynamic Shared Objects (DSOs), so the user can choose
          which one to use at runtime.
        
        
          --enable-suexec: This
          switch enables building of the Apache suEXEC module which can be used to
          allow users to run CGI and SSI scripts under user IDs different
          from the user ID of the calling web server.
        
        
          --with-suexec-*: These
          switches control suEXEC module behavior, such as default document
          root, minimal UID that can be used to run the script under the
          suEXEC. Please note that with minimal UID 100, you can't run CGI or
          SSI scripts under suEXEC as the apache user.
        
        
          ...
          /usr/lib/httpd/suexec: These commands put
          suexec wrapper into
          proper location, since it is not meant to be run directly. They
          also adjust proper permissions of the binary, making it setgid
          apache.
        
        
          chown -R apache:apache
          /srv/www: By default, the installation process
          installs files (documentation, error messages, default icons, etc.)
          with the ownership of the user that extracted the files from the
          tar file. If you want to change the ownership to another user, you
          should do so at this point. The only requirement is that the
          document directories need to be accessible by the httpd process with (r-x)
          permissions and files need to be readable (r--) by the apache user.