公開日:2025/8/5 0:00:00

AlmaLinux 8.10

AlmaLinux 8.10 セットアップメモ

Section 5.2 Webサーバー(Apache)構築編 AppStream php8.2

About

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

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

AppStreamのバージョン等を調べる

AppStreamのモジュール管理されているのでバージョン情報等を確認します。

[root@localhost ~]# dnf module list php
AlmaLinux 8 - AppStream
Name                Stream                 Profiles                                 Summary
php                 7.2 [d]                common [d], devel, minimal               PHP scripting language
php                 7.3                    common [d], devel, minimal               PHP scripting language
php                 7.4                    common [d], devel, minimal               PHP scripting language
php                 8.0                    common [d], devel, minimal               PHP scripting language
php                 8.2                    common [d], devel, minimal               PHP scripting language

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[root@localhost ~]#

バージョンの切り替え

Laravel等のフレームワークを使う場合は、必須バージョンや対応バージョンを確認してからバージョンを設定する必要があります。
現時点(2025年7月)では、8.2 を選択しておくことになるかなと(参考PHP:Supported Versions)。 PHP8.2は、2026年の年末でセキュリティサポートが終了するので、以降もAlamaLinuxやRHEL側でバックポート対応されることを祈って運用という形になるかと思われます。どうしても新しいバージョンが……という場合は、remi(https://rpms.remirepo.net/)を頼ることになると思いますが、ちゃんと評価してから利用しましょう。

[root@localhost ~]# dnf -y module enable php:8.2
依存関係が解決しました。
========================================================================================================================
 パッケージ                  アーキテクチャー           バージョン                    リポジトリー                サイズ
========================================================================================================================
モジュールストリームの有効化中:
 nginx                                                  1.14
 php                                                    8.2

トランザクションの概要
========================================================================================================================

完了しました!
[root@localhost ~]# dnf module list php
AlmaLinux 8 - AppStream
Name                Stream                 Profiles                                 Summary
php                 7.2 [d]                common [d], devel, minimal               PHP scripting language
php                 7.3                    common [d], devel, minimal               PHP scripting language
php                 7.4                    common [d], devel, minimal               PHP scripting language
php                 8.0                    common [d], devel, minimal               PHP scripting language
php                 8.2 [e]                common [d], devel, minimal               PHP scripting language

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
[root@localhost ~]#

インストール

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

[root@localhost ~]# dnf install php php-cli php-common php-fpm \
php-gd php-json php-mbstring php-xml php-intl \
php-pdo php-pgsql \
php-pecl-apcu php-opcache
依存関係が解決しました。
========================================================================================================================
 パッケージ                    Arch         バージョン                                            リポジトリー    サイズ
========================================================================================================================
インストール:
 php                           x86_64       8.2.25-1.module_el8.10.0+3936+14b35499                appstream       1.8 M
 php-cli                       x86_64       8.2.25-1.module_el8.10.0+3936+14b35499                appstream       3.6 M
 php-common                    x86_64       8.2.25-1.module_el8.10.0+3936+14b35499                appstream       746 k
 php-fpm                       x86_64       8.2.25-1.module_el8.10.0+3936+14b35499                appstream       1.9 M
 php-gd                        x86_64       8.2.25-1.module_el8.10.0+3936+14b35499                appstream        86 k
 php-intl                      x86_64       8.2.25-1.module_el8.10.0+3936+14b35499                appstream       206 k
 php-mbstring                  x86_64       8.2.25-1.module_el8.10.0+3936+14b35499                appstream       528 k
 php-opcache                   x86_64       8.2.25-1.module_el8.10.0+3936+14b35499                appstream       415 k
 php-pdo                       x86_64       8.2.25-1.module_el8.10.0+3936+14b35499                appstream       133 k
 php-pecl-apcu                 x86_64       5.1.23-1.module_el8.10.0+3796+30ed3ef7                appstream        63 k
 php-pgsql                     x86_64       8.2.25-1.module_el8.10.0+3936+14b35499                appstream       121 k
 php-xml                       x86_64       8.2.25-1.module_el8.10.0+3936+14b35499                appstream       189 k
依存関係のインストール:
 dejavu-fonts-common           noarch       2.35-7.el8                                            baseos           73 k
 dejavu-sans-fonts             noarch       2.35-7.el8                                            baseos          1.5 M
 fontconfig                    x86_64       2.13.1-4.el8                                          baseos          273 k
 fontpackages-filesystem       noarch       1.44-22.el8                                           baseos           16 k
 gd                            x86_64       2.2.5-7.el8                                           appstream       143 k
 jbigkit-libs                  x86_64       2.1-14.el8                                            appstream        54 k
 libX11                        x86_64       1.6.8-9.el8_10                                        appstream       611 k
 libX11-common                 noarch       1.6.8-9.el8_10                                        appstream       157 k
 libXau                        x86_64       1.0.9-3.el8                                           appstream        37 k
 libXpm                        x86_64       3.5.12-11.el8                                         appstream        58 k
 libjpeg-turbo                 x86_64       1.5.3-14.el8_10                                       appstream       156 k
 libpq                         x86_64       13.20-1.el8_10                                        appstream       198 k
 libtiff                       x86_64       4.0.9-34.el8_10                                       appstream       189 k
 libwebp                       x86_64       1.0.0-11.el8_10                                       appstream       273 k
 libxcb                        x86_64       1.13.1-1.el8                                          appstream       231 k
 libxslt                       x86_64       1.1.32-6.2.el8_10                                     baseos          249 k
 nginx-filesystem              noarch       1:1.14.1-9.module_el8.3.0+2165+af250afe.alma          appstream        23 k
 oniguruma                     x86_64       6.8.2-3.el8                                           appstream       187 k

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

(中略)

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

PHPの設定

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

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

オプション名uncomment元の内容変更後の内容
realpath_cache_size4096k4096k
expose_phpOnOff
memory_limit128M192M
error_reportingE_ALL & ~E_DEPRECATED & ~E_STRICTE_ALL
display_errorsOffOn
post_max_size8M32M
upload_max_filesize2M20M
date.timezone”Asia/Tokyo”
mbstring.languageJapanese
mbstring.internal_encodingUTF-8
mbstring.http_inputUTF-8
mbstring.http_outputUTF-8

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

[root@localhost ~]# cp /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 192M/" \
| 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/" \
| sed -E "s/;(mbstring.internal_encoding =)(.*)$/\1 UTF-8/" \
| sed -E "s/;(mbstring.http_input =)(.*)$/\1 UTF-8/" \
| sed -E "s/;(mbstring.http_output =)(.*)$/\1 UTF-8/" \
 > /etc/php.ini 

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

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

PHP-FPM の設定

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

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

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

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

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

[root@localhost ~]# cp /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

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

[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/index.php

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