What's?
以前、CentOS 8向けにこういう記事を書きました。
これからCentOSからAlmaLinuxやRocky Linuxを使うようになったので、あらためて書いておこうかなということで。
Remi Repositoryについて
Remi Repository自体については、こちらを参照。
Which are the goals of this repository?
Remi RepositoryからのPHPのインストール方法
Remi RepositoryからのPHPのインストール方法は、このあたりを参考に。
環境
今回の環境はこちら。Rocky Linux 9.4です。
$ cat /etc/redhat-release
Rocky Linux release 9.4 (Blue Onyx)
$ uname -srvmpio
Linux 5.14.0-427.40.1.el9_4.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Oct 16 14:57:47 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
標準のリポジトリからインストールできるPHPのバージョンを確認する
まずはRocky Linuxの標準のリポジトリからインストールできるPHPのバージョンを確認してみましょう。
$ dnf info php
メタデータの期限切れの最終確認: 0:00:21 前の 2024年10月31日 04時06分15秒 に実施しました。
利用可能なパッケージ
名前 : php
バージョン : 8.0.30
リリース : 1.el9_2
Arch : x86_64
サイズ : 7.7 k
ソース : php-8.0.30-1.el9_2.src.rpm
リポジトリー : appstream
概要 : PHP scripting language for creating dynamic web sites
URL : http://www.php.net/
ライセンス : PHP and Zend and BSD and MIT and ASL 1.0 and NCSA
説明 : PHP is an HTML-embedded scripting language. PHP attempts to make it
: easy for developers to write dynamically generated web pages. PHP also
: offers built-in database integration for several commercial and
: non-commercial database management systems, so writing a
: database-enabled webpage with PHP is fairly simple. The most common
: use of PHP coding is probably as a replacement for CGI scripts.
PHP 8.0ですね。
PHPのサポートバージョンを考えると、現時点でちょっと古いです。
Remi Repositoryを有効にして、PHP 8.3をインストールする
まずはRemi Repositoryを有効にします。
$ sudo dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
PHPモジュールをリセットします。
$ sudo dnf module reset php
Remi RepositoryからPHP 8.3をインストールします。
$ sudo dnf module install php:remi-8.3
一緒にインストールされるモジュールはこちら。
==================================================================================================================================================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
==================================================================================================================================================================================================================================================================
group/moduleパッケージをインストール:
php-cli x86_64 8.3.13-1.el9.remi remi-modular 5.6 M
php-common x86_64 8.3.13-1.el9.remi remi-modular 1.2 M
php-fpm x86_64 8.3.13-1.el9.remi remi-modular 1.9 M
php-mbstring x86_64 8.3.13-1.el9.remi remi-modular 581 k
php-xml x86_64 8.3.13-1.el9.remi remi-modular 224 k
依存関係のインストール:
httpd-filesystem noarch 2.4.57-11.el9_4.1 appstream 11 k
libxslt x86_64 1.1.34-9.el9 appstream 240 k
oniguruma5php x86_64 6.9.9-1.el9.remi remi-safe 219 k
弱い依存関係のインストール:
nginx-filesystem noarch 1:1.20.1-16.el9_4.1 appstream 8.1 k
モジュールプロファイルのインストール中:
php/common
モジュールストリームの有効化中:
php remi-8.3
PHP 8.3がインストールされました。
$ php --version
PHP 8.3.13 (cli) (built: Oct 22 2024 18:39:14) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.3.13, Copyright (c) Zend Technologies
Apacheやnginx向けの設定ファイルも含まれています。
$ find /etc/httpd /etc/nginx -type f
/etc/httpd/conf.d/README
/etc/httpd/conf.d/php.conf
/etc/nginx/conf.d/php-fpm.conf
/etc/nginx/default.d/php.conf
なお、この時点でインストールできるPHPモジュールはこちらですね。
$ dnf module list php
メタデータの期限切れの最終確認: 0:00:06 前の 2024年10月31日 04時14分21秒 に実施しました。
Rocky Linux 9 - AppStream
Name Stream Profiles Summary
php 8.1 common [d], devel, minimal PHP scripting language
php 8.2 common [d], devel, minimal PHP scripting language
Remi's Modular repository for Enterprise Linux 9 - x86_64
Name Stream Profiles Summary
php remi-7.4 common [d], devel, minimal PHP scripting language
php remi-8.0 common [d], devel, minimal PHP scripting language
php remi-8.1 common [d], devel, minimal PHP scripting language
php remi-8.2 common [d], devel, minimal PHP scripting language
php remi-8.3 common [d], devel, minimal PHP scripting language
php remi-8.4 common [d], devel, minimal PHP scripting language
ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Apacheをインストールして動作確認する
Remi RepositoryからPHPをインストールした時に、Apacheの設定ファイルが含まれていました。
$ grep -v '^ *#' /etc/httpd/conf.d/php.conf
<Files ".user.ini">
<IfModule mod_authz_core.c>
Require all denied
</IfModule>
<IfModule !mod_authz_core.c>
Order allow,deny
Deny from all
Satisfy All
</IfModule>
</Files>
AddType text/html .php
DirectoryIndex index.php
<IfModule mod_php.c>
<FilesMatch \.(php|phar)$>
SetHandler application/x-httpd-php
</FilesMatch>
php_value session.save_handler "files"
php_value session.save_path "/var/lib/php/session"
php_value soap.wsdl_cache_dir "/var/lib/php/wsdlcache"
</IfModule>
<IfModule !mod_php5.c>
<IfModule !mod_php7.c>
<IfModule !mod_php.c>
SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1
<FilesMatch \.(php|phar)$>
SetHandler "proxy:unix:/run/php-fpm/www.sock|fcgi://localhost"
</FilesMatch>
</IfModule>
</IfModule>
</IfModule>
こちらがそのまま使えそうなので、Apacheをインストールして動作確認をしてみましょう。
$ sudo dnf install httpd
バージョン。
$ httpd -V
Server version: Apache/2.4.57 (Rocky Linux)
Server built: Aug 5 2024 00:00:00
Server's Module Magic Number: 20120211:127
Server loaded: APR 1.7.0, APR-UTIL 1.6.1, PCRE 8.44 2020-02-12
Compiled using: APR 1.7.0, APR-UTIL 1.6.1, PCRE 8.44 2020-02-12
Architecture: 64-bit
Server MPM: event
threaded: yes (fixed thread count)
forked: yes (variable process count)
Server compiled with....
-D APR_HAS_SENDFILE
-D APR_HAS_MMAP
-D APR_HAVE_IPV6 (IPv4-mapped addresses enabled)
-D APR_USE_PROC_PTHREAD_SERIALIZE
-D APR_USE_PTHREAD_SERIALIZE
-D SINGLE_LISTEN_UNSERIALIZED_ACCEPT
-D APR_HAS_OTHER_CHILD
-D AP_HAVE_RELIABLE_PIPED_LOGS
-D DYNAMIC_MODULE_LIMIT=256
-D HTTPD_ROOT="/etc/httpd"
-D SUEXEC_BIN="/usr/sbin/suexec"
-D DEFAULT_PIDLOG="run/httpd.pid"
-D DEFAULT_SCOREBOARD="logs/apache_runtime_status"
-D DEFAULT_ERRORLOG="logs/error_log"
-D AP_TYPES_CONFIG_FILE="conf/mime.types"
-D SERVER_CONFIG_FILE="conf/httpd.conf"
動作確認用のファイルを作成。
<?php
phpinfo();
PHP-FPMとApacheを起動。
$ sudo systemctl start php-fpm
$ sudo systemctl start httpd
あとはhttp://localhost
にアクセスして、結果を確認。
OKですね。
PHP-FPMとApacheの自動起動の有効化は必要に応じて。
$ sudo systemctl enable php-fpm
$ sudo systemctl enable httpd