業務でAmazon Linux 2を扱っているのですが、初回インストール作業を整理する作業がありました。 ごく一般的なWEBシステムでプログラミング言語はPHPなのですが、インストール時にいくつか気づいたことがあったので、共有します。
amazon-linux-extrasとは
Amazon Linux 2に存在する、Extras Library と呼ばれるパッケージ群を利用するコマンドです。 わかりやすい解説などは、クラスメソッドさんの記事をご確認ください。
特定パッケージにおいて各種新バージョンをインストールでき、かつ公式がサポートしている安心感があります。
簡単に言ってしまうと、Amazonが公式サポートした新バージョンをyumで扱えるようにする仕組みです。 https://www.nedia.ne.jp/blog/tech/aws/2019/04/16/13991
Extras Libraryで使えるPHPは、常に最新版というわけではない
PHP8.2がリリースされて一ヶ月経過したため、そろそろ使っても大丈夫かと思いPHP8.2でリリースしようかと思っていたのですが、amazon-linux-extrasにありませんでした。
実際に、amazon-linux-extras
で使えるPHPを出力してみたのが次のコマンドです。
$ docker run -it amazonlinux:2 /bin/bash bash-4.2# amazon-linux-extras list | grep php 42 php7.4 available [ =stable ] 51 php8.0 available [ =stable ] 66 php8.1 available [ =stable ]
PHP8.1に対応したのも最近の出来事である
最終的に公式フォーラムへたどりついたのですが、PHP8.1が扱えるようになったのは、思いのほか最近の出来事なようです。
rePost-User-2313392 a month ago (<= おおよそ一ヶ月前?)
Good news. Amazon-Linux-extras 8.1 is AVAILABLE NOW
https://repost.aws/questions/QUsfhDbww4SAy8i5Jmd4vcMg/amazon-linux-2-amazon-linux-extras-php-8-1-support
amazon-linux-extras install phpでインストールされるもの
amazon-linux-extras install php8.1
を、実際にやってみます。
何がインストールされるのか見てのとおりですが、PHP本体に加え、php-fpmもインストールする特徴があります。
bash-4.2# amazon-linux-extras install php8.1 Installing php-pdo, php-fpm, php-mysqlnd, php-cli, php-json ... ================================================================================================================== Package Arch Version Repository Size ================================================================================================================== Installing: 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 Installing for dependencies: ... 省略 Transaction Summary ================================================================================================================== Install 5 Packages (+30 Dependent packages)
amazon-linux-extras enable php
amazon-linux-extras installではなく、yumコマンドでインストールするアプローチがあります。
それが、amazon-linux-extras enable php8.1
です。
enableを一度実行すると、yum installでのインストールが可能です。
bash-4.2# amazon-linux-extras enable php8.1 ...省略 _ php7.4 available [ =stable ] _ php8.0 available [ =stable ] 66 php8.1=latest enabled [ =stable ] ...省略 Now you can install: # yum clean metadata # yum install php-cli php-pdo php-fpm php-json php-mysqlnd bash-4.2#
yum install php
Now you can installに書いてあるとおりなのですが、enableした後にyum installを実行してみます。 Repositoryがphp8.1になっており、特定したバージョンでインストールされることがわかりました。
bash-4.2# amazon-linux-extras enable php8.1 bash-4.2# yum install php-cli Loaded plugins: ovl, priorities amzn2-core | 3.7 kB 00:00:00 amzn2extra-php8.1 | 3.0 kB 00:00:00 ================================================================================================================== Package Arch Version Repository Size ================================================================================================================== Installing: php-cli x86_64 8.1.12-1.amzn2 amzn2extra-php8.1 5.6 M Installing for dependencies: libedit x86_64 3.0-12.20121213cvs.amzn2.0.2 amzn2-core 93 k libzip x86_64 1.3.2-1.amzn2.0.1 amzn2-core 62 k php-common x86_64 8.1.12-1.amzn2 amzn2extra-php8.1 1.2 M Transaction Summary ================================================================================================================== Install 1 Package (+3 Dependent packages) Total download size: 7.0 M Installed size: 34 M Is this ok [y/d/N]:
php.iniはproductionがインストールされる
php.iniには大きく分けてphp.ini-developmentとphp.ini-productionがありますが、amazon-linux-extras installではproductionが入ります。
bash-4.2# cat /etc/php.ini | grep production ; in production environments and one that is recommended to be used in ; php.ini-production contains settings which hold security, performance and ; recommending using the production ini in production and testing environments. ; php.ini-development is very similar to its production variant, except it is ; This is php.ini-production INI file.
インストール後に実ファイルを探してみたら、php.ini-developmentはdoc配下に見つかりました。
bash-4.2# find / | grep php.ini /etc/php.ini /usr/share/doc/php-common-8.1.12/php.ini-development /usr/share/doc/php-common-8.1.12/php.ini-production
あとがき
想定より言語バージョンアップへの公式対応が遅かったという欠点こそあるものの、Amazon公式である点とインストール作業自体は簡単でした。
Amazon Linux 2にPHPをインストールする選択肢としては、わりとお手軽で良さそうです。