2025年7月10日 Apache httpd 2.4.64 がリリースされました。約半年ぶりのバージョンアップです。Apache httpd 2.4.64 では、8件の脆弱性が修正され、各種機能の不具合も改善されています。そこで今回は、AlmaLinux 8、Rocky Linux 8、AlmaLinux 9、Rocky Linux 9、CentOS Stream 9、 AlmaLinux 10、Rocky Linux 10、CentOS Stream 10 に Apache httpd 2.4.64 をインストールする手順をまとめてみました。
参考資料:Complete ChangeLog for 2.4
開発ツールのインストール
Apache httpd や各種ライブラリをソースからコンパイルしますので、パッケージを「最小限のインストール」でインストールしている場合は、基本パッケージと開発ツールをインストールしておきましょう。
dnf groupinstall development
パッケージのアップデート
インストール済みのパッケージを、最新版にアップデートします。
OSを再起動します。
OpenSSL 3.0 のインストール(OSバージョン8のみ)
- AlmaLinux 9
- Rocky Linux 9
- CentOS Stream 9
- AlmaLinux 10
- Rocky Linux 10
- CentOS Stream 10
サーバOSが AlmaLinux 8、Rocky Linux 8 の場合は、OpenSSL 3.0 をインストールします。
OpenSSL のコンパイルに必要なパッケージをインストールしておきます。
dnf install perl-core
OpenSSL 3.0 のダウンロード(ダウンロードの前に OpenSSL 3.0 の最新リリース を確認しておきましょう)
wget https://github.com/openssl/openssl/releases/download/openssl-3.0.17/openssl-3.0.17.tar.gz
OpenSSL 3.0 のインストール
cd openssl-3.0.17/
./Configure --prefix=/usr/local/openssl-3.0.17 shared zlib
make
make test
make install
OpenSSL 3.0 のライブラリにパスを通しておきます。
ldconfig
OpenSSL 3.0 の動作確認(バージョンが表示されればOKです)
/usr/local/openssl-3.0.17/bin/openssl version OpenSSL 3.0.17 1 Jul 2025 (Library: OpenSSL 3.0.17 1 Jul 2025)
Nghttp2 のインストール
HTTP/2(mod_http2)のコアエンジン Nghttp2 をインストールします。
Nghttp2 のダウンロード(ダウンロードの前に Nghttp2の最新リリース を確認しておきましょう)
wget https://github.com/nghttp2/nghttp2/releases/download/v1.66.0/nghttp2-1.66.0.tar.gz
Nghttp2 のライブラリをコンパイルしてインストールします。
cd nghttp2-1.66.0/
./configure --enable-lib-only
make
make install
以上で HTTP/2 のライブラリ「libnghttp2」が /usr/local/lib/ 以下にインストールされましたので、ライブラリのパスに追加しておきます。
ldconfig
Brotli のインストール
Brotli のコンパイルに cmake を使いますので、インストールしておきます。
CMake のインストール
Brotli のインストール
Brotli のダウンロード(ダウンロードの前に Brotliの最新リリース を確認しておきましょう)
wget https://github.com/google/brotli/archive/refs/tags/v1.1.0.tar.gz
Brotli をコンパイルしてインストールします。
cd brotli-1.1.0/
mkdir out && cd out
cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local ..
cmake --build . --config Release --target install
Brotli のライブラリが /usr/local/lib64 以下にインストールされましたので、ライブラリのパスに追加しておきます。
ldconfig
Apache httpd インストールの下準備
Apache httpd のコンパイルに必要なパッケージをインストールしておきます。
AlmaLinux8、RockyLinux8 AlmaLinux 9、Rocky Linux 9、CentOS Stream 9 の場合
dnf install expat-devel
AlmaLinux 10、Rocky Linux 10、CentOS Stream 10 の場合
dnf install expat-devel
また、Apache 2.4系をソースコードからインストールする場合は、APR と APR-util が必要になりますので、インストールしておきます。
APR
wget https://dlcdn.apache.org/apr/apr-1.7.6.tar.gz
tar xvzf apr-1.7.6.tar.gz
cd apr-1.7.6/
./configure
make
make install
APR-util
wget https://dlcdn.apache.org/apr/apr-util-1.6.3.tar.gz
tar xvzf apr-util-1.6.3.tar.gz
cd apr-util-1.6.3/
./configure --with-apr=/usr/local/apr
make
make install
Apache httpd 2.4.64 のインストール
本題の Apache httpd のインストールです。
Apache httpd のソースコードのダウンロード
wget https://dlcdn.apache.org/httpd/httpd-2.4.64.tar.gz
ダウンロードしたソースコードを解凍して、ディレクトリを移動します。
cd httpd-2.4.64/
AlmaLinux8、RockyLinux8 の場合
Apache httpd をインストールします。AlmaLinux8、RockyLinux8 の場合は、「--with-ssl」オプションで OpenSSL 3.0 のインストールディレクトリを指定します。
--enable-http2 \
--enable-brotli \
--with-brotli=/usr/local/lib64 \
--enable-ssl \
--with-ssl=/usr/local/openssl-3.0.15 \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr \
--enable-so \
--enable-mods-shared=all \
--enable-mpms-shared=all
 
make
make install
AlmaLinux 9、Rocky Linux 9、CentOS Stream 9、 AlmaLinux 10、Rocky Linux 10、CentOS Stream 10 の場合
Apache httpd をインストールします。AlmaLinux 9、Rocky Linux 9、CentOS Stream 9、 AlmaLinux 10、Rocky Linux 10、CentOS Stream 10 の場合は「--with-ssl」オプションの指定は必要ありません。
--enable-http2 \
--enable-brotli \
--with-brotli=/usr/local/lib64 \
--enable-ssl \
--with-apr=/usr/local/apr \
--with-apr-util=/usr/local/apr \
--enable-so \
--enable-mods-shared=all \
--enable-mpms-shared=all
 
make
make install
以上で Apache が /usr/local/apache2/ 以下にインストールされました。続いてSSLサーバー証明書の作成と、Apacheの設定を行います。
自己署名のSSLサーバー証明書の作成
HTTP/2 および Brotli は HTTPS が必須になりますので Apache の設定の前に、SSLサーバー証明書を作成しておきます。
秘密鍵の作成
SSLサーバー証明書の作成(有効期限30年)
-subjオプションで C(Country Name)に2文字の国名コード、CN(Common Name)にサイトのドメイン名(FQDN)を指定してください。
-days 10950 \
-key server.key \
-subj '/C=JP/CN=www.example.com' \
-out server.crt
秘密鍵とSSL証明書を移動
mv -i server.crt /etc/pki/tls/certs/
パーミッションを変更
chmod 600 /etc/pki/tls/certs/server.crt
SELinux を有効にしている場合は、秘密鍵とSSL証明書に正しいセキュリティコンテキストをつけておきましょう。(Apache httpd 起動時にエラーが発生することがあります)
restorecon /etc/pki/tls/certs/server.crt
Apache httpd の設定
ログの出力先を変更
rm -rf /usr/local/apache2/logs/
ln -s /var/log/httpd /usr/local/apache2/logs
(補足)Linuxディストリビューションによっては logrotate の設定により /usr 以下に出力されたログがローテーションできないことがありますので /var/log/ 以下に出力することをオススメします。
オリジナルの設定ファイルをバックアップ
mv -i /usr/local/apache2/conf/extra/httpd-ssl.conf /usr/local/apache2/conf/extra/httpd-ssl.conf.org
・設定ファイルを作成します(コピペしてください)
vim /usr/local/apache2/conf/httpd.conf
vim /usr/local/apache2/conf/extra/httpd-ssl.conf
systemd ユニットファイルの作成
Apache httpd 用の systemd ユニットファイル(起動スクリプトのようなもの)を作成します。
vim /etc/systemd/system/httpd.service
Description=The Apache HTTP Server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/apache2/bin/apachectl start
ExecReload=/usr/local/apache2/bin/apachectl graceful
ExecStop=/usr/local/apache2/bin/apachectl stop
[Install]
WantedBy=multi-user.target
作成したサービスファイルを systemd に反映
systemd に反映されているか確認
systemctl list-unit-files | grep httpd httpd.service disabled disabled ←この表示があればOK
起動
自動起動設定
firewalld設定
HTTP(80/tcp) と HTTPS(443/tcp) を開けておきます。
firewall-cmd --add-port=443/tcp --permanent
firewall-cmd --reload
・確認
firewall-cmd --list-all
interfaces: enp0s3 enp0s8
sources:
services: dhcpv6-client ssh
ports: 443/tcp 80/tcp ←この表示があればOK
(略)
ログのローテーション設定
・設定ファイルを作成します
vim /etc/logrotate.d/httpd
/var/log/httpd/*log { daily missingok dateext rotate 365 create 644 daemon daemon sharedscripts postrotate /bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true endscript }
・確認します
logrotate -v /etc/logrotate.d/httpd
-----(下記のような表示であればOKです)-----
Handling 1 logs
rotating pattern: /var/log/httpd/*log after 1 days (365 rotations)
empty log files are rotated, old logs are removed
(略)
以上です。設定お疲れ様でした!
コメント