Podmanのapache-php8.4同梱版コンテナのPHPをアップデートする方法
PHPの現行バージョンにて致命な脆弱性が見つかったとのニュースを聞いた。かなり重大なようで昨日の21時ごろからメンテナンスに入るサイトもいくつか見かけた。当サイトの環境がPodmanのapache-php8.4同梱版を使用しているので、この環境でのアップデート方法をメモ。
対応方法
(必要に応じて)スナップショットの生成
スナップショット対応のVPS・サーバの場合は念のため取っておくといいかも。
ちなみに本サイトはKAGOYA VPSでストレージを15GB使用している環境でスナップショットを生成するのに1時間弱かかった。
ビルド用のDockerfile
過去に作成した以下内容のDokerfileをそのまま使用する。
# Docker公式PHP8.4&Apache同梱版イメージを指定
FROM docker.io/library/php:8.4-apache
# PHP拡張機能インストーラーをダウンロードして配置
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/
# 実行権限を与え、必要なモジュールを一括インストール
RUN chmod +x /usr/local/bin/install-php-extensions && \
install-php-extensions \
apcu \
bcmath \
curl \
dom \
exif \
gd \
gmp \
imagick \
intl \
mbstring \
memcache \
memcached \
mysqli \
opcache \
pcntl \
pdo_mysql \
redis \
simplexml \
sockets \
sysvsem \
xml \
xmlwriter \
zip \
zlib
# composerのコピー
COPY --from=docker.io/library/composer:latest /usr/bin/composer /usr/bin/composer
# apache-php8.4はDebian系のためdnfではなくapt-getで必要なコマンドを導入
RUN apt-get update && apt-get install -y git zip unzip
# Apacheのrewriteモジュールとremoteipモジュールを有効化
RUN a2enmod rewrite remoteip
再ビルドとコンテナ再生成
# Dockerfileがあるディレクトリに移動 cd /opt/podman/php # キャッシュを無視して最新版をビルド podman build --no-cache -t web-server:latest . # docker-compose.ymlがあるディレクトリに移動 cd /opt/podman # コンテナの削除、作成と起動 podman-compose down podman-compose up -d # (必要に応じて)古い不要なイメージの削除 podman image prune -f
動作確認
phpinfoを見ると以下の通り脆弱性修正後のバージョンにアップデートされている点が確認できた。
- 対応前 -> 8.4.25
- 対応後 -> 8.4.27
(必要に応じて)スナップショットの削除
アップデート後、各種動作確認を行って問題が無いようならスナップショットを削除する。
その他
アップデート対応が難しい場合
時間が取れない等でアップデート対応が難しいような場合は、暫定対応としてphp.iniで以下を設定する。
session.upload_progress.enabled = 0
所感
VPSの移行やOSバージョンアップ以外でPHPのアップデートを行ったことがなかったため、面倒くさい作業になるかと思いきやコンテナ環境のおかげか簡単に対応できて助かった。
今回はDockerfileは同じものを使用したが、8.4系から8.5系にアップデートする場合でも「docker.io/library/php:8.4-apache」を「docker.io/library/php:8.5-apache」に変えてビルドするだけだろうからすごく楽。この辺りもコンテナ環境の恩恵なのかも。
関連記事
-
-
Podmanでメールサーバ用コンテナ(postfix / dovecot)を導入する方法
かなり前にCentOS6系にメールサーバを導入する方法をメモしたが、これをPod ...
-
-
Podmanで導入したApacheのチューニング(mpm_prefork)に関する設定方法
Podmanで導入したApacheのチューニング(mpm_prefork)を行い ...
-
-
CockpitとPodmanでWebサーバ用コンテナを作成しHello Worldページを表示する方法
Cockpitにはcockpit-podmanというPodman(Dockerの ...
-
-
Podmanコンテナの負荷状況や各種情報を確認できるCUIツール「Lazydocke」の導入方法
Podmanコンテナのメモリ・CPU使用率等の負荷状況を簡単に確認したい。また、 ...
-
-
コンテナ側のApacheのアクセスログにリバースプロキシのIPではなく本来のアクセスIPを出力する方法
ホスト側Nginxからリバースプロキシ経由でApacheコンテナに接続する環境に ...