こんにちは。ナミレリです。
この記事では、EC2上で稼働するAmazon Linux 2の特徴的なツール、amazon-linux-extrasについて詳しく解説します。amazon-linux-extrasは、Amazon Linux 2上で追加のソフトウェアパッケージを管理するためのもので、利用者にとって非常に便利な機能です。一方で、その存在自体も知られていないことも多く、この記事ではphpのアップデートを例に、その活用方法を具体的に紹介していきます。実際にphp7.4からphp8.2へアップデートしてみます。
amazon-linux-extrasコマンドの基本的な使い方や、amazon-linux-extrasの注意すべきポイント、具体的なphpのアップデート方法など紹介していきます。
この記事はこんな人にオススメ
- amazon-linux-extrasコマンドを詳しく知りたい方
- EC2(amazon linux 2)でphpのバージョンアップをしたい方
目次
そもそもamazon-linux-extrasとは?
EC2のOSである、Amazon Linux 2にはamazon-linux-extrasという非常に便利なツールが含まれています。
amazon-linux-extrasは、安定したオペレーティングシステムで新しいバージョンのソフトウェアを利用可能にするAmazon Linux 2のメカニズムで、2025年6月30日までサポートされます。
amazon-linux-extrasはAmazon Linux 2で新規または追加のソフトウェアパッケージを簡単にインストールできるようにするためのもので、基本的にAmazon Linux 2にインストールされており特別な設定無しで利用することができると思います。
例えば、特定のバージョンのphpをインストールするシーンや、新たにDockerを使い始めるために必要なパッケージをインストールするシーンなどに利用します。
amazon-linux-extrasの使い方
amazon-linux-extrasには6個のサブコマンドがあります。詳しくはman amazon-linux-extrasでマニュアルを確認することができます。
man amazon-linux-extras
amazon-linux-extrasのサブコマンド
以下に、amazon-linux-extrasの6個のサブコマンドをまずは記載します。どんなことができるサブコマンドが存在するのか全体像を掴みましょう。
サブコマンド | 説明 |
---|---|
help | 使い方を表示する |
list | 利用可能なすべてのパッケージをリスト表示する |
info <package-name> | インフォメーションを表示する |
install <package-name> | 指定したパッケージをインストールする |
disable <package-name> | 指定したパッケージを無効化する |
enable <package-name> | 指定したパッケージを有効化する |
amazon-linux-extras help(使い方を表示)
amazon-linux-extras helpは、使い方を簡単に表示してくれます。
amazon-linux-extras help
help See list of commands.
info See details of a specific package.
install Enables specified topics and installs their packages.
list Lists topics in the catalog. Some may be enabled.
Amazon Linux Extras software topics give you access to the most-recent
stable software you specifically choose, without the uncertainty of a
wholly new environment.
Best practice is to enable only one or two topics. More than that, and
you lose the benefits of working in a stable environment.
amazon-linux-extras list(利用可能なトピックを表示)
amazon-linux-extras listは、エクストラライブラリの利用可能なすべてのパッケージをリスト表示します。
下のように71のパッケージがあることがわかります。
amazon-linux-extras list
(中略)
65 lustre available [ =stable ]
_ php8.1 available [ =stable ]
67 awscli1 available [ =stable ]
_ php8.2 available [ =stable ]
69 dnsmasq available [ =stable ]
70 unbound1.17 available [ =stable ]
71 golang1.19 available [ =stable ]
* Extra topic has reached end of support.
phpの利用できるバージョンを調べる場合は、下のようにgrepします。
amazon-linux-extras list | grep php
42 *php7.4=latest enabled [ =stable ]
_ php8.0 available [ =stable ]
_ php8.1 available [ =stable ]
_ php8.2 available [ =stable ]
grep enabledをして有効になっているエクストラライブラリのトピックを表示してみます。
amazon-linux-extras list | grep enabled
20 docker=latest enabled \
42 *php7.4=latest enabled [ =stable ]
55 kernel-5.10=latest enabled [ =stable ]
amazon-linux-extras info <package-name>(トピックの情報を表示)
amazon-linux-extras infoは、トピックの情報を表示します。php8.2の情報を表示してみます。
amazon-linux-extras info php8.2
php8.2 recommends php-cli # yum install php-cli
php8.2 recommends php-pdo # yum install php-pdo
php8.2 recommends php-fpm # yum install php-fpm
php8.2 recommends php-json # yum install php-json
php8.2 recommends php-mysqlnd # yum install php-mysqlnd
kernel-5.15のトピック情報も表示してみます。
amazon-linux-extras info kernel-5.15
kernel-5.15 recommends kernel # yum install kernel
amazon-linux-extras install <package-name>(トピックをインストール)
amazon-linux-extras install <package-name>は、指定したトピックをインストールします。
例えば、php8.2をインストールする場合は下のようにします。
sudo amazon-linux-extras install php8.2
amazon-linux-extras disable <package-name>(トピックを無効化)
amazon-linux-extras disable <package-name>は、指定したパッケージをエクストラライブラリから無効化します。
無効化されたパッケージはyum(パッケージマネージャー)からアクセスできなくなり、そのパッケージのアップデートやインストールができなくなります。(アンインストールされるわけではありません)
下のコマンド例では、php7.4を無効化しています。php7.4をアンインストールするわけではなく、php7.4のリポジトリへのアクセスを無効にしているだけです。
sudo amazon-linux-extras disable php7.4
amazon-linux-extras enable <package-name>(トピックを有効化)
amazon-linux-extras enable <package-name>は、指定したパッケージをエクストラライブラリから有効化します。
このコマンドによりyum(パッケージマネージャー)から、指定されたパッケージにアクセスできるようになります。つまり、そのパッケージのインストールやアップデートが可能になります。
特に、複数のバージョンが存在するソフトウェアパッケージ(例:PHP)の場合、amazon-linux-extras enable
コマンドを用いて特定のバージョンを有効化することができます。これにより、バージョンごとに異なるパッケージのバージョンを利用することが可能になります。
下のコマンド例では、php8.2を有効化しています。php8.2をインストールするわけではない点に注意が必要です。
sudo amazon-linux-extras enable php8.2
php7.4からphp8.2へアップデートしてみる
それでは、実際にphp7.4からphp8.2へアップデートしてみます。まずは全体の流れを把握したいと思います。必ずしも下のステップ通りにやる必要はないですが、一番わかりやすいステップだと思います。
以降、各ステップを詳しく紹介していきます。
- STEP
php7.4を無効化し、サーバソフトウェアを停止する
php -v sudo amazon-linux-extras disable php7.4 sudo systemctl stop httpd.service sudo systemctl stop php-fpm.service
- STEP
php7.4をアンインストールする
sudo yum remove php-cli php-pdo php-fpm php-json php-mysqlnd
- STEP
php8.2を有効化する
sudo amazon-linux-extras enable php8.2
- STEP
php8.2をインストールする
sudo yum clean metadata sudo amazon-linux-extras install php8.2 php -v
- STEP
サーバソフトウェアを起動する
sudo systemctl start httpd.service sudo systemctl start php-fpm.service
【STEP1】php7.4を無効化し、サーバソフトウェアを停止する
php7.4を無効化し、apacheやphp-fpmを停止します。まずは、現在のphpのバージョンを確認します。
php -v
PHP 7.4.33 (cli) (built: Nov 19 2022 00:22:13) ( NTS )
Copyright (c) The PHP Group
Zend Engine v3.4.0, Copyright (c) Zend Technologies
次に、念のため、phpの利用できるエクストラライブラリを確認しておきます。
amazon-linux-extras list | grep php
42 *php7.4=latest enabled [ =stable ]
_ php8.0 available [ =stable ]
_ php8.1 available [ =stable ]
_ php8.2 available [ =stable ]
次に、amazon-linux-extras disableでphp7.4を無効化し、yum(パッケージマネージャー)からアクセスできないようにしておきます。
sudo amazon-linux-extras disable php7.4
次に、念のため、php7.4が無効化されていることを確認します。
amazon-linux-extras list | grep php
51 php8.0 available [ =stable ]
66 php8.1 available [ =stable ]
68 php8.2 available [ =stable ]
その後、php8.2へアップグレードする前に、apacheとphp-fpmを停止します。
(停止すると当然ですが、WEBサイトにはアクセスできなくなります)
sudo systemctl stop httpd.service
sudo systemctl stop php-fpm.service
【STEP2】php7.4をアンインストールする
続いて、php7.4をアンインストールします。
STEP1では無効化(=リポジトリへのアクセスをできなくした)のみなので、実際にphp7.4をアンインストールします。
sudo yum remove php-cli php-pdo php-fpm php-json php-mysqlnd
【STEP3】php8.2を有効化する
続いて、amazon-linux-extras enableでphp8.2を有効化し、yum(パッケージマネージャー)からアクセスできるようにします。
sudo amazon-linux-extras enable php8.2
次に、念のため、php8.2が有効化されたことを確認します。
amazon-linux-extras list | grep php
_ php8.0 available [ =stable ]
_ php8.1 available [ =stable ]
68 php8.2=latest enabled [ =stable ]
【STEP4】php8.2をインストールする
続いてmetadateをクリアし、amazon-linux-extras installでphp8.2をインストールします。
sudo yum clean metadata
sudo amazon-linux-extras install php8.2
(略)
インストール:
php-cli.x86_64 0:8.2.3-1.amzn2 php-common.x86_64 0:8.2.3-1.amzn2
php-fpm.x86_64 0:8.2.3-1.amzn2 php-mysqlnd.x86_64 0:8.2.3-1.amzn2
php-pdo.x86_64 0:8.2.3-1.amzn2
完了しました!
php-json is available in Amazon Linux Extra topic "php8.1"
phpのバージョンを確認します。
php -v
PHP 8.2.3 (cli) (built: Mar 15 2023 21:12:07) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.3, Copyright (c) Zend Technologies
ちなみに、インストールされたphp関連のパッケージの説明です。
パッケージ | 説明 |
---|---|
php-cli | PHP Command Line Interface (CLI)は、 コマンドラインからPHPスクリプトを実行するためのツール。 |
php-fpm | PHP FastCGI Process Manager (FPM)は、PHPをFastCGIとして実行するためのもの。 WEBサーバと組み合わせて使用され、動的なWebコンテンツを効率的に 提供することができる。 |
php-pdo | PHP Data Objects (PDO)は、PHPでデータベースとやり取りするための 統一的なインターフェースを提供する。 |
php-common | 一般的なPHPアプリケーションが必要とする 共通のファイルとユーティリティを提供する。 |
php-mysqlnd | mysqlnd (MySQL Native Driver)は、PHPとMySQLデータベースとの間で 効率的な通信を行うためのドライバー。 |
【STEP5】サーバソフトウェアを起動する
下のように、apacheとphp-fpmを起動します。
sudo systemctl start httpd.service
sudo systemctl start php-fpm.service
MFA(多要素認証)を有効にする
AWSで必ずやっておきたい多要素認証の設定方法を紹介します。
AWSではセキュリティ強化のために必ずMFA(多要素認証)を設定しましょう。AWSアカウントのルートユーザーとIAMユーザーでMFAを設定することができます。設定も簡単です。
ざっくりMFAとは?
MFAとは、一般的なログイン認証情報であるユーザー名とパスワードに加えて、もう1つ(1つ以上)の認証要素を加え、ユーザに対してこの2つ以上の認証要素を要求し認証する方法です。
今回は追加の認証要素としてワンタイムパスワード(OTP)を追加します。ワンタイムパスワードは6桁の数字となり、受信方法はSMSやメールといったケースも多いですが、私は1Password8で保存してワンタイムパスワードを管理しています。
2FAとの違いは?
ちなみに、2FAという単語もよく見かけますが2FAとは「2要素認証」です。2FAは2つの要素で認証する方法ですが、MFAは2つ以上の要素を設定し認証する方式です。
それではAWSのMFAを有効にしましょう。
AWSでワンタイムパスワードを追加する手順
以下のAWS公式ドキュメントを参考にMFAを有効にします。
https://docs.aws.amazon.com/ja_jp/IAM/latest/UserGuide/id_credentials_mfa_checking-status.html
- STEP
IAM コンソールにアクセス
AWS Management Console にサインインし、IAM コンソールにアクセスします。
IAMコンソール:https://console.aws.amazon.com/iam/
- STEP
セキュリティ認証情報をクリック
右上のナビゲーションバーでユーザー名を選択し、セキュリティ認証情報をクリックします。
- STEP
MFAが有効か無効かを確認
MFAが有効でない場合は下の画像のようにアラートが出ています。
- STEP
MFAを割り当てる
では実際にMFAを割り当て設定します。
- STEP
MFAデバイスを選択
今回は1Password8でワンタイムパスワードを管理するので「Authenticator app」を選択します。デバイス名にはわかりやすい名前をつけます。(なんでも構いません)
- STEP
デバイスの設定
- STEP
MFAコードを2つ入力しMFAを追加する
最後に
最後まで読んでいただきありがとうございます。今回のEC2のphpをアップデートする(amazon-linux-extrasコマンド)はいかがでしたでしょうか。
amazon-linux-extrasコマンドの基本的な使い方や、mazon-linux-extrasの注意すべきポイント、具体的なphpのアップデート方法など紹介しました。amazon-linux-extrasで、EC2上のAmazon Linux 2でのパッケージ管理が大幅に効率化され、さまざまなソフトウェアパッケージのインストールやアップデートが簡単になります。
一方で、特定のphpのアップデートなどは他のパッケージやシステム全体に影響を与えることがあるため、常に注意深く行う必要があります。パッケージのバージョン管理や依存関係もしっかり理解し、管理することが重要です。
AWSの基本・仕組み・重要用語が全部わかる教科書
MacやLinux、Pythonなど技術系のkindle本も豊富にあります。詳しくはこちらから。
Amazonの電子書籍読み放題サービス「Kindle Unlimited」でプライム会員を対象に、最初の3か月間を無料体験できるキャンペーンを実施中。マンガ、小説、ビジネス書、雑誌など500万冊から、好きな本を何冊でも読めるキャンペーンです。
初めてkindle unlimited 読み放題をご利用の方は30日間の無料で体験できます。
期間終了後は月額980円で、いつでもキャンセルできます。
200万冊以上が読み放題。お好きな端末で利用可能です。