Amazon Linux 2023でwordpressを動かしてみた
こんにちは。AITP大野です。
先日AWSの新しいAMIであるAmazon Linux 2023が全てのリージョンで利用できるようになりました。
Amazon Linux 2 からどう変わったのかは公式のドキュメントがよくまとまっているのでそちらを見るのが良いでしょう。
実際に業務で利用する前にまずは使ってみて評価していきたい、ということでAmazon Linux 2023のインスタンスを立ててwordpressを動かすところまでやってみます。
(以降、Amazon Linux 2023は長いのでAL2023と略します)
インスタンスを用意する
公式のGitHubを見るとCloudFormationやDockerを使った方法も載っていますが、今回はAWSコンソールからEC2を立てていきます。

インスタンスを立てるのに特別な操作は要りません。新規EC2を立てる際にはすでにデフォルトでAL2023が選択されているのでそのまま選択するだけです。
立ち上がったインスタンスに接続すると Amazon Linux 2023 と表示されます。
, #_
~\_ ####_ Amazon Linux 2023
~~ \_#####\
~~ \###|
~~ \#/ ___ https://aws.amazon.com/linux/amazon-linux-2023
~~ V~' '->
~~~ /
~~._. _/
_/ _/
_/m/'
Last login: Fri Mar 31 07:50:40 2023 from 127.0.0.1
~ # 必要なパッケージのインストール
それではWordpressを動かすのに必要なものをインストールしていきます。
と思いましたが、その前にAL2023での大きな変更点を確認します。
パッケージマネージャーの変更
Amazon Linux 2ではyumを使ってパッケージ管理していましたが、AL2023からdnfコマンドに切り替わっています。
yumコマンド自体はまだ使えますが、内部的にはdnfへのポインターとなっているようですので素直にdnfを使う方が良さそうです。
使い方を覚えないと・・・とは言うことものの、使い方は大抵の場合でyumと同じになるのであまり心配いらないと思います。
~ # dnf info httpd
Last metadata expiration check: 0:01:59 ago on Fri Mar 31 08:01:57 2023.
Available Packages
Name : httpd
Version : 2.4.56
Release : 1.amzn2023
Architecture : x86_64
Size : 48 k
Source : httpd-2.4.56-1.amzn2023.src.rpm
Repository : amazonlinux
Summary : Apache HTTP Server
URL : https://httpd.apache.org/
License : ASL 2.0
Description : The Apache HTTP Server is a powerful, efficient, and extensible
: web server.
~ #また、Amazon Linux 2では amazon-linux-extras コマンドも使えましたが、廃止されてdnfに一本化されています。
~ # amazon-linux-extras list
-bash: amazon-linux-extras: command not found
~ # インストール作業
wordpress公式のドキュメントに何をインストールすべきかのリストがあるので、これを参照しつつ必要なパッケージをインストールしていきます。
sudo dnf -y install libcurl ImageMagick
sudo dnf -y php8.1 php8.1-fpm php8.1-mbstring php8.1-mysqlnd php8.1-xml
AL2023では初めての作業なので一つ一つインストールしていきますが、記事が長くなるので適宜端折りながら書いていきます。
libcurlで競合発生
いきなりですがlibcurlがインストールできませんでした。
あらかじめインストールされていたcurl-minimalと競合しているようです。
~ # sudo dnf install -y libcurl
Last metadata expiration check: 0:36:54 ago on Fri Mar 31 07:42:47 2023.
Error:
Problem: problem with installed package libcurl-minimal-7.88.1-1.amzn2023.0.1.x86_64
- package libcurl-minimal-7.88.1-1.amzn2023.0.1.x86_64 conflicts with libcurl(x86-64) provided by libcurl-7.87.0-2.amzn2023.0.2.x86_64
- package libcurl-minimal-7.87.0-2.amzn2023.0.2.x86_64 conflicts with libcurl(x86-64) provided by libcurl-7.87.0-2.amzn2023.0.2.x86_64
- package libcurl-minimal-7.88.0-1.amzn2023.0.1.x86_64 conflicts with libcurl(x86-64) provided by libcurl-7.87.0-2.amzn2023.0.2.x86_64
- conflicting requests
- package libcurl-minimal-7.88.1-1.amzn2023.0.1.x86_64 conflicts with libcurl(x86-64) provided by libcurl-7.88.0-1.amzn2023.0.1.x86_64
- package libcurl-minimal-7.87.0-2.amzn2023.0.2.x86_64 conflicts with libcurl(x86-64) provided by libcurl-7.88.0-1.amzn2023.0.1.x86_64
- package libcurl-minimal-7.88.0-1.amzn2023.0.1.x86_64 conflicts with libcurl(x86-64) provided by libcurl-7.88.0-1.amzn2023.0.1.x86_64
- package libcurl-minimal-7.88.1-1.amzn2023.0.1.x86_64 conflicts with libcurl(x86-64) provided by libcurl-7.88.1-1.amzn2023.0.1.x86_64
- package libcurl-minimal-7.87.0-2.amzn2023.0.2.x86_64 conflicts with libcurl(x86-64) provided by libcurl-7.88.1-1.amzn2023.0.1.x86_64
- package libcurl-minimal-7.88.0-1.amzn2023.0.1.x86_64 conflicts with libcurl(x86-64) provided by libcurl-7.88.1-1.amzn2023.0.1.x86_64
(try to add '--allowerasing' to command line to replace conflicting packages or '--skip-broken' to skip uninstallable packages)
~ # RC0時点のドキュメントに関連のありそうな記述を見つけました。
The default
https://docs.aws.amazon.com/ja_jp/linux/al2022/release-notes/relnotes-20221012.htmlcurlis part of thecurl-minimalpackage, which supports the most popular protocols. You can switch to the full-featuredcurlif needed by runningdnf install --allowerasing curl-full libcurl-full
必要であれば --allowerasing オプションを使って上書きせよということなので、言われた通りにオプションをつけてインストールしてみます。
~ # sudo dnf install --allowerasing libcurl
Last metadata expiration check: 0:45:26 ago on Fri Mar 31 07:42:47 2023.
Dependencies resolved.
======================================================================================================================================================================
Package Architecture Version Repository Size
======================================================================================================================================================================
Installing:
libcurl x86_64 7.88.1-1.amzn2023.0.1 amazonlinux 310 k
Installing dependencies:
libbrotli x86_64 1.0.9-4.amzn2023.0.2 amazonlinux 315 k
libssh x86_64 0.10.4-3.amzn2023.0.3 amazonlinux 212 k
libssh-config noarch 0.10.4-3.amzn2023.0.3 amazonlinux 10 k
Removing dependent packages:
libcurl-minimal x86_64 7.88.1-1.amzn2023.0.1 @System 542 k
...省略
Installed:
libbrotli-1.0.9-4.amzn2023.0.2.x86_64 libcurl-7.88.1-1.amzn2023.0.1.x86_64 libssh-0.10.4-3.amzn2023.0.3.x86_64 libssh-config-0.10.4-3.amzn2023.0.3.noarch
Removed:
libcurl-minimal-7.88.1-1.amzn2023.0.1.x86_64
Complete!
~ # libcurl- minimal を消して libcurl を入れるよという事なのでそのまま進めてもらいます。
libxmlはインストール不要
dnf info libxml2 でインストール済みと出るのでインストールは不要でした。
php関連
そのまま dnf install するだけです。
sudo dnf install -y php8.1 php8.1-fpm php8.1-mbstring php8.1-mysqlnd php8.1-xmlちなみにこの時点でApache httpdもインストールされるのでapache単体でのインストールは不要でした。(PHPのweak dependenciesとなっている模様)
Installing weak dependencies:
apr-util-openssl x86_64 1.6.3-1.amzn2023.0.1 amazonlinux 17 k
httpd x86_64 2.4.56-1.amzn2023 amazonlinux 48 k
mod_http2 x86_64 2.0.11-2.amzn2023 amazonlinux 150 k
mod_lua x86_64 2.4.56-1.amzn2023 amazonlinux 62 k
php8.1-cli x86_64 8.1.16-1.amzn2023.0.1 amazonlinux 3.5 M
php8.1-opcache x86_64 8.1.16-1.amzn2023.0.1 amazonlinux 382 k
ImageMagickはpecl経由でインストール
imagickに関してはpecl経由でインストールする必要があるため、依存関係のある以下のパッケージを先にインストール。
sudo dnf -y install php-pear php8.1-devel gcc ImageMagick-develその後にpeclで検索をかけると出てきます。
~ # pecl search imagick
WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update
Retrieving data...0%
Warning: Trying to access array offset on value of type null in PEAR/Command/Remote.php on line 550
PHP Warning: Trying to access array offset on value of type null in /usr/share/pear/PEAR/Command/Remote.php on line 550
Warning: Trying to access array offset on value of type null in PEAR/Command/Remote.php on line 551
PHP Warning: Trying to access array offset on value of type null in /usr/share/pear/PEAR/Command/Remote.php on line 551
Matched packages, channel pecl.php.net:
=======================================
Package Stable/(Latest) Local
imagick 3.7.0 (stable) Provides a wrapper to the ImageMagick library.
~ # そのままインストール。
~ # sudo pecl install imagick
...省略
Build process completed successfully
Installing '/usr/lib64/php/modules/imagick.so'
Installing '/usr/include/php/ext/imagick/php_imagick_shared.h'
install ok: channel://pecl.php.net/imagick-3.7.0
configuration option "php_ini" is not set to php.ini location
You should add "extension=imagick.so" to php.ini言われた通り php.ini に追加します。管理しやすいように /etc/php.d/ 以下にファイルを配置することにします。
~ # echo "extension=imagick.so" | sudo tee /etc/php.d/40-imagick.ini
extension=imagick.so
~ #PHPのモジュールを最終確認
以下のコマンドで確認します。
~ # php-fpm -m | grep -Ei "(imagick|curl|mbstring|libxml)"
curl
imagick
libxml
mbstring
~ # php-fpmでロードされていればgrepでhitします。出てこなければphp-fpmのrestartですね。
サーバーの起動・確認
サーバーを起動して表示の確認を行っていきます。
記事の本題と違うので省きますが、あらかじめセキュリティグループにてhttp接続を許可してあります。
~ # cd /var/www/html
/var/www/html # sudo systemctl start httpd
/var/www/html # echo "index" | sudo tee index.html
index
/var/www/html # curl http://localhost/
index
/var/www/html # apacheが起動できました。
続いてwordpressのインストールですが、これは普通に設置するだけです。
~ # cd /tmp
/tmp # wget https://ja.wordpress.org/latest-ja.tar.gz
/tmp # sudo tar xvzf latest-ja.tar.gz -C /var/www/htmlブラウザでアクセスするとwordpressが起動しました。

問題なく使えるようですね。
総括
Amazon Linux 2 はまだまだ現役で2025年6月までサポートされることが決まっています。
しかし2025年のサポート切れ直前になってからAL2023の評価を始めても手遅れになるのが目に見えているので、積極的にAL2023を採用して引き続き評価していきたいと思います。