Alibaba Cloud の Simple Application Server(以下、SASと記載) の Linux インスタンス上に WordPress 環境を一から作る話です。 元々は SAS で標準提供されている WordPress イメージで簡単かつ短時間で WordPress 環境を立ち上げたのですが MySQL や PHP のバージョンが古くすでに EOL を迎えていることがわかりました(こちらの記事)。 不特定多数への Web サイトのインターネット公開という利用目的なのでセキュリティ対策を十分に行えないのはよろしくありません。 というわけで Apache や MySQL 、PHP 含めて一から環境構築します。 定期的に各ソフトウェアのバージョンアップも今後行っていくと思うので初期構築の内容を自分のために残していきます。
目次
構築する LAMP 環境について
以下の環境を構築していきます。
CentOS Stream 9 の最新化
まずは環境を最新化します。 “dnf update” を実行します。 本当は root での実行はよろしくないのですが個人環境で sudo 使うのは面倒で root で作業しています(以下同)。
先日、最新化済ということもあり Nothing to do でした。
# dnf update
CentOS Stream 9 - BaseOS 17 kB/s | 3.9 kB 00:00
CentOS Stream 9 - AppStream 21 kB/s | 4.4 kB 00:00
CentOS Stream 9 - Extras packages 16 kB/s | 3.0 kB 00:00
Dependencies resolved.
Nothing to do.
Complete!
Apache のインストール
“dnf install httpd” を実行します。
# dnf install httpd
Last metadata expiration check: 0:02:44 ago on Sat 20 Apr 2024 03:53:04 PM CST.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
httpd x86_64 2.4.57-8.el9 appstream 48 k
Installing dependencies:
apr x86_64 1.7.0-12.el9 appstream 123 k
apr-util x86_64 1.6.1-23.el9 appstream 95 k
apr-util-bdb x86_64 1.6.1-23.el9 appstream 13 k
centos-logos-httpd noarch 90.4-1.el9 appstream 252 k
httpd-core x86_64 2.4.57-8.el9 appstream 1.5 M
httpd-filesystem noarch 2.4.57-8.el9 appstream 13 k
httpd-tools x86_64 2.4.57-8.el9 appstream 83 k
Installing weak dependencies:
apr-util-openssl x86_64 1.6.1-23.el9 appstream 15 k
mod_http2 x86_64 2.0.26-1.el9 appstream 163 k
mod_lua x86_64 2.4.57-8.el9 appstream 60 k
Transaction Summary
================================================================================
Install 11 Packages
Total download size: 2.4 M
Installed size: 6.4 M
Is this ok [y/N]: y
Downloading Packages:
(1/11): apr-util-bdb-1.6.1-23.el9.x86_64.rpm 77 kB/s | 13 kB 00:00
(2/11): apr-util-1.6.1-23.el9.x86_64.rpm 345 kB/s | 95 kB 00:00
(3/11): apr-1.7.0-12.el9.x86_64.rpm 409 kB/s | 123 kB 00:00
(4/11): apr-util-openssl-1.6.1-23.el9.x86_64.rp 107 kB/s | 15 kB 00:00
(5/11): httpd-2.4.57-8.el9.x86_64.rpm 321 kB/s | 48 kB 00:00
(6/11): centos-logos-httpd-90.4-1.el9.noarch.rp 1.2 MB/s | 252 kB 00:00
(7/11): httpd-core-2.4.57-8.el9.x86_64.rpm 7.9 MB/s | 1.5 MB 00:00
(8/11): httpd-filesystem-2.4.57-8.el9.noarch.rp 82 kB/s | 13 kB 00:00
(9/11): httpd-tools-2.4.57-8.el9.x86_64.rpm 628 kB/s | 83 kB 00:00
(10/11): mod_lua-2.4.57-8.el9.x86_64.rpm 330 kB/s | 60 kB 00:00
(11/11): mod_http2-2.0.26-1.el9.x86_64.rpm 354 kB/s | 163 kB 00:00
--------------------------------------------------------------------------------
Total 2.4 MB/s | 2.4 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : apr-1.7.0-12.el9.x86_64 1/11
Installing : apr-util-bdb-1.6.1-23.el9.x86_64 2/11
Installing : apr-util-openssl-1.6.1-23.el9.x86_64 3/11
Installing : apr-util-1.6.1-23.el9.x86_64 4/11
Installing : httpd-tools-2.4.57-8.el9.x86_64 5/11
Running scriptlet: httpd-filesystem-2.4.57-8.el9.noarch 6/11
Installing : httpd-filesystem-2.4.57-8.el9.noarch 6/11
Installing : httpd-core-2.4.57-8.el9.x86_64 7/11
Installing : mod_lua-2.4.57-8.el9.x86_64 8/11
Installing : centos-logos-httpd-90.4-1.el9.noarch 9/11
Installing : mod_http2-2.0.26-1.el9.x86_64 10/11
Installing : httpd-2.4.57-8.el9.x86_64 11/11
Running scriptlet: httpd-2.4.57-8.el9.x86_64 11/11
Verifying : apr-1.7.0-12.el9.x86_64 1/11
Verifying : apr-util-1.6.1-23.el9.x86_64 2/11
Verifying : apr-util-bdb-1.6.1-23.el9.x86_64 3/11
Verifying : apr-util-openssl-1.6.1-23.el9.x86_64 4/11
Verifying : centos-logos-httpd-90.4-1.el9.noarch 5/11
Verifying : httpd-2.4.57-8.el9.x86_64 6/11
Verifying : httpd-core-2.4.57-8.el9.x86_64 7/11
Verifying : httpd-filesystem-2.4.57-8.el9.noarch 8/11
Verifying : httpd-tools-2.4.57-8.el9.x86_64 9/11
Verifying : mod_http2-2.0.26-1.el9.x86_64 10/11
Verifying : mod_lua-2.4.57-8.el9.x86_64 11/11
Installed:
apr-1.7.0-12.el9.x86_64 apr-util-1.6.1-23.el9.x86_64
apr-util-bdb-1.6.1-23.el9.x86_64 apr-util-openssl-1.6.1-23.el9.x86_64
centos-logos-httpd-90.4-1.el9.noarch httpd-2.4.57-8.el9.x86_64
httpd-core-2.4.57-8.el9.x86_64 httpd-filesystem-2.4.57-8.el9.noarch
httpd-tools-2.4.57-8.el9.x86_64 mod_http2-2.0.26-1.el9.x86_64
mod_lua-2.4.57-8.el9.x86_64
Complete!
Apache の自動起動を設定します。 最初に systemctl status で状態を確認します(disabledなこと)。 その後に enable して start して、最後に status で enabled になったことを確認します。 本当は OS を再起動して自動起動するか確認するとよいですがそれは一番最後にまとめてやることにします。
# systemctl status httpd.service
○ httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; preset: d>
Active: inactive (dead)
Docs: man:httpd.service(8)
# systemctl enable httpd.service
Created symlink /etc/systemd/system/multi-user.target.wants/httpd.service → /usr/lib/systemd/system/httpd.service.
# systemctl start httpd.service
# systemctl status httpd.service
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; enabled; preset: di>
Active: active (running) since Sat 2024-04-20 16:04:10 CST; 2s ago
Docs: man:httpd.service(8)
Main PID: 93957 (httpd)
Status: "Started, listening on: port 80"
Tasks: 177 (limit: 4330)
Memory: 22.6M
CPU: 94ms
CGroup: /system.slice/httpd.service
├─93957 /usr/sbin/httpd -DFOREGROUND
├─93958 /usr/sbin/httpd -DFOREGROUND
├─93959 /usr/sbin/httpd -DFOREGROUND
├─93960 /usr/sbin/httpd -DFOREGROUND
└─93961 /usr/sbin/httpd -DFOREGROUND
Apr 20 16:04:10 iZ6wecejxdhbz99rwzywmpZ systemd[1]: Starting The Apache HTTP Se>
Apr 20 16:04:10 iZ6wecejxdhbz99rwzywmpZ httpd[93957]: AH00558: httpd: Could not>
Apr 20 16:04:10 iZ6wecejxdhbz99rwzywmpZ systemd[1]: Started The Apache HTTP Ser>
Apr 20 16:04:10 iZ6wecejxdhbz99rwzywmpZ httpd[93957]: Server configured, listen
Web ブラウザから Alibaba Cloud Simple Application Server に割り当てられた Public IP アドレスにアクセスします。
“HTTP Server TEST PAGE” と Apache の初期ページが表示されることを確認します。
MySQL のインストール
# dnf install mysql-server
Last metadata expiration check: 0:18:23 ago on Sat 20 Apr 2024 03:53:04 PM CST.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
mysql-server x86_64 8.0.36-1.el9 appstream 17 M
Installing dependencies:
mariadb-connector-c-config noarch 3.2.6-1.el9 appstream 11 k
mecab x86_64 0.996-3.el9.4 appstream 356 k
mysql x86_64 8.0.36-1.el9 appstream 2.8 M
mysql-common x86_64 8.0.36-1.el9 appstream 74 k
mysql-errmsg x86_64 8.0.36-1.el9 appstream 505 k
mysql-selinux noarch 1.0.10-1.el9 appstream 37 k
protobuf-lite x86_64 3.14.0-13.el9 appstream 232 k
Transaction Summary
================================================================================
Install 8 Packages
Total download size: 21 M
Installed size: 179 M
Is this ok [y/N]: y
Downloading Packages:
(1/8): mariadb-connector-c-config-3.2.6-1.el9.n 60 kB/s | 11 kB 00:00
(2/8): mysql-8.0.36-1.el9.x86_64.rpm 11 MB/s | 2.8 MB 00:00
(3/8): mysql-common-8.0.36-1.el9.x86_64.rpm 292 kB/s | 74 kB 00:00
(4/8): mecab-0.996-3.el9.4.x86_64.rpm 702 kB/s | 356 kB 00:00
(5/8): mysql-selinux-1.0.10-1.el9.noarch.rpm 212 kB/s | 37 kB 00:00
(6/8): protobuf-lite-3.14.0-13.el9.x86_64.rpm 1.2 MB/s | 232 kB 00:00
(7/8): mysql-errmsg-8.0.36-1.el9.x86_64.rpm 938 kB/s | 505 kB 00:00
(8/8): mysql-server-8.0.36-1.el9.x86_64.rpm 12 MB/s | 17 MB 00:01
--------------------------------------------------------------------------------
Total 11 MB/s | 21 MB 00:01
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : mariadb-connector-c-config-3.2.6-1.el9.noarch 1/8
Installing : mysql-common-8.0.36-1.el9.x86_64 2/8
Installing : mysql-8.0.36-1.el9.x86_64 3/8
Installing : mysql-errmsg-8.0.36-1.el9.x86_64 4/8
Installing : protobuf-lite-3.14.0-13.el9.x86_64 5/8
Running scriptlet: mysql-selinux-1.0.10-1.el9.noarch 6/8
Installing : mysql-selinux-1.0.10-1.el9.noarch 6/8
Running scriptlet: mysql-selinux-1.0.10-1.el9.noarch 6/8
libsemanage.semanage_direct_install_info: Overriding mysql module at lower priority 100 with module at priority 200.
Installing : mecab-0.996-3.el9.4.x86_64 7/8
Running scriptlet: mysql-server-8.0.36-1.el9.x86_64 8/8
Installing : mysql-server-8.0.36-1.el9.x86_64 8/8
Running scriptlet: mysql-server-8.0.36-1.el9.x86_64 8/8
Running scriptlet: mysql-selinux-1.0.10-1.el9.noarch 8/8
Running scriptlet: mysql-server-8.0.36-1.el9.x86_64 8/8
Verifying : mariadb-connector-c-config-3.2.6-1.el9.noarch 1/8
Verifying : mecab-0.996-3.el9.4.x86_64 2/8
Verifying : mysql-8.0.36-1.el9.x86_64 3/8
Verifying : mysql-common-8.0.36-1.el9.x86_64 4/8
Verifying : mysql-errmsg-8.0.36-1.el9.x86_64 5/8
Verifying : mysql-selinux-1.0.10-1.el9.noarch 6/8
Verifying : mysql-server-8.0.36-1.el9.x86_64 7/8
Verifying : protobuf-lite-3.14.0-13.el9.x86_64 8/8
Installed:
mariadb-connector-c-config-3.2.6-1.el9.noarch
mecab-0.996-3.el9.4.x86_64
mysql-8.0.36-1.el9.x86_64
mysql-common-8.0.36-1.el9.x86_64
mysql-errmsg-8.0.36-1.el9.x86_64
mysql-selinux-1.0.10-1.el9.noarch
mysql-server-8.0.36-1.el9.x86_64
protobuf-lite-3.14.0-13.el9.x86_64
Complete!
dnf コマンド実行時のログは上記の通りなのですが mariadb-connector-c-config という PKG がインストールされています。 CentOS 9 は初めて使う状態で知見もないので Google Gemini に聞いてみます。
CentOS stream9 に MySQL をインストールしました。 以下がその際の dnf コマンドの実行結果です。 Mariadb が含まれている理由を教えてください。
# dnf install mysql-server
(以下略)
CentOS Stream 9 に MySQL をインストールすると MariaDB がインストールされる理由
CentOS Stream 9 で dnf install mysql-server コマンドを実行すると、MariaDBが一緒にインストールされるのは、CentOS Stream 9がデフォルトでMySQLではなくMariaDBを採用しているためです。
MariaDBがデフォルトとなった理由
コミュニティ主導の開発: MariaDBは、MySQLのオリジナル開発者であるMonty Widenius氏と活発なオープンソースコミュニティによって開発されています。そのため、継続的な開発が保証されており、OracleによるMySQL買収後に発生したようなライセンス問題のリスクがありません。
機能と性能: MariaDBは、標準のMySQLよりも革新的な機能やパフォーマンス上の利点を備えていることが多く、多くの場合で互換性も保たれています。
今回のインストール内容
今回インストールしたmysql-serverパッケージには、MariaDBの実装が含まれています。また、MySQLのツールやクライアントライブラリの中には、mariadb-connector-c-configのようなMariaDBコンポーネントに依存しているものがあります。
影響
機能性: MariaDBはMySQLとほぼ互換性があるため、ほとんどの場合、MySQLと同様に使用することができます。
潜在的なわずかな違い: より高度なユースケースや特殊なシナリオでは、MariaDBとOracle版MySQL間で些細な違いや追加機能が存在する場合があります。
参考情報
CentOS Stream 9におけるMariaDBの詳細: [無効な URL を削除しました]
MariaDB公式サイト: https://mariadb.org/
MySQLとの互換性: [無効な URL を削除しました]
その他
MariaDBとMySQLの関係や、具体的な違いについて詳しく知りたい場合は、お気軽にお尋ねください。
Gemini からの回答が正しいとすると CentOS Stream 9 のデフォルトは MySQL ではなく MariaDB となっていてリポジトリからインストールされた mysql-server は MariaDB の実装も含まれるとのこと。 MySQL と MariaDB は全く同じではないことは知っていますがとりあえず作業を進めることにします。 個人のブログ用の WordPress なので動けばよいので作業を進めてみて動かなければまた考えることにします。
Apache の時と同様にサービスの自動起動の設定を行います。
# systemctl status mysqld
○ mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; disabled; preset: >
Active: inactive (dead)
# systemctl enable mysqld
Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/systemd/system/mysqld.service.
# systemctl start mysqld
# systemctl status mysqld
● mysqld.service - MySQL 8.0 database server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; preset: d>
Active: active (running) since Sat 2024-04-20 16:24:33 CST; 7s ago
Process: 94611 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, s>
Process: 94633 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.servic>
Main PID: 94710 (mysqld)
Status: "Server is operational"
Tasks: 38 (limit: 4330)
Memory: 366.9M
CPU: 5.601s
CGroup: /system.slice/mysqld.service
└─94710 /usr/libexec/mysqld --basedir=/usr
Apr 20 16:24:26 iZ6wecejxdhbz99rwzywmpZ systemd[1]: Starting MySQL 8.0 database>
Apr 20 16:24:26 iZ6wecejxdhbz99rwzywmpZ mysql-prepare-db-dir[94633]: Initializi>
Apr 20 16:24:33 iZ6wecejxdhbz99rwzywmpZ systemd[1]: Started MySQL 8.0 database
セキュリティ強化のために mysql_secure_installation を実行します。
# mysql_secure_installation
Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: y
There are three levels of password validation policy:
LOW Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Please set the password for root here.
New password: **********
Re-enter new password: **********
Estimated strength of the password: 100
Do you wish to continue with the password provided?(Press y|Y for Yes, any other key for No) : y
By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : y
Success.
Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : y
Success.
By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : y
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : y
Success.
All done!
MySQL にログインできることを確認します。
# mysql -u root -p
Enter password: **********
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.36 Source distribution
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
PHP のインストール
php をインストールします。 まず、WordPress が立ち上がる最低限として php と php-mysqld の2つをインストールします。 おそらく他に GD とか求められるとは思いますがそれは WordPress が立ち上がってから WordPress の管理画面のサイトヘルスから確認しながら適宜対応することにします。
# dnf install php php-mysqlnd
Last metadata expiration check: 0:55:57 ago on Sat 20 Apr 2024 03:53:04 PM CST.
Dependencies resolved.
================================================================================
Package Architecture Version Repository Size
================================================================================
Installing:
php x86_64 8.0.30-1.el9 appstream 4.7 k
php-mysqlnd x86_64 8.0.30-1.el9 appstream 150 k
Installing dependencies:
nginx-filesystem noarch 1:1.22.1-2.el9 appstream 12 k
php-common x86_64 8.0.30-1.el9 appstream 681 k
php-pdo x86_64 8.0.30-1.el9 appstream 82 k
Installing weak dependencies:
php-cli x86_64 8.0.30-1.el9 appstream 3.1 M
php-fpm x86_64 8.0.30-1.el9 appstream 1.6 M
php-mbstring x86_64 8.0.30-1.el9 appstream 469 k
php-opcache x86_64 8.0.30-1.el9 appstream 510 k
php-xml x86_64 8.0.30-1.el9 appstream 133 k
Transaction Summary
================================================================================
Install 10 Packages
Total download size: 6.7 M
Installed size: 36 M
Is this ok [y/N]: y
Downloading Packages:
(1/10): nginx-filesystem-1.22.1-2.el9.noarch.rp 56 kB/s | 12 kB 00:00
(2/10): php-8.0.30-1.el9.x86_64.rpm 22 kB/s | 4.7 kB 00:00
(3/10): php-common-8.0.30-1.el9.x86_64.rpm 3.5 MB/s | 681 kB 00:00
(4/10): php-fpm-8.0.30-1.el9.x86_64.rpm 7.6 MB/s | 1.6 MB 00:00
(5/10): php-cli-8.0.30-1.el9.x86_64.rpm 5.9 MB/s | 3.1 MB 00:00
(6/10): php-mbstring-8.0.30-1.el9.x86_64.rpm 3.2 MB/s | 469 kB 00:00
(7/10): php-pdo-8.0.30-1.el9.x86_64.rpm 573 kB/s | 82 kB 00:00
(8/10): php-opcache-8.0.30-1.el9.x86_64.rpm 2.7 MB/s | 510 kB 00:00
(9/10): php-mysqlnd-8.0.30-1.el9.x86_64.rpm 383 kB/s | 150 kB 00:00
(10/10): php-xml-8.0.30-1.el9.x86_64.rpm 873 kB/s | 133 kB 00:00
--------------------------------------------------------------------------------
Total 7.8 MB/s | 6.7 MB 00:00
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : php-common-8.0.30-1.el9.x86_64 1/10
Installing : php-pdo-8.0.30-1.el9.x86_64 2/10
Installing : php-cli-8.0.30-1.el9.x86_64 3/10
Installing : php-mbstring-8.0.30-1.el9.x86_64 4/10
Installing : php-opcache-8.0.30-1.el9.x86_64 5/10
Installing : php-xml-8.0.30-1.el9.x86_64 6/10
Running scriptlet: nginx-filesystem-1:1.22.1-2.el9.noarch 7/10
Installing : nginx-filesystem-1:1.22.1-2.el9.noarch 7/10
Installing : php-fpm-8.0.30-1.el9.x86_64 8/10
Running scriptlet: php-fpm-8.0.30-1.el9.x86_64 8/10
Installing : php-8.0.30-1.el9.x86_64 9/10
Installing : php-mysqlnd-8.0.30-1.el9.x86_64 10/10
Running scriptlet: php-mysqlnd-8.0.30-1.el9.x86_64 10/10
Verifying : nginx-filesystem-1:1.22.1-2.el9.noarch 1/10
Verifying : php-8.0.30-1.el9.x86_64 2/10
Verifying : php-cli-8.0.30-1.el9.x86_64 3/10
Verifying : php-common-8.0.30-1.el9.x86_64 4/10
Verifying : php-fpm-8.0.30-1.el9.x86_64 5/10
Verifying : php-mbstring-8.0.30-1.el9.x86_64 6/10
Verifying : php-mysqlnd-8.0.30-1.el9.x86_64 7/10
Verifying : php-opcache-8.0.30-1.el9.x86_64 8/10
Verifying : php-pdo-8.0.30-1.el9.x86_64 9/10
Verifying : php-xml-8.0.30-1.el9.x86_64 10/10
Installed:
nginx-filesystem-1:1.22.1-2.el9.noarch php-8.0.30-1.el9.x86_64
php-cli-8.0.30-1.el9.x86_64 php-common-8.0.30-1.el9.x86_64
php-fpm-8.0.30-1.el9.x86_64 php-mbstring-8.0.30-1.el9.x86_64
php-mysqlnd-8.0.30-1.el9.x86_64 php-opcache-8.0.30-1.el9.x86_64
php-pdo-8.0.30-1.el9.x86_64 php-xml-8.0.30-1.el9.x86_64
Complete!
php のバージョンを確認します。 8.0.30 です。 8.0系はすでに EOL を迎えています。。 最低でも 8.1 、出来れば最新の 8.3 をインストールしたい (WordPress 観点だと 8.2 と 8.3 は制限ありなので 8.1 が良いという考えもあり。ただ8.1は2025年に EOL が来るというてんはデメリット)。
# php -v
PHP 8.0.30 (cli) (built: Aug 3 2023 17:13:08) ( NTS gcc x86_64 )
Copyright (c) The PHP Group
Zend Engine v4.0.30, Copyright (c) Zend Technologies
with Zend OPcache v8.0.30, Copyright (c), by Zend Technologies
8.0 の phpとphp-mysqlnd を削除します。
# dnf remove php php-mysqlnd
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Removing:
php x86_64 8.0.30-1.el9 @appstream 0
php-mysqlnd x86_64 8.0.30-1.el9 @appstream 450 k
Removing unused dependencies:
nginx-filesystem noarch 1:1.22.1-2.el9 @appstream 0
php-cli x86_64 8.0.30-1.el9 @appstream 16 M
php-common x86_64 8.0.30-1.el9 @appstream 7.8 M
php-fpm x86_64 8.0.30-1.el9 @appstream 8.2 M
php-mbstring x86_64 8.0.30-1.el9 @appstream 1.0 M
php-opcache x86_64 8.0.30-1.el9 @appstream 1.3 M
php-pdo x86_64 8.0.30-1.el9 @appstream 229 k
php-xml x86_64 8.0.30-1.el9 @appstream 415 k
Transaction Summary
================================================================================
Remove 10 Packages
Freed space: 36 M
Is this ok [y/N]: y
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Erasing : php-8.0.30-1.el9.x86_64 1/10
Running scriptlet: php-fpm-8.0.30-1.el9.x86_64 2/10
Erasing : php-fpm-8.0.30-1.el9.x86_64 2/10
Erasing : php-cli-8.0.30-1.el9.x86_64 3/10
Erasing : php-mbstring-8.0.30-1.el9.x86_64 4/10
Erasing : php-opcache-8.0.30-1.el9.x86_64 5/10
Erasing : php-xml-8.0.30-1.el9.x86_64 6/10
Erasing : php-mysqlnd-8.0.30-1.el9.x86_64 7/10
Erasing : nginx-filesystem-1:1.22.1-2.el9.noarch 8/10
Erasing : php-pdo-8.0.30-1.el9.x86_64 9/10
Erasing : php-common-8.0.30-1.el9.x86_64 10/10
Running scriptlet: php-common-8.0.30-1.el9.x86_64 10/10
Verifying : nginx-filesystem-1:1.22.1-2.el9.noarch 1/10
Verifying : php-8.0.30-1.el9.x86_64 2/10
Verifying : php-cli-8.0.30-1.el9.x86_64 3/10
Verifying : php-common-8.0.30-1.el9.x86_64 4/10
Verifying : php-fpm-8.0.30-1.el9.x86_64 5/10
Verifying : php-mbstring-8.0.30-1.el9.x86_64 6/10
Verifying : php-mysqlnd-8.0.30-1.el9.x86_64 7/10
Verifying : php-opcache-8.0.30-1.el9.x86_64 8/10
Verifying : php-pdo-8.0.30-1.el9.x86_64 9/10
Verifying : php-xml-8.0.30-1.el9.x86_64 10/10
Removed:
nginx-filesystem-1:1.22.1-2.el9.noarch php-8.0.30-1.el9.x86_64
php-cli-8.0.30-1.el9.x86_64 php-common-8.0.30-1.el9.x86_64
php-fpm-8.0.30-1.el9.x86_64 php-mbstring-8.0.30-1.el9.x86_64
php-mysqlnd-8.0.30-1.el9.x86_64 php-opcache-8.0.30-1.el9.x86_64
php-pdo-8.0.30-1.el9.x86_64 php-xml-8.0.30-1.el9.x86_64
Complete!
php8.3 をインストールするために remi リポジトリを追加します。 合わせて epel も。
# dnf install https://rpms.remirepo.net/enterprise/remi-release-9.rpm
Last metadata expiration check: 1:09:58 ago on Sat 20 Apr 2024 03:53:04 PM CST.
remi-release-9.rpm 29 kB/s | 30 kB 00:01
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
remi-release noarch 9.3-3.el9.remi @commandline 30 k
Installing dependencies:
epel-release noarch 9-7.el9 extras-common 19 k
Installing weak dependencies:
epel-next-release noarch 9-7.el9 extras-common 8.1 k
Transaction Summary
================================================================================
Install 3 Packages
Total size: 57 k
Total download size: 27 k
Installed size: 60 k
Is this ok [y/N]: y
Downloading Packages:
(1/2): epel-next-release-9-7.el9.noarch.rpm 32 kB/s | 8.1 kB 00:00
(2/2): epel-release-9-7.el9.noarch.rpm 70 kB/s | 19 kB 00:00
--------------------------------------------------------------------------------
Total 96 kB/s | 27 kB 00:00
CentOS Stream 9 - Extras packages 2.1 MB/s | 2.1 kB 00:00
Importing GPG key 0x1D997668:
Userid : "CentOS Extras SIG (https://wiki.centos.org/SpecialInterestGroup) <security@centos.org>"
Fingerprint: 363F C097 2F64 B699 AED3 968E 1FF6 A217 1D99 7668
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-SIG-Extras-SHA512
Is this ok [y/N]: y
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : epel-release-9-7.el9.noarch 1/3
Running scriptlet: epel-release-9-7.el9.noarch 1/3
Many EPEL packages require the CodeReady Builder (CRB) repository.
It is recommended that you run /usr/bin/crb enable to enable the CRB repository.
Installing : epel-next-release-9-7.el9.noarch 2/3
Installing : remi-release-9.3-3.el9.remi.noarch 3/3
Running scriptlet: remi-release-9.3-3.el9.remi.noarch 3/3
(省略)
ここでシステムが応答しない事象が発生します。 結果としてはメモリ不足とわかり1GBから2GBメモリの SAS インスタンスに変更しています(その顛末はこちら)。
php83とphp83-php-mysqlndをインストールします。
# dnf install php83 php83-php-mysqlnd
Last metadata expiration check: 0:55:05 ago on Sat 20 Apr 2024 08:14:49 PM CST.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
php83 x86_64 8.3-1.el9.remi remi-safe 7.2 k
php83-php-mysqlnd x86_64 8.3.6-1.el9.remi remi-safe 148 k
Installing dependencies:
capstone x86_64 4.0.2-10.el9 appstream 767 k
environment-modules x86_64 5.3.0-1.el9 baseos 587 k
libsodium x86_64 1.0.18-8.el9 epel 161 k
oniguruma5php x86_64 6.9.9-1.el9.remi remi-safe 219 k
php83-php-cli x86_64 8.3.6-1.el9.remi remi-safe 3.7 M
php83-php-common x86_64 8.3.6-1.el9.remi remi-safe 698 k
php83-php-pdo x86_64 8.3.6-1.el9.remi remi-safe 91 k
php83-runtime x86_64 8.3-1.el9.remi remi-safe 1.1 M
scl-utils x86_64 1:2.0.3-4.el9 appstream 37 k
tcl x86_64 1:8.6.10-7.el9 baseos 1.1 M
Installing weak dependencies:
php83-php-fpm x86_64 8.3.6-1.el9.remi remi-safe 1.9 M
php83-php-mbstring x86_64 8.3.6-1.el9.remi remi-safe 529 k
php83-php-opcache x86_64 8.3.6-1.el9.remi remi-safe 356 k
php83-php-sodium x86_64 8.3.6-1.el9.remi remi-safe 43 k
php83-php-xml x86_64 8.3.6-1.el9.remi remi-safe 152 k
Transaction Summary
================================================================================
Install 17 Packages
Total download size: 12 M
Installed size: 56 M
Is this ok [y/N]: y
Downloading Packages:
(1/17): environment-modules-5.3.0-1.el9.x86_64. 1.2 MB/s | 587 kB 00:00
(2/17): tcl-8.6.10-7.el9.x86_64.rpm 2.2 MB/s | 1.1 MB 00:00
(3/17): libsodium-1.0.18-8.el9.x86_64.rpm 1.6 MB/s | 161 kB 00:00
(4/17): scl-utils-2.0.3-4.el9.x86_64.rpm 188 kB/s | 37 kB 00:00
(5/17): capstone-4.0.2-10.el9.x86_64.rpm 1.1 MB/s | 767 kB 00:00
(6/17): php83-8.3-1.el9.remi.x86_64.rpm 15 kB/s | 7.2 kB 00:00
(7/17): oniguruma5php-6.9.9-1.el9.remi.x86_64.r 154 kB/s | 219 kB 00:01
(8/17): php83-php-common-8.3.6-1.el9.remi.x86_6 492 kB/s | 698 kB 00:01
(9/17): php83-php-mbstring-8.3.6-1.el9.remi.x86 2.0 MB/s | 529 kB 00:00
(10/17): php83-php-fpm-8.3.6-1.el9.remi.x86_64. 2.0 MB/s | 1.9 MB 00:00
(11/17): php83-php-cli-8.3.6-1.el9.remi.x86_64. 1.6 MB/s | 3.7 MB 00:02
(12/17): php83-php-mysqlnd-8.3.6-1.el9.remi.x86 568 kB/s | 148 kB 00:00
(13/17): php83-php-opcache-8.3.6-1.el9.remi.x86 1.4 MB/s | 356 kB 00:00
(14/17): php83-php-pdo-8.3.6-1.el9.remi.x86_64. 384 kB/s | 91 kB 00:00
(15/17): php83-php-sodium-8.3.6-1.el9.remi.x86_ 181 kB/s | 43 kB 00:00
(16/17): php83-php-xml-8.3.6-1.el9.remi.x86_64. 637 kB/s | 152 kB 00:00
(17/17): php83-runtime-8.3-1.el9.remi.x86_64.rp 3.9 MB/s | 1.1 MB 00:00
--------------------------------------------------------------------------------
Total 2.2 MB/s | 12 MB 00:05
Extra Packages for Enterprise Linux 9 - x86_64 1.5 MB/s | 1.6 kB 00:00
Importing GPG key 0x3228467C:
Userid : "Fedora (epel9) <epel@fedoraproject.org>"
Fingerprint: FF8A D134 4597 106E CE81 3B91 8A38 72BF 3228 467C
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-9
Is this ok [y/N]: y
Key imported successfully
Safe Remi's RPM repository for Enterprise Linux 3.0 MB/s | 3.1 kB 00:00
Importing GPG key 0x478F8947:
Userid : "Remi's RPM repository (https://rpms.remirepo.net/) <remi@remirepo.net>"
Fingerprint: B1AB F71E 14C9 D748 97E1 98A8 B195 27F1 478F 8947
From : /etc/pki/rpm-gpg/RPM-GPG-KEY-remi.el9
Is this ok [y/N]: y
Key imported successfully
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : oniguruma5php-6.9.9-1.el9.remi.x86_64 1/17
Installing : libsodium-1.0.18-8.el9.x86_64 2/17
Installing : capstone-4.0.2-10.el9.x86_64 3/17
Installing : tcl-1:8.6.10-7.el9.x86_64 4/17
Installing : environment-modules-5.3.0-1.el9.x86_64 5/17
Running scriptlet: environment-modules-5.3.0-1.el9.x86_64 5/17
Installing : scl-utils-1:2.0.3-4.el9.x86_64 6/17
Installing : php83-runtime-8.3-1.el9.remi.x86_64 7/17
Running scriptlet: php83-runtime-8.3-1.el9.remi.x86_64 7/17
Installing : php83-php-common-8.3.6-1.el9.remi.x86_64 8/17
Installing : php83-php-pdo-8.3.6-1.el9.remi.x86_64 9/17
Installing : php83-php-cli-8.3.6-1.el9.remi.x86_64 10/17
Installing : php83-php-fpm-8.3.6-1.el9.remi.x86_64 11/17
Running scriptlet: php83-php-fpm-8.3.6-1.el9.remi.x86_64 11/17
Installing : php83-php-mbstring-8.3.6-1.el9.remi.x86_64 12/17
Installing : php83-php-opcache-8.3.6-1.el9.remi.x86_64 13/17
Installing : php83-php-sodium-8.3.6-1.el9.remi.x86_64 14/17
Installing : php83-php-xml-8.3.6-1.el9.remi.x86_64 15/17
Installing : php83-8.3-1.el9.remi.x86_64 16/17
Installing : php83-php-mysqlnd-8.3.6-1.el9.remi.x86_64 17/17
Running scriptlet: php83-php-mysqlnd-8.3.6-1.el9.remi.x86_64 17/17
Verifying : environment-modules-5.3.0-1.el9.x86_64 1/17
Verifying : tcl-1:8.6.10-7.el9.x86_64 2/17
Verifying : capstone-4.0.2-10.el9.x86_64 3/17
Verifying : scl-utils-1:2.0.3-4.el9.x86_64 4/17
Verifying : libsodium-1.0.18-8.el9.x86_64 5/17
Verifying : oniguruma5php-6.9.9-1.el9.remi.x86_64 6/17
Verifying : php83-8.3-1.el9.remi.x86_64 7/17
Verifying : php83-php-cli-8.3.6-1.el9.remi.x86_64 8/17
Verifying : php83-php-common-8.3.6-1.el9.remi.x86_64 9/17
Verifying : php83-php-fpm-8.3.6-1.el9.remi.x86_64 10/17
Verifying : php83-php-mbstring-8.3.6-1.el9.remi.x86_64 11/17
Verifying : php83-php-mysqlnd-8.3.6-1.el9.remi.x86_64 12/17
Verifying : php83-php-opcache-8.3.6-1.el9.remi.x86_64 13/17
Verifying : php83-php-pdo-8.3.6-1.el9.remi.x86_64 14/17
Verifying : php83-php-sodium-8.3.6-1.el9.remi.x86_64 15/17
Verifying : php83-php-xml-8.3.6-1.el9.remi.x86_64 16/17
Verifying : php83-runtime-8.3-1.el9.remi.x86_64 17/17
Installed:
capstone-4.0.2-10.el9.x86_64
environment-modules-5.3.0-1.el9.x86_64
libsodium-1.0.18-8.el9.x86_64
oniguruma5php-6.9.9-1.el9.remi.x86_64
php83-8.3-1.el9.remi.x86_64
php83-php-cli-8.3.6-1.el9.remi.x86_64
php83-php-common-8.3.6-1.el9.remi.x86_64
php83-php-fpm-8.3.6-1.el9.remi.x86_64
php83-php-mbstring-8.3.6-1.el9.remi.x86_64
php83-php-mysqlnd-8.3.6-1.el9.remi.x86_64
php83-php-opcache-8.3.6-1.el9.remi.x86_64
php83-php-pdo-8.3.6-1.el9.remi.x86_64
php83-php-sodium-8.3.6-1.el9.remi.x86_64
php83-php-xml-8.3.6-1.el9.remi.x86_64
php83-runtime-8.3-1.el9.remi.x86_64
scl-utils-1:2.0.3-4.el9.x86_64
tcl-1:8.6.10-7.el9.x86_64
Complete!
php のバージョンとモジュールを確認します。
# php83 -v
PHP 8.3.6 (cli) (built: Apr 10 2024 14:21:20) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.3.6, Copyright (c) Zend Technologies
with Zend OPcache v8.3.6, Copyright (c), by Zend Technologies
# php83 -m
[PHP Modules]
bz2
calendar
Core
ctype
curl
date
dom
exif
fileinfo
filter
ftp
gettext
hash
iconv
json
libxml
mbstring
mysqli
mysqlnd
openssl
pcntl
pcre
PDO
pdo_mysql
pdo_sqlite
Phar
random
readline
Reflection
session
SimpleXML
sockets
sodium
SPL
sqlite3
standard
tokenizer
xml
xmlreader
xmlwriter
xsl
Zend OPcache
zlib
[Zend Modules]
Zend OPcache
MySQL に WordPress 用のテーブルを作成
MySQL に WordPress 用のテーブルとアカウントを事前に作成します。<username>と<password>は実際に登録する値を指定します。
# mysql -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.36 Source distribution
Copyright (c) 2000, 2024, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> CREATE DATABASE wordpress;
Query OK, 1 row affected (0.01 sec)
mysql> CREATE USER '<username>'@'localhost' IDENTIFIED BY '<password>';
Query OK, 0 rows affected (0.02 sec)
mysql> GRANT ALL ON wordpress.* TO '<username>'@'localhost';
Query OK, 0 rows affected (0.01 sec)
mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)
mysql> exit
Bye
WordPress のインストール
WordPress のインストールは公式の手順(https://developer.wordpress.org/advanced-administration/before-install/howto-install/)通りに実施することをお勧めします。 Google Gemini に聞いたやり方で進めていたら正常に動作せずに苦労した・・・(本来不要な chmod とかでの権限最小化を実施したら動かなくなった)
WordPress をダウンロードし、圧縮ファイルを /var/www/html に展開します。
# cd ~
# wget https://wordpress.org/latest.zip
--2024-04-20 21:26:17-- https://wordpress.org/latest.zip
Resolving wordpress.org (wordpress.org)... 198.143.164.252
Connecting to wordpress.org (wordpress.org)|198.143.164.252|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 26190939 (25M) [application/zip]
Saving to: ‘latest.zip’
latest.zip 100%[===================>] 24.98M 3.52MB/s in 6.7s
2024-04-20 21:26:25 (3.70 MB/s) - ‘latest.zip’ saved [26190939/26190939]
# unzip latest.zip -d /var/www/html/
(省略)
次に wp-config.php ファイルを準備します。 sample をコピーし、MySQLへの接続情報を登録します。
# cd /var/www/html/wordpress
# cp wp-config-sample.php wp-config.php
# vi wp-config.php
Apache に WordPress 用の設定を行います。
# cd /etc/httpd/conf.d
# vi wordpress.conf
<VirtualHost *:80>
ServerAdmin xxxx@xxx.xxx
DocumentRoot /var/www/html/wordpress
ServerName xxx.xxx
ServerAlias xxx.xxx.xxx
ErrorLog /var/log/httpd/wordpress_error.log
CustomLog /var/log/httpd/wordpress_access.log combined
</VirtualHost>
# cd /var/www/html
# chown -R apache:apache wordpress/
# systemctl restart httpd.service
Webブラウザからサーバにアクセスします。
http://xxx.xxx.xxx.xxx/ ※ xxx.xxx.xxx.xxx はサーバのIPアドレスや FQDN名
以下の画面が表示されれば WordPress のインストールは問題ありません。この後は WordPress の初期設定となりますがこの記事は環境構築までの記録なので初期設定の手順は割愛します。
サイトヘルスの問題「エラー 必須モジュール gd がインストールされていないか、無効化されています」
初期設定の手順は割愛しましたがサイトヘルスで大きく3つの問題があったのでその対応内容を紹介します。
1つ目の問題は必須モジュールが無い話。 gdが無いのと、その他警告ですが ImageMagicとか無いよと。
1つ以上の必須モジュールが存在しません
パフォーマンス
PHP モジュールはサイトの稼働に必要なほとんどのタスクをサーバー上で実行します。変更はサーバー管理者が実施する必要があります。
WordPress ホスティングチームでは、こうした推奨されていたり必須とされていたりするモジュールのリストをチームのハンドブック (新しいタブで開く)でメンテナンスしています。
警告 オプションのモジュール imagick がインストールされていないか、無効化されています。
警告 オプションのモジュール zip がインストールされていないか、無効化されています。
エラー 必須モジュール gd がインストールされていないか、無効化されています。
警告 オプションのモジュール intl がインストールされていないか、無効化されています。
これはメッセージに従い、不足しているPHPのモジュールをインストールしていきます。
まずはPHP8.3 の gd から。
# dnf install php83-php-gd
Last metadata expiration check: 0:01:26 ago on Sat 20 Apr 2024 10:38:33 PM CST.
Dependencies resolved.
================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
php83-php-gd x86_64 8.3.6-1.el9.remi remi-safe 46 k
Installing dependencies:
gd3php x86_64 2.3.3-9.el9.remi remi-safe 136 k
highway x86_64 1.1.0-1.el9 epel 34 k
jbigkit-libs x86_64 2.1-23.el9 appstream 53 k
libXpm x86_64 3.5.13-10.el9 appstream 59 k
libaom x86_64 3.8.2-1.el9 epel 1.8 M
libavif x86_64 0.11.1-4.el9 epel 81 k
libdav1d x86_64 1.2.1-1.el9 epel 596 k
libimagequant x86_64 2.17.0-1.el9 epel 62 k
libjxl x86_64 0.7.0-1.el9 epel 957 k
libraqm x86_64 0.8.0-1.el9 epel 19 k
libtiff x86_64 4.4.0-12.el9 appstream 198 k
libvmaf x86_64 2.3.0-2.el9 epel 177 k
libwebp x86_64 1.2.0-8.el9 appstream 277 k
rav1e-libs x86_64 0.7.1-1.el9 epel 1.0 M
svt-av1-libs x86_64 0.9.0-1.el9 epel 1.7 M
Installing weak dependencies:
jxl-pixbuf-loader x86_64 0.7.0-1.el9 epel 53 k
Transaction Summary
================================================================================
Install 17 Packages
Total download size: 7.2 M
Installed size: 22 M
Is this ok [y/N]: y
Downloading Packages:
(1/17): libXpm-3.5.13-10.el9.x86_64.rpm 309 kB/s | 59 kB 00:00
(2/17): jbigkit-libs-2.1-23.el9.x86_64.rpm 237 kB/s | 53 kB 00:00
(3/17): highway-1.1.0-1.el9.x86_64.rpm 586 kB/s | 34 kB 00:00
(4/17): jxl-pixbuf-loader-0.7.0-1.el9.x86_64.rp 1.4 MB/s | 53 kB 00:00
(5/17): libtiff-4.4.0-12.el9.x86_64.rpm 615 kB/s | 198 kB 00:00
(6/17): libwebp-1.2.0-8.el9.x86_64.rpm 1.4 MB/s | 277 kB 00:00
(7/17): libavif-0.11.1-4.el9.x86_64.rpm 1.2 MB/s | 81 kB 00:00
(8/17): libimagequant-2.17.0-1.el9.x86_64.rpm 1.8 MB/s | 62 kB 00:00
(9/17): libaom-3.8.2-1.el9.x86_64.rpm 8.1 MB/s | 1.8 MB 00:00
(10/17): libdav1d-1.2.1-1.el9.x86_64.rpm 3.1 MB/s | 596 kB 00:00
(11/17): libraqm-0.8.0-1.el9.x86_64.rpm 694 kB/s | 19 kB 00:00
(12/17): libjxl-0.7.0-1.el9.x86_64.rpm 5.3 MB/s | 957 kB 00:00
(13/17): libvmaf-2.3.0-2.el9.x86_64.rpm 3.0 MB/s | 177 kB 00:00
(14/17): rav1e-libs-0.7.1-1.el9.x86_64.rpm 1.9 MB/s | 1.0 MB 00:00
(15/17): svt-av1-libs-0.9.0-1.el9.x86_64.rpm 1.5 MB/s | 1.7 MB 00:01
(16/17): gd3php-2.3.3-9.el9.remi.x86_64.rpm 94 kB/s | 136 kB 00:01
(17/17): php83-php-gd-8.3.6-1.el9.remi.x86_64.r 47 kB/s | 46 kB 00:00
--------------------------------------------------------------------------------
Total 2.0 MB/s | 7.2 MB 00:03
Running transaction check
Transaction check succeeded.
Running transaction test
Transaction test succeeded.
Running transaction
Preparing : 1/1
Installing : libwebp-1.2.0-8.el9.x86_64 1/17
Installing : svt-av1-libs-0.9.0-1.el9.x86_64 2/17
Installing : rav1e-libs-0.7.1-1.el9.x86_64 3/17
Installing : libvmaf-2.3.0-2.el9.x86_64 4/17
Installing : libraqm-0.8.0-1.el9.x86_64 5/17
Installing : libimagequant-2.17.0-1.el9.x86_64 6/17
Installing : libdav1d-1.2.1-1.el9.x86_64 7/17
Installing : highway-1.1.0-1.el9.x86_64 8/17
Installing : jxl-pixbuf-loader-0.7.0-1.el9.x86_64 9/17
Installing : libjxl-0.7.0-1.el9.x86_64 10/17
Installing : libaom-3.8.2-1.el9.x86_64 11/17
Installing : libavif-0.11.1-4.el9.x86_64 12/17
Installing : libXpm-3.5.13-10.el9.x86_64 13/17
Installing : jbigkit-libs-2.1-23.el9.x86_64 14/17
Installing : libtiff-4.4.0-12.el9.x86_64 15/17
Installing : gd3php-2.3.3-9.el9.remi.x86_64 16/17
Installing : php83-php-gd-8.3.6-1.el9.remi.x86_64 17/17
Running scriptlet: php83-php-gd-8.3.6-1.el9.remi.x86_64 17/17
Verifying : jbigkit-libs-2.1-23.el9.x86_64 1/17
Verifying : libXpm-3.5.13-10.el9.x86_64 2/17
Verifying : libtiff-4.4.0-12.el9.x86_64 3/17
Verifying : libwebp-1.2.0-8.el9.x86_64 4/17
Verifying : highway-1.1.0-1.el9.x86_64 5/17
Verifying : jxl-pixbuf-loader-0.7.0-1.el9.x86_64 6/17
Verifying : libaom-3.8.2-1.el9.x86_64 7/17
Verifying : libavif-0.11.1-4.el9.x86_64 8/17
Verifying : libdav1d-1.2.1-1.el9.x86_64 9/17
Verifying : libimagequant-2.17.0-1.el9.x86_64 10/17
Verifying : libjxl-0.7.0-1.el9.x86_64 11/17
Verifying : libraqm-0.8.0-1.el9.x86_64 12/17
Verifying : libvmaf-2.3.0-2.el9.x86_64 13/17
Verifying : rav1e-libs-0.7.1-1.el9.x86_64 14/17
Verifying : svt-av1-libs-0.9.0-1.el9.x86_64 15/17
Verifying : gd3php-2.3.3-9.el9.remi.x86_64 16/17
Verifying : php83-php-gd-8.3.6-1.el9.remi.x86_64 17/17
Installed:
gd3php-2.3.3-9.el9.remi.x86_64 highway-1.1.0-1.el9.x86_64
jbigkit-libs-2.1-23.el9.x86_64 jxl-pixbuf-loader-0.7.0-1.el9.x86_64
libXpm-3.5.13-10.el9.x86_64 libaom-3.8.2-1.el9.x86_64
libavif-0.11.1-4.el9.x86_64 libdav1d-1.2.1-1.el9.x86_64
libimagequant-2.17.0-1.el9.x86_64 libjxl-0.7.0-1.el9.x86_64
libraqm-0.8.0-1.el9.x86_64 libtiff-4.4.0-12.el9.x86_64
libvmaf-2.3.0-2.el9.x86_64 libwebp-1.2.0-8.el9.x86_64
php83-php-gd-8.3.6-1.el9.remi.x86_64 rav1e-libs-0.7.1-1.el9.x86_64
svt-av1-libs-0.9.0-1.el9.x86_64
Complete!
他、警告が出ているものもインストール。これでモジュールに関する問題は解消です。
# dnf install php83-php-pecl-imagick-im7
# dnf install php83-php-pecl-zip
# dnf install php83-php-intl
サイトヘルスの問題「cURL error 28: Connection timed out after 10000 milliseconds」
2つ目の問題は REST API のレスポンスが遅いとのこと。
REST API でエラーが発生しました
パフォーマンス
REST API は WordPress や他のアプリケーションがサーバーと通信する手段の1つです。たとえば、ブロックエディターの画面は投稿や固定ページの表示や保存のために REST API を使用しています。
REST API のテスト時に、エラーが発生しました:
REST API エンドポイント: http://XXX.XXX.XXX.XXX/index.php?rest_route=%2Fwp%2Fv2%2Ftypes%2Fpost&context=edit
REST API レスポンス: (http_request_failed) cURL error 28: Connection timed out after 10000 milliseconds
3つ目の問題はループバックリクエストに関するもの。 2つ目の問題と根っこは同じ問題のようで両方とも 10000 miliseconds を超えてタイムアウトしたようです。
ループバックリクエストは予約イベントの実行に使用されます。またテーマやプラグインの組み込みエディターでは、コードの安定性の確認に使用されます。
サイトへのループバックリクエストは失敗しました。現在、依存する機能は想定どおりに動作していません。
エラー: cURL error 28: Connection timed out after 10000 milliseconds (http_request_failed)
メッセージ”cURL error 28: Connection timed out after 10000 milliseconds“を軸に調査を進めます。
原因がわかりました。 この WordPress サーバへのIPアドレスによるアクセス制限が原因でした。 WordPress の環境構築が完了するまでは送信元ネットワーク・IPアドレスを限定していました。表にすると以下の状態。 要は私の自宅のNetworkからしか WordPress(http/https)やSSHに接続することが出来ない状態です。
From | To | Protocol | Allow or Deny |
---|---|---|---|
My Network | WordPress Server | http | allow |
My Network | WordPress Server | https | allow |
My Network | WordPress Server | ssh | allow |
all | all | all | Deny |
これを以下のようにどのホストからも WordPress Server の http と https にアクセスを許可しました。 この設定後は”cURL error 28: Connection timed out after 10000 milliseconds“は解消され、2つの問題”REST API でエラーが発生しました”も”サイトへのループバックリクエストは失敗しました”も解消されました。
なおアクセス制限は Alibaba Cloud の機能で実施しています(Security Group)。
From | To | Protocol | Allow or Deny |
---|---|---|---|
all | WordPress Server | http | allow |
all | WordPress Server | https | allow |
My Network | WordPress Server | ssh | allow |
all | all | all | Deny |
また、根本的なところでどこからアクセスが来ていたのか Apache のアクセスログを確認します。
結果は WordPress サーバ自身の Public IP address が送信元のアクセスでした。 サイトヘルスでループバックリクエストに失敗とは自分のPublic IP address によるループバック処理だったようです(ループバックというからには 127.0.0.0/8 からの接続なのかという思い込み)。また、SAS インスタンス自体は private IP address しかもっておらずまさか自分に割り当てられた Public IP Address で自分自身にアクセスに来るとは考えていなかったのでこれは WordPress の動作・仕様に関する良い気付きになりました。
以上