株式会社ライブキャストロゴ 株式会社ライブキャスト

当サイトのWordPressの環境をAmazon EC2のt3.nanoインスタンスに移行すると同時に諸々バージョンを新しくしていきたいと思います。ただ、インスタンスタイプt3.nanoのメモリは0.5GiBしかなくデフォルトだと流石にメモリ不足です。以下の記事の後半でご紹介しているswap領域を増やすという対応も別途していますので参考にしていただければと思います。
t2.microインスタンスで動いているWordPressが定期的にダウンしてしまう!?の対応方法の一例 | 株式会社ライブキャスト

EC2のインスタンス(t3.nano)を起動しsshで接続した後からの作業をまとめていきます。

$ cat /etc/system-release
Amazon Linux release 2 (Karoo)

まず、yumコマンドの登録済みリポジトリでPHP関連のパッケージが利用可能か確認してみます。

$ yum list php
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
利用可能なパッケージ
php.x86_64 5.4.16-46.amzn2.0.2 amzn2-core

PHPのバージョンは5.4のようです。

その他のリポジトリに新しいバージョンのPHPパッケージがあるかもしれません。epel-releaseリポジトリをインストールします。
※ epel-releaseとは?
CentOSなどで使う、EPELってなんだ?

$ sudo yum install epel-release
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
amzn2-core | 3.7 kB 00:00:00
パッケージ epel-release は利用できません。
エラー: 何もしません

epel-release is available in Amazon Linux Extra topic “epel”

To use, run
# sudo amazon-linux-extras install epel

Learn more at
https://aws.amazon.com/amazon-linux-2/faqs/#Amazon_Linux_Extras

「利用できません」というエラーメッセージが出てしまいました。
ただ、よく見るとその数行下に「To use, run」とありました。yumの代わりにamazon-linux-extrasというコマンドを使うのですね。

$ sudo amazon-linux-extras install epel
Installing epel-release
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
リポジトリーを清掃しています: amzn2-core amzn2extra-docker amzn2extra-epel amzn2extra-kernel-5.10
17 個の metadata ファイルを削除しました
6 個の sqlite ファイルを削除しました
0 個の metadata ファイルを削除しました
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
amzn2-core | 3.7 kB 00:00:00
amzn2extra-docker | 3.0 kB 00:00:00
amzn2extra-epel | 3.0 kB 00:00:00
amzn2extra-kernel-5.10 | 3.0 kB 00:00:00
(1/9): amzn2-core/2/x86_64/group_gz | 2.5 kB 00:00:00
(2/9): amzn2-core/2/x86_64/updateinfo | 539 kB 00:00:00

…….

(8/9): amzn2extra-kernel-5.10/2/x86_64/primary_db | 14 MB 00:00:00
(9/9): amzn2-core/2/x86_64/primary_db | 68 MB 00:00:01
依存性の解決をしています
–> トランザクションの確認を実行しています。
—> パッケージ epel-release.noarch 0:7-11 を インストール
–> 依存性解決を終了しました。

依存性を解決しました

=====================================================================
Package アーキテクチャー バージョン リポジトリー 容量
=====================================================================
インストール中:
epel-release noarch 7-11 amzn2extra-epel 15 k

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

総ダウンロード容量: 15 k
インストール容量: 24 k
Is this ok [y/d/N]: y
Downloading packages:
epel-release-7-11.noarch.rpm | 15 kB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : epel-release-7-11.noarch 1/1
検証中 : epel-release-7-11.noarch 1/1

インストール:
epel-release.noarch 0:7-11

完了しました!
0 ansible2 available \
[ =2.4.2 =2.4.6 =2.8 =stable ]
2 httpd_modules available [ =1.0 =stable ]
3 memcached1.5 available \
[ =1.5.1 =1.5.16 =1.5.17 ]
6 postgresql10 available [ =10 =stable ]

…….

50 selinux-ng available [ =stable ]
51 php8.0 available [ =stable ]
52 tomcat9 available [ =stable ]
53 unbound1.13 available [ =stable ]
54 mariadb10.5 available [ =stable ]
55 kernel-5.10=latest enabled [ =stable ]
56 redis6 available [ =stable ]
57 ruby3.0 available [ =stable ]
58 postgresql12 available [ =stable ]
59 postgresql13 available [ =stable ]
60 mock2 available [ =stable ]
61 dnsmasq2.85 available [ =stable ]
62 kernel-5.15 available [ =stable ]
63 postgresql14 available [ =stable ]
64 firefox available [ =stable ]
65 lustre available [ =stable ]
66 php8.1 available [ =stable ]
67 awscli1 available [ =stable ]

PHPの安定版バージョン8.1が使えそうです。

$ sudo amazon-linux-extras install php8.1
Installing php-pdo, php-fpm, php-mysqlnd, php-cli, php-json
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
リポジトリーを清掃しています: amzn2-core amzn2extra-docker amzn2extra-epel amzn2extra-kernel-5.10 amzn2extra-php8.1 epel
28 個の metadata ファイルを削除しました
10 個の sqlite ファイルを削除しました
0 個の metadata ファイルを削除しました
読み込んだプラグイン:extras_suggestions, langpacks, priorities, update-motd
amzn2-core | 3.7 kB 00:00:00
amzn2extra-docker | 3.0 kB 00:00:00
amzn2extra-epel | 3.0 kB 00:00:00
amzn2extra-kernel-5.10 | 3.0 kB 00:00:00
amzn2extra-php8.1 | 3.0 kB 00:00:00
epel/x86_64/metalink | 9.4 kB 00:00:00
epel | 4.7 kB 00:00:00
(1/14): amzn2-core/2/x86_64/group_gz | 2.5 kB 00:00:00
(2/14): amzn2-core/2/x86_64/updateinfo | 539 kB 00:00:00
(3/14): amzn2extra-epel/2/x86_64/primary_db | 1.8 kB 00:00:00

…….

(12/14): amzn2extra-kernel-5.10/2/x86_64/primary_db | 14 MB 00:00:01
(13/14): epel/x86_64/primary_db | 7.0 MB 00:00:00
(14/14): amzn2-core/2/x86_64/primary_db | 68 MB 00:00:01
220 packages excluded due to repository priority protections
依存性の解決をしています
–> トランザクションの確認を実行しています。
—> パッケージ php-cli.x86_64 0:8.1.12-1.amzn2 を インストール
—> パッケージ php-common.x86_64 0:8.1.12-1.amzn2 を インストール
–> 依存性の処理をしています: libzip.so.5()(64bit) のパッケージ: php-common-8.1.12-1.amzn2.x86_64
—> パッケージ php-fpm.x86_64 0:8.1.12-1.amzn2 を インストール
—> パッケージ php-mysqlnd.x86_64 0:8.1.12-1.amzn2 を インストール
—> パッケージ php-pdo.x86_64 0:8.1.12-1.amzn2 を インストール
–> トランザクションの確認を実行しています。
—> パッケージ libzip.x86_64 0:1.3.2-1.amzn2.0.1 を インストール
–> 依存性解決を終了しました。

依存性を解決しました

=====================================================================
Package アーキテクチャー バージョン リポジトリー 容量
=====================================================================
インストール中:
php-cli x86_64 8.1.12-1.amzn2 amzn2extra-php8.1 5.6 M
php-common x86_64 8.1.12-1.amzn2 amzn2extra-php8.1 1.2 M
php-fpm x86_64 8.1.12-1.amzn2 amzn2extra-php8.1 1.9 M
php-mysqlnd x86_64 8.1.12-1.amzn2 amzn2extra-php8.1 184 k
php-pdo x86_64 8.1.12-1.amzn2 amzn2extra-php8.1 125 k
依存性関連でのインストールをします:
libzip x86_64 1.3.2-1.amzn2.0.1 amzn2-core 62 k

トランザクションの要約
=====================================================================
インストール 5 パッケージ (+1 個の依存関係のパッケージ)

総ダウンロード容量: 9.1 M
インストール容量: 41 M
Is this ok [y/d/N]: y
Downloading packages:
(1/6): libzip-1.3.2-1.amzn2.0.1.x86_64.rpm | 62 kB 00:00:00
(2/6): php-common-8.1.12-1.amzn2.x86_64.rpm | 1.2 MB 00:00:00
(3/6): php-cli-8.1.12-1.amzn2.x86_64.rpm | 5.6 MB 00:00:00
(4/6): php-fpm-8.1.12-1.amzn2.x86_64.rpm | 1.9 MB 00:00:00
(5/6): php-mysqlnd-8.1.12-1.amzn2.x86_64.rpm | 184 kB 00:00:00
(6/6): php-pdo-8.1.12-1.amzn2.x86_64.rpm | 125 kB 00:00:00
—————————————————————————————————————————–
合計 16 MB/s | 9.1 MB 00:00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : libzip-1.3.2-1.amzn2.0.1.x86_64 1/6
インストール中 : php-common-8.1.12-1.amzn2.x86_64 2/6
インストール中 : php-pdo-8.1.12-1.amzn2.x86_64 3/6
インストール中 : php-mysqlnd-8.1.12-1.amzn2.x86_64 4/6
インストール中 : php-fpm-8.1.12-1.amzn2.x86_64 5/6
インストール中 : php-cli-8.1.12-1.amzn2.x86_64 6/6
検証中 : php-mysqlnd-8.1.12-1.amzn2.x86_64 1/6
検証中 : php-fpm-8.1.12-1.amzn2.x86_64 2/6
検証中 : libzip-1.3.2-1.amzn2.0.1.x86_64 3/6
検証中 : php-pdo-8.1.12-1.amzn2.x86_64 4/6
検証中 : php-common-8.1.12-1.amzn2.x86_64 5/6
検証中 : php-cli-8.1.12-1.amzn2.x86_64 6/6

インストール:
php-cli.x86_64 0:8.1.12-1.amzn2 php-common.x86_64 0:8.1.12-1.amzn2 php-fpm.x86_64 0:8.1.12-1.amzn2
php-mysqlnd.x86_64 0:8.1.12-1.amzn2 php-pdo.x86_64 0:8.1.12-1.amzn2

依存性関連をインストールしました:
libzip.x86_64 0:1.3.2-1.amzn2.0.1

完了しました!

php-json is available in Amazon Linux Extra topic “php7.4”

To use, run
# sudo amazon-linux-extras install php7.4

Learn more at
https://aws.amazon.com/amazon-linux-2/faqs/#Amazon_Linux_Extras

0 ansible2 available \
[ =2.4.2 =2.4.6 =2.8 =stable ]
2 httpd_modules available [ =1.0 =stable ]
3 memcached1.5 available \
[ =1.5.1 =1.5.16 =1.5.17 ]
6 postgresql10 available [ =10 =stable ]

…….

50 selinux-ng available [ =stable ]
_ php8.0 available [ =stable ]
52 tomcat9 available [ =stable ]
53 unbound1.13 available [ =stable ]
54 mariadb10.5 available [ =stable ]
55 kernel-5.10=latest enabled [ =stable ]
56 redis6 available [ =stable ]
57 ruby3.0 available [ =stable ]
58 postgresql12 available [ =stable ]
59 postgresql13 available [ =stable ]
60 mock2 available [ =stable ]
61 dnsmasq2.85 available [ =stable ]
62 kernel-5.15 available [ =stable ]
63 postgresql14 available [ =stable ]
64 firefox available [ =stable ]
65 lustre available [ =stable ]
66 php8.1=latest enabled [ =stable ]
67 awscli1 available [ =stable ]

インストールが完了しました。バージョンを確認してみます。

$ php -v
PHP 8.1.12 (cli) (built: Oct 31 2022 22:06:27) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.1.12, Copyright (c) Zend Technologies

バージョン8.1.12ですね。無事インストールが完了しました!
続きは、次の記事でやっていきたいと思います。