Apache-2.4.58

Apache HTTPD の概要

Apache HTTPD パッケージはオープンソースの HTTP サーバーです。 ローカルなイントラネットウェブサイトでも、大規模なウェブサービスの運用にも利用することができます。

[注記]

注記

LFS や依存パッケージが本ブックに示す最新安定バージョンでなかった場合には、BLFS 開発版においては、パッケージのビルドや処理実行が適切に行われないことがあります。

パッケージ情報

追加のダウンロード

Apache HTTPD の依存パッケージ

必須

Apr-Util-1.6.3, pcre2-10.42

任意

Brotli-1.1.0, Doxygen-1.9.8, jansson-2.14, libxml2-2.12.3, Lua-5.4.6, Lynx-2.8.9rel.1 or Links-2.29 or ELinks, nghttp2-1.58.0, OpenLDAP-2.6.6 (Apr-Util-1.6.3 needs to be installed with ldap support), rsync-3.2.7, Berkeley DB (非推奨), and Distcache

Apache HTTPD のインストール

セキュリティの観点から、サーバーは一般ユーザーと一般グループにより起動することが強く推奨されています。 root になり、以下のコマンドによってグループとユーザーを生成します。

groupadd -g 25 apache &&
useradd -c "Apache Server" -d /srv/www -g apache \
        -s /bin/false -u 25 apache

Apache HTTPD をビルドするために、以下のコマンドを実行します。

patch -Np1 -i ../httpd-2.4.58-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  &&

sed -e '/encoding.h/a # include <libxml/xmlstring.h>' \
    -i modules/filters/mod_xml2enc.c  &&

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

このパッケージにテストスイートはありません。

root ユーザーになって以下を実行します。

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

コマンド説明

sed '/dir.*CFG_PREFIX/s@^@#@'...: Forces the apxs utility to use absolute pathnames for modules, when instructed to do so.

sed -e '/HTTPD_ROOT/s ...: Fixes some paths.

sed -e '/encoding.h/a ...; Fix building against libxml-2.12.x.

--enable-authnz-fcgi: Build FastCGI authorizer-based authentication and authorization (mod_authnz_fcgi.so fast CGI module).

--enable-mods-shared="all cgi": モジュール類は動的共有オブジェクト (Dynamic Shared Objects; DSO) としてビルドされ利用されます。 そして実行時の設定ファイル内のディレクティブにより設定されます。

--enable-mpm-shared=all: 本スイッチは MPM (マルチプロセスモジュール; Multi Processing Modules) を動的共有オブジェクト (Dynamic Shared Objects; DSO) としてビルドすることを指示します。 こうすることによって、実行時にいずれのモジュールを用いるかを設定できるようになります。

--enable-suexec: 本スイッチは Apache の suEXEC モジュールをビルドするようにします。 suEXEC モジュールは、Web サーバーを呼び出すユーザーとは異なるユーザーのもとで、CGI や SSI スクリプトを実行できるようにするものです。

--with-suexec-*: これらのスイッチは suEXEC モジュールの挙動を制御するものです。 例えばデフォルトのドキュメントルートや最小 UID といったもので、これは suEXEC のもとでスクリプトを実行するために利用されます。 ただし最小 UID が 100 であると、apache ユーザーとしては suEXEC のもとで CGI や SSI を実行することはできません。

... /usr/lib/httpd/suexec: これらのコマンドは suexec ラッパースクリプトを適切なディレクトリに移動します。 こうするのは、このスクリプトが直接実行されるものではないためです。 また setgid を apache とすることにより、実行モジュールのパーミッションを修正します。

chown -R apache:apache /srv/www: デフォルトにて、インストール時にインストールされるファイル類 (ドキュメントファイル、エラーメッセージ、デフォルトアイコンなど) は、tar ファイルを解凍したユーザーが所有者となります。 この所有者を他ユーザーに変更したい場合は、この時点において実行する必要があります。 また必要なこととして、ドキュメントディレクトリは、パーミッション (r-x) とし httpd プロセスがアクセス可能でなければなりません。 また各種ファイル類は、パーミッション (r--) とし apache ユーザーが読み込み可能でなければなりません。

Apache の設定

設定ファイル

/etc/httpd/httpd.conf and /etc/httpd/extra/*

設定情報

Apache HTTP サーバーの設定ファイルに関する設定方法の詳細は file:///usr/share/httpd/manual/configuring.html を参照してください。

There is no reason, at least for internet facing sites, not to use SSL encryption. Setting up a secured website does not cost anything except installing one additional small tool and a few minutes of configuration work. Use this guideline at https://wiki.linuxfromscratch.org/blfs/wiki/Securing_a_website to create world-wide accepted certificates and renew them on a regular basis.

ブートスクリプト

システム起動時に Apache サーバーを自動で起動する場合は blfs-bootscripts-20231119 パッケージに含まれる/etc/rc.d/init.d/httpd初期起動スクリプトをインストールします。

make install-httpd

パッケージ構成

インストールプログラム: ab, apachectl, apxs, checkgid, dbmmanage, fcgistarter, htcacheclean, htdbm, htdigest, htpasswd, httpd, httxt2dbm, logresolve, rotatelogs
インストールライブラリ: Several libraries under /usr/lib/httpd/modules/
インストールディレクトリ: /etc/httpd, /srv/www, /usr/include/httpd, /usr/lib/httpd, /usr/share/httpd, /var/log/httpd, /var/run/httpd

概略説明

ab

Apache HTTP サーバーのベンチマークを計測するツールです。

apachectl

is a front end to the Apache HTTP server which is designed to help the administrator control the functioning of the Apache httpd daemon

apxs

Apache HTTP サーバーに対する追加モジュールをビルドしインストールするためのツールです。

checkgid

is a program that checks whether it can setgid to the group specified. This is to see if it is a valid group for Apache2 to use at runtime. If the user (should be run as superuser) is in that group, or can setgid to it, it will return 0

dbmmanage

is used to create and update the DBM format files used to store usernames and passwords for basic authentication of HTTP users

fcgistarter

is a tool to start a FastCGI program

htcacheclean

ディスクキャッシュをクリーンアップします。

htdbm

DBM パスワードデータベースを操作します。

htdigest

HTTP におけるダイジェスト認証を行うためのファイルを生成し更新します。 そのファイルはフラットファイルであり、ユーザー名、領域名、パスワードを保持します。

htpasswd

is used to create and update the flat-files used to store usernames and passwords for basic authentication of HTTP users

httpd

Apache HTTP サーバープログラム。

httxt2dbm

DBM ファイルをテキストファイルから生成するもので、RewiteMap 内にて利用されます。

logresolve

is a post-processing program to resolve IP-addresses in Apache's access log files

rotatelogs

is a simple program for use in conjunction with Apache's piped log file feature

suexec

allows users to run CGI and SSI applications as a different user