よくばりすなシステムエンジニアのブログ

サーバー・ネットワークエンジニア向けに発信しますっ!

(PHP8.1対応)【CentOS8】phpMyAdminインストール手順(nginx+php+MySQL)での設定

(PHP8.1対応)【CentOS8】phpMyAdminインストール手順(nginx+php+MySQL)での設定

こんにちは!

インフラ関連のシステムエンジニアをやっているカユラ(@kayura_SE )です。

今回は、「(PHP8.1対応)版の【CentOS8】phpMyAdminインストール手順(nginx+php+MySQL)での設定」について紹介したいと思います。

PHP8にするのは本当に大変でした。。。

私自身いろいろと躓きましたため、上から順番に実施することで「phpMyAdmin」にログインできるような構成になっております。

「root」ユーザーで作業しているため、必要に応じて「sudo」をつけてください。



名称

Ver

OS

CentOS8.7 or Linux8.7 or RHEL8.7

PHP

8.1.18-1.el8.remi

PHP-FPM

8.1.18-1.el8.remi

phpMyAdmin

5.2.1-1.el8.remi

nginx

1:1.14.1-9.module_el8.3.0+2165+af250afe

MySQL

8.0.30





(PHP7系の時と同手順)必要なパッケージのインストール

①「nginx」をインストールします。

yum install -y nginx

②「remiリポジトリ」をインストールします。

※これが無いとインストールに失敗します。

PHP系の最新のパッケージを入手可能なリポジトリです。

以下のサイトでVerが選べるのですが、Ver9はOSを9系にする必要があります。

http://rpms.remirepo.net/enterprise/

yum install -y http://rpms.remirepo.net/enterprise/remi-release-8.rpm

③「remiリポジトリ」を無効化します。

利用するときだけ明示的に指定するため、「yum」と「dnf」の両方で無効化しておきます。

dnf config-manager --disable remi-modular remi-safe
yum config-manager --disable remi-modular remi-safe

④「MySQL」をインストールします。

以下のコマンドで最新のVerを確認します。

yum info mysql
バージョン : 8.0.30

最新のVerでインストールします。

yum install -y @mysql:8.0





(PHP8系の時)必要なパッケージのインストール

※順番が重要です。

①作業前のPHPリポジトリの状況を確認します。

以下のコマンドで現在の設定と利用可能なPHPの最新のVerを確認します。

以下のコマンドで現在利用可能なPHPのバージョンを確認します。
以降の手順で標準リポジトリの「PHP7.2」を「remi-8.1」に変更していきます。

dnf module list php --enablerepo=remi-modular

(コマンド結果)
Remi's Modular repository for Enterprise Linux 8 - x86_64 508 B/s | 833 B 00:01
Remi's Modular repository for Enterprise Linux 8 - x86_64 3.0 MB/s | 3.1 kB 00:00
GPG 鍵 0x5F11735A をインポート中:
Userid : "Remi's RPM repository "
Fingerprint: 6B38 FEA7 231F 87F5 2B9C A9D8 5550 9759 5F11 735A
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-remi.el8
これでよろしいですか? [y/N]: y ※初回のみ必要
Remi's Modular repository for Enterprise Linux 8 - x86_64 313 kB/s | 1.3 MB 00:04
メタデータの期限切れの最終確認: 0:00:01 時間前の 2023年05月05日 16時47分25秒 に実施しました。
AlmaLinux 8 - AppStream
Name Stream Profiles Summary
php 7.2 [d][e] 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

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name Stream Profiles Summary
php remi-7.2 common [d], devel, minimal PHP scripting language
php remi-7.3 common [d], devel, minimal PHP scripting language
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

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled

②PHPリポジトリの設定をリセットします。

以下のコマンドでPHPのリポジトリ設定をリセットします。

dnf module reset php

③PHP8.1リポジトリを有効化し、作業後のPHPリポジトリの設定を確認します。

dnf module enable php:remi-8.1 --enablerepo=remi-modular

標準リポジトリの「PHP7.2」のenableが無くなり、remi-8.1にenable付与されていることを確認します。

dnf module list php --enablerepo=remi-modular

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

Remi's Modular repository for Enterprise Linux 8 - x86_64
Name Stream Profiles Summary
php remi-7.2 common [d], devel, minimal PHP scripting language
php remi-7.3 common [d], devel, minimal PHP scripting language
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 [e] common [d], devel, minimal PHP scripting language
php remi-8.2 common [d], devel, minimal PHP scripting language

ヒント: [d]efault, [e]nabled, [x]disabled, [i]nstalled





④「oniguruma5php」をインストールします。

これを入れないと後で前提パッケージエラーが出ます。

「remi」リポジトリからインストールしています。

yum  install --enablerepo=remi oniguruma5php -y

⑤「libicu71」をインストールします。

これを入れないと後で前提パッケージエラーが出ます。

「remi」リポジトリからインストールしています。

yum install --enablerepo=remi libicu71 -y

⑥「php-mbstring」、「php-intl」、「php」、「php-mysqlnd」をインストールします。

「php-fpm」は勝手に入るので大丈夫です!

「remi-modular」リポジトリからインストールしています。

yum install --enablerepo=remi-modular php-mbstring php-intl php php-mysqlnd -y

⑦「php-posix」をインストールします。

これを入れないと後で前提パッケージエラーが出ます。

「remi-modular」リポジトリからインストールしています。

yum install --enablerepo=remi-modular php-posix -y





⑧「php-zip」をインストールします。

これを入れないと後で前提パッケージエラーが出ます。

「remi-modular」リポジトリからインストールしています。

dnf install --enablerepo=remi-modular php-zip -y

⑨「libraqm」をインストールします。

これを入れないと後で前提パッケージエラーが出ます。

「epel」リポジトリからインストールしています。

yum install --enablerepo=epel libraqm -y

⑩「libimagequant」をインストールします。

これを入れないと後で前提パッケージエラーが出ます。

「remi」リポジトリからインストールしています。

yum install --enablerepo=remi libimagequant -y

⑪「libavif」をインストールします。

これを入れないと後で前提パッケージエラーが出ます。

「epel」リポジトリからインストールしています。

yum install --enablerepo=epel libavif -y

⑫「gd3php」をインストールします。

これを入れないと後で前提パッケージエラーが出ます。

「remi」リポジトリからインストールしています。

yum install --enablerepo=remi gd3php -y





⑬「php-gd」をインストールします。

これを入れないと後で前提パッケージエラーが出ます。

「remi-modular」リポジトリからインストールしています。

yum install --enablerepo=remi-modular php-gd -y

⑭「phpMyAdmin」をインストールします。

ついに本題のphpMyAdminのインストールです。

「remi」リポジトリからインストールしています。

yum install --enablerepo=remi phpMyAdmin -y





サービスの起動&自動起動設定

①「nginx」のサービスを起動し、自動起動を有効化インストールします。

systemctl start nginx
systemctl enable nginx

②「php-fpm」のサービスを起動し、自動起動を有効化インストールします。

systemctl start php-fpm
systemctl enable php-fpm

③「mysqld」のサービスを起動し、自動起動を有効化インストールします。

systemctl start mysqld
systemctl enable mysqld





Configファイルの設定

「php-fpm」の設定

「php-fpm」の設定
vim /etc/php-fpm.d/www.conf

デフォルトの実行ユーザーとグループが「apache」になっているため、「nginx」に変更します。

■変更前
listen = ''
user = apache
group = apache

↓↓↓↓↓↓変更後↓↓↓↓↓↓

■変更後
listen = /var/run/php-fpm/php-fpm.sock
user = nginx
group = nginx

「php」の設定

「php」の設定
vim /etc/php.ini

デフォルトの「PHPのセッション」の保存先が「/tmp」になっているため、「/var/lib/php/session」に変更します。

■変更前
;session.save_path = "/tmp"

↓↓↓↓↓↓変更後↓↓↓↓↓↓

■変更後
session.save_path = "/var/lib/php/session"

「nginx」の設定

「nginx」の設定
vim /etc/nginx/conf.d/phpmyadmin.conf

新規にファイルを作成します。

■変更前
ファイルなし

↓↓↓↓↓↓変更後↓↓↓↓↓↓

■変更後

「192.168.1.180」の部分は、サーバー自身のIPまたはFQDNに変更してください。





Configファイルの権限変更

「/var/lib/php/session」の権限設定

「/var/lib/php/session」の権限設定

nginxが「/var/lib/php/session」にアクセスできるように権限を変更します。

chown -R root.nginx /var/lib/php/session

サービスの再起動

①「nginx」のサービスを再起動します。

systemctl restart nginx

②「php-fpm」のサービスを再起動します。

systemctl restart php-fpm

③「mysqld」のサービスを再起動します。

systemctl restart mysqld





MySQLの初期設定とユーザー作成

①初期設定用のコマンドを実行します。

 mysql_secure_installation
 ■対話形式の応答:
Press y|Y for Yes, any other key for No: y
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 0
New password:(rootユーザーのパスワードを入力)
Re-enter new password:(rootユーザーのパスワードを再入力)
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y

②「root」ユーザーでMySQLにログインします。

mysql -u root -p
Enter password:(rootユーザーに設定したパスワード)

③「全権限のあるユーザー」を作成します。

黄色の部分は任意のものを設定してください。

mysql>CREATE USER 'ユーザー名'@'localhost' IDENTIFIED BY 'パスワード';
mysql>GRANT ALL ON *.* TO 'ユーザー名'@'localhost' WITH GRANT OPTION;
mysql>FLUSH PRIVILEGES;
mysql>exit

④「全権限のあるユーザー」でログインできることを確認します。

mysql -u ユーザー名 -p
Enter password:(全権限のあるユーザーに設定したパスワード)





phpMyAdminへのログイン

「192.168.1.180」の部分は、サーバー自身のIPまたはFQDNに変更してください。

①Webブラウザで以下のURLにアクセスします。
http://192.168.1.180/index.php

phpMyAdminのログイン画面
phpMyAdminのログイン画面

②作成したMySQLのユーザー名とパスワードを入力してログインします。

phpMyAdminのログイン後
phpMyAdminのログイン後





phpMyAdminをHTTPS化する手順を以下にまとめたため、ご覧ください。

www.kayura-se.com

(PHP8.1対応)【CentOS8】phpMyAdminインストール手順(nginx+php+MySQL)での設定の手順は以上となります。

PHP8にするのは前提パッケージエラーばかりで本当に大変でした。。。

次回はphpMyAdminの活用方法について説明したいと思います。

現在悩んでいる方はTwitterでご連絡ください。

私も辛い日々を経験したのであなたの助けになりたいです。

カユラ(@kayura_SE )