📖 概要
Amazon Linux 2023 のコンテナイメージに PHP 8.3 と Apache2 をインストールし、
php-fpm を使わずに、モジュール版(mod_php)で動作させる 方法を検証しました。
🛠️ やったこと
-
php-fpm
の自動起動を無効化 -
mod_php
(Apache のモジュール)で PHP を動作させるように設定 - Dockerfile を作成し、コンテナで環境を構築
📃 Dockerfile
FROM amazonlinux:2023.6.20250107.0
# 必要なパッケージをインストール
RUN dnf install -y php httpd mod_php && \
dnf clean all
# FastCGI 設定を削除
RUN test -f /usr/lib/systemd/system/httpd.service.d/php-fpm.conf && rm /usr/lib/systemd/system/httpd.service.d/php-fpm.conf || true
# Prefork MPM を有効化し、他のMPMを無効化
RUN sed -i 's/^LoadModule mpm_event_module/#LoadModule mpm_event_module/' /etc/httpd/conf.modules.d/00-mpm.conf && \
sed -i 's/^LoadModule mpm_worker_module/#LoadModule mpm_worker_module/' /etc/httpd/conf.modules.d/00-mpm.conf && \
sed -i 's/^#LoadModule mpm_prefork_module/LoadModule mpm_prefork_module/' /etc/httpd/conf.modules.d/00-mpm.conf
# ServerNameの警告を抑制
RUN echo "ServerName localhost" >> /etc/httpd/conf/httpd.conf
# PHPモジュールをロード
RUN echo "LoadModule php_module modules/libphp.so" >> /etc/httpd/conf/httpd.conf && \
echo "<FilesMatch \.php$>" >> /etc/httpd/conf/httpd.conf && \
echo "SetHandler application/x-httpd-php" >> /etc/httpd/conf/httpd.conf && \
echo "</FilesMatch>" >> /etc/httpd/conf/httpd.conf
# 作業ディレクトリを設定
WORKDIR /tmp
# 必要なファイルをコンテナにコピー
COPY . /tmp
# phpファイルを配置
COPY info.php /var/www/html/info.php
# ポート 80 を開放
EXPOSE 80
# Apache を起動
ENTRYPOINT ["/usr/sbin/httpd", "-D", "FOREGROUND"]