公開日:2026/9/10 0:00:00

Amazon Linux 2023 Section 2 Apache + mariadb + PHP 構成

Section 2.3 Apache + PHP8.3

About

apache に PHP(https://www.php.net/) をセットアップしていきます。

環境は、Section 2.2を行った直後の状態からとなります。

バージョンの確認

リポジトリに登録されているものからパッケージ名とバージョンを指定してインストールすることになります。 まずは、提供されているかどうかを調べます。

[root@localhost ~]# dnf search php
================================================ 名前 & 概要 一致: php =================================================
php-pear.noarch : PHP Extension and Application Repository framework
php8.1.x86_64 : PHP scripting language for creating dynamic web sites
(略)
php8.5-tidy.x86_64 : Standard PHP 8.5 module provides tidy library support
php8.5-xml.x86_64 : A module for PHP 8.5 applications which use XML
sphinx-php.x86_64 : PHP API for Sphinx
==================================================== 名前 一致: php ====================================================
(略)

[root@localhost ~]#

PHP8.5 がリリースされていて配信されていることがわかりました。

すべての Amazon Linux 2023 パッケージ このページ内にある2023.12.YYYYMMDD リリースの Amazon Linux 2023 RPM パッケージ というところからサポート期間がわかるので、それを見てAmazon Linux 2023のサポート終了(2029 年 6 月)までサポートしてくれそうなものを選ぶのが良いでしょう。

現時点ではphp8.5がOSとしてのサポート期間を半年ほど超えてサポートしてくれるのと、Amazon Linux 2027でも入っていると思われるので、ここからサーバーを立てるとなると8.5を選択するのが無難ではないかと思います。2027年の間に予算取り、2028年に移行、2029年はPHPのアップデートという感じになるのでしょう……

インストール

php本体となにかと使うモジュールをインストールします。 不要なモジュールは入れないのが基本です。DBを使う場合でも使うDBに関連するモジュール以外は入れないように気を付けてください。今回は、mariadb を使いたいのでそのモジュールを入れます。

php が入ってないんですが……という話になりそうなパッケージの指定となっています。 php パッケージは構成定期に飾りになっているので、指定する必要はありません。 php-fpm があれば足りるのと、コマンドライン実行はphp-cliがあれば足りるので外しています。

[root@localhost ~]# dnf -y install php8.5-cli php8.5-common php8.5-fpm \
php8.5-gd php8.5-mbstring php8.5-xml php8.5-intl php8.5-zip \
php8.5-pdo php8.5-mysqlnd \
php8.5-pecl-apcu

依存関係が解決しました。
========================================================================================================================
 パッケージ                          アーキテクチャー バージョン                            リポジトリー          サイズ
========================================================================================================================
インストール:
 php8.5-cli                          x86_64           8.5.9-1.amzn2023.0.1                  amazonlinux           6.1 M
 php8.5-fpm                          x86_64           8.5.9-1.amzn2023.0.1                  amazonlinux           3.1 M
 php8.5-gd                           x86_64           8.5.9-1.amzn2023.0.1                  amazonlinux            53 k
 php8.5-intl                         x86_64           8.5.9-1.amzn2023.0.1                  amazonlinux           194 k
 php8.5-mbstring                     x86_64           8.5.9-1.amzn2023.0.1                  amazonlinux           539 k
 php8.5-mysqlnd                      x86_64           8.5.9-1.amzn2023.0.1                  amazonlinux           154 k
 php8.5-pdo                          x86_64           8.5.9-1.amzn2023.0.1                  amazonlinux            99 k
 php8.5-pecl-apcu                    x86_64           5.1.28-1.amzn2023.0.1                 amazonlinux            63 k
 php8.5-xml                          x86_64           8.5.9-1.amzn2023.0.1                  amazonlinux           248 k
 php8.5-zip                          x86_64           8.5.9-1.amzn2023.0.1                  amazonlinux            45 k
依存関係のインストール:
 cairo                               x86_64           1.18.0-4.amzn2023.0.3                 amazonlinux           717 k
 fontconfig                          x86_64           2.13.94-2.amzn2023.0.2                amazonlinux           273 k
 fonts-filesystem                    noarch           1:2.0.5-12.amzn2023.0.2               amazonlinux           9.5 k
 freetype                            x86_64           2.13.2-5.amzn2023.0.2                 amazonlinux           422 k
 gd                                  x86_64           2.3.3-5.amzn2023.0.5                  amazonlinux           137 k
 google-noto-fonts-common            noarch           20240401-1.amzn2023.0.2               amazonlinux            17 k
 google-noto-sans-vf-fonts           noarch           20240401-1.amzn2023.0.2               amazonlinux           593 k
 graphite2                           x86_64           1.3.14-7.amzn2023.0.3                 amazonlinux            97 k
 harfbuzz                            x86_64           7.0.0-2.amzn2023.0.2                  amazonlinux           873 k
 jbigkit-libs                        x86_64           2.1-21.amzn2023.0.2                   amazonlinux            54 k
 langpacks-core-font-en              noarch           3.0-21.amzn2023.0.4                   amazonlinux            10 k
 libX11                              x86_64           1.8.10-2.amzn2023.0.1                 amazonlinux           659 k
 libX11-common                       noarch           1.8.10-2.amzn2023.0.1                 amazonlinux           147 k
 libXau                              x86_64           1.0.11-6.amzn2023.0.1                 amazonlinux            33 k
 libXext                             x86_64           1.3.6-1.amzn2023.0.1                  amazonlinux            42 k
 libXpm                              x86_64           3.5.17-3.amzn2023.0.2                 amazonlinux            67 k
 libXrender                          x86_64           0.9.11-6.amzn2023.0.1                 amazonlinux            29 k
 libicu                              x86_64           67.1-7.amzn2023.0.4                   amazonlinux           9.6 M
 libjpeg-turbo                       x86_64           2.1.4-2.amzn2023.0.5                  amazonlinux           190 k
 libpng                              x86_64           2:1.6.37-10.amzn2023.0.13             amazonlinux           128 k
 libtiff                             x86_64           4.4.0-4.amzn2023.0.27                 amazonlinux           211 k
 libwebp                             x86_64           1.2.4-1.amzn2023.0.6                  amazonlinux           341 k
 libxcb                              x86_64           1.17.0-1.amzn2023.0.1                 amazonlinux           235 k
 libzip                              x86_64           1.7.3-4.amzn2023.0.3                  amazonlinux            63 k
 nginx-filesystem                    noarch           1:1.30.4-1.amzn2023.0.1               amazonlinux            10 k
 oniguruma                           x86_64           6.9.7.1-1.amzn2023.0.2                amazonlinux           216 k
 php8.5-common                       x86_64           8.5.9-1.amzn2023.0.1                  amazonlinux           863 k
 pixman                              x86_64           0.43.4-1.amzn2023.0.4                 amazonlinux           296 k
 xml-common                          noarch           0.6.3-56.amzn2023.0.2                 amazonlinux            32 k

トランザクションの概要
========================================================================================================================
インストール  39 パッケージ

(中略)

完了しました!
[root@localhost ~]#

これでインストールできたので設定を変えます。

PHPの設定

そのままの設定では日本語などの扱いに問題が出るので設定を変更します。

主に変更する内容は下記の表の通り。

オプション名uncomment元の内容変更後の内容
realpath_cache_size4096K4096K
expose_phpOnOff
memory_limit128M256M
error_reportingE_ALL & ~E_DEPRECATED & ~E_STRICTE_ALL
display_errorsOffOn
post_max_size8M32M
upload_max_filesize2M20M
date.timezone”Asia/Tokyo”
mbstring.languageJapanese

説明も大変なのでsedコマンドを使って一気に書き換えます。

[root@localhost ~]# cp --preserve=contex /etc/php.ini /etc/php.ini.org
[root@localhost ~]# cat /etc/php.ini.org \
| sed -E "s/;(realpath_cache_size =)(.*$)/\1 4096K/" \
| sed -E "s/(expose_php =)(.*$)/\1 Off/" \
| sed -E "s/^(memory_limit =)(.*$)/\1 256M/" \
| sed -E "s/^(error_reporting =)(.*$)/\1 E_ALL/" \
| sed -E "s/(display_errors =)(.*$)/\1 On/" \
| sed -E "s/(post_max_size =)(.*$)/\1 32M/" \
| sed -E "s/(upload_max_filesize =)(.*$)/\1 20M/" \
| sed -E "s/;(date.timezone =)(.*$)/\1 \"Asia\/Tokyo\"/" \
| sed -E "s/;(mbstring.language .*)$/\1/" \
 > /etc/php.ini

どのように書き換わったかは、diffを見てください。

[root@localhost ~]# diff -cT /etc/php.ini.org /etc/php.ini

また、PHP8.5からデフォルトから変更された設定を抜き出すコマンドができたのでそれも見ておくといいかもしれません。

[root@localhost ~]# php --ini=diff

PHP-FPM の設定

このままだとphp-fpmが起動するプロセス数がここで使用している仮想マシンの使用用途から考えると多すぎるので設定を修正します。

主に変更する内容は下記の表の通り。

オプション名uncomment元の内容変更後の内容
pm.max_children5010
pm.max_requests500100
pm.max_spare_servers3510

上からプロセスの最大起動数プロセスを再起動する処理リクエスト数アイドル状態のプロセス最大起動数になります。「php-fpm 設定」とかで検索すれば、場面に応じた設定が出てくると思うのでそれはそれで参考にしてください。

これもsedコマンドを使って一気に書き換えます。

[root@localhost ~]# cp --preserve=contex /etc/php-fpm.d/www.conf /etc/php-fpm.d/www.conf.org
[root@localhost ~]# cat /etc/php-fpm.d/www.conf.org \
| sed -E "s/(pm.max_children =)(.*$)/\1 10/" \
| sed -E "s/;(pm.max_requests =)(.*$)/\1 100/" \
| sed -E "s/(pm.max_spare_servers =)(.*$)/\1 10/" \
 > /etc/php-fpm.d/www.conf
[root@localhost ~]# diff -cT /etc/php-fpm.d/www.conf.org /etc/php-fpm.d/www.conf

サービスの起動

php-fpmはサービスの一つとして常駐するようなものとなるので、サービスに登録して起動する必要があります。設定変更時にも、サービスを再起動する必要が出てくるので忘れずに。

まずは登録。

[root@localhost ~]# systemctl enable php-fpm

そのあとは、起動しつつ、Apacheも再起動します。

[root@localhost ~]# systemctl start php-fpm
[root@localhost ~]# systemctl restart httpd

動作確認

phpinfo() を表示するページを準備してアクセスしてみましょう。

[root@localhost ~]# echo "<?php phpinfo();" > /var/www/html/phpinfo.php

これで、ネットワーク的に問題が無ければブラウザでアクセスすれば、phpinfoが表示されます。