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_size | 〇 | 4096k | 4096k |
expose_php | On | Off | |
memory_limit | 128M | 192M | |
error_reporting | E_ALL & ~E_DEPRECATED & ~E_STRICT | E_ALL | |
display_errors | Off | On | |
post_max_size | 8M | 32M | |
upload_max_filesize | 2M | 20M | |
date.timezone | 〇 | ”Asia/Tokyo” | |
mbstring.language | 〇 | Japanese | |
mbstring.internal_encoding | 〇 | UTF-8 | |
mbstring.http_input | 〇 | UTF-8 | |
mbstring.http_output | 〇 | UTF-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_children | 50 | 10 | |
pm.max_requests | 〇 | 500 | 100 |
pm.max_spare_servers | 35 | 10 |
上からプロセスの最大起動数、プロセスを再起動する処理リクエスト数、アイドル状態のプロセス最大起動数になります。「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が表示されます。