Amazon Linux 2でRemiリポジトリのPHPを8.0から8.1に更新

以下の記事で、Remiリポジトリを使ってインストールしたPHP 8.0を8.1にアップデートする記事です。

注意書き

  • 本記事でPHP 8.0をアンインストールしますが、設定ファイルのバックアップは行いません。
    不安な方は各自バックアップしてください。
    また以前の設定ファイルも消えるため、絶対にアップデート作業を行うためのメモを準備しましょう。
  • 設定ファイルの内容は基本的に引き継がれません。
    PHP 8.1のインストール後に改めて設定をします。
    設定ファイルの変更内容をメモしていない場合は、予め設定ファイルのバックアップを取ってください。
  • 本記事の手順実行中はサーバーが一時的に使えなくなるので注意してください。

最初に、インストールしたPHP関連のライブラリを一覧できます。
ここに一覧されたものをアンインストールすることになります。
アップデート後と比較するため、コマンドで出力された文字列のコピーもしておきましょう。

sudo yum list installed php*

PHPがremiリポジトリからインストールしたものであることと、
アンインストールしてはいけないものが一覧に混じっていないか、事前によく確認してください。

ここでよく分からなくなった場合はUターンしてGoogle検索です。

PHPのモジュールについてもアップデート後と比較するため、文字列をコピーしておきましょう。

php80 -m

さて、作業開始です。
サーバーを停止します。

sudo systemctl stop nginx
sudo systemctl stop php80-php-fpm

PHP 8.0のアンインストールを行います。

sudo yum remove php*

アンインストールが完了したら、PHP 8.1をインストールします。
PHP8.1用のremiリポジトリを追加し、追加されたことを確認します。

sudo yum-config-manager --enable remi-php81
sudo yum repolist | grep remi-php

PHPとモジュールをインストールします。
ここではWordPressに必要なモジュールをインストールします。
ここら辺は各自必要なコマンドに置き換えてください。

sudo yum -y install --enablerepo=remi-php81 php81 php81-php php81-php-common php81-php-mbstring php81-php-mysqlnd php81-php-xml php81-php-bcmath php81-php-gd php81-php-intl php81-php-pecl-mcrypt

依存関係で上手くインストールできないので、php81-php-pecl-zipは別途インストールします。

sudo yum -y install --enablerepo=remi-php81 --disablerepo=amzn2-core php81-php-pecl-zip

上記実行後にimagickをインストールします。

sudo yum -y install --enablerepo=remi-php81 php81-php-pecl-imagick-im7

PHP-FPM、APCu、OPcacheをインストールします。

sudo yum -y install --enablerepo=remi-php81 php81-php-fpm php81-php-pecl-apcu php81-php-opcache

これでPHP関連のライブラリやモジュールのインストールが終わりました。
PHP 8.1のモジュールを確認し、同じモジュールがインストールされたか確認しましょう。

php81 -m

インストールしたPHP関連のライブラリも同様に確認します。

sudo yum list installed php*

確認が終わったら、設定ファイルを元に戻していきます。

元に戻し終わったら、サーバーを起動します。

sudo systemctl start php81-php-fpm
sudo systemctl enable php81-php-fpm
sudo systemctl start nginx

サーバーにアクセスし、正常に稼働していることを確認したら完了です。
お疲れさまでした。

作業中の確認も含め、作業は15分ほどで完了しました。
今回初めてPHPのバージョンアップを行いましたが、仕事だと結構入念にやる必要がありますね。

厳密にやる場合、予めバックアップした設定ファイルとdiffを取りながらやることになると思いますので、phpinfoなどからインストールしたモジュールのiniファイルを一覧して、バックアップを取っておく必要があります。
今回は自身のホームページ用なのでその辺の手順は省きました。

  • URLをコピーしました!
目次