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.55-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.