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 サーバーを自動で起動する場合は
blfs-bootscripts-20231119
パッケージに含まれる/etc/rc.d/init.d/httpd
初期起動スクリプトをインストールします。
make install-httpd