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ファイルを一覧して、バックアップを取っておく必要があります。
今回は自身のホームページ用なのでその辺の手順は省きました。