はじめに
AWSのEC2インスタンスのOSであるAmazon Linux 2(以降AL2とします)が2025年にサービス終了してしまうため、Amazon Linux 2023(以降AL2023とします)に移行を行いました。
私自身がサーバーインフラについて学び始めた初心者のため
移行にあたって色々と対応に時間がかかりましたので
何回かに分けて実施した手順をまとめたいと思います。
この記事が他の方の参考となれば幸いです。
この記事では
・mysqlのインストール
・PHPのインストール
・設定ファイル(confファイル)の移動
・PHP.confの修正
について記載しています。
EC2の情報
AL2のEC2インスタンスの情報は以下になります。
項目 | 内容 |
---|---|
OS | Amazon Linux 2 (AL2) |
Webサーバー | Apache |
PHPバージョン | PHP 8.1 |
PHP実行方式 | mod_php |
データベース | MySQL 8.0 (予定含む) |
セキュリティ接続 | .pemキー使用 |
この環境を新しいEC2(AL2023)に構築します
apacheのインストール
こちらは色々と記事があるので省略します。
参考までに自分の記事を載せておきます。
mysqlのインストール
dsudo dnf install mysql-community-serverコマンドでmysqlをインストールします。
sudo dnf install mysql-community-server
Last metadata expiration check: 0:01:04 ago on Tue Nov 11 00:46:13 2024.
Dependencies resolved.
================================================================================================================================================
Package Architecture Version Repository Size
================================================================================================================================================
Installing:
mysql-community-server x86_64 8.0.40-1.el9 mysql80-community 50 M
Installing dependencies:
mysql-community-client x86_64 8.0.40-1.el9 mysql80-community 3.4 M
mysql-community-client-plugins x86_64 8.0.40-1.el9 mysql80-community 1.4 M
mysql-community-common x86_64 8.0.40-1.el9 mysql80-community 555 k
mysql-community-icu-data-files x86_64 8.0.40-1.el9 mysql80-community 2.3 M
mysql-community-libs x86_64 8.0.40-1.el9 mysql80-community 1.5 M
Transaction Summary
================================================================================================================================================
Install 6 Packages
・・・
Complete!
もしErrorやFAILEDとなってしまう場合は
sudo dnf -y update
でパッケージを最新の状態にして再度インストールを試してみてください
mysql -Vでバージョンを確認できればインストール完了です。
mysql -V
mysql Ver 8.0.40 for Linux on x86_64 (MySQL Community Server - GPL)
php8.1のインストール
dnf search phpコマンドでphpに関連するパッケージを調べます。
# dnf search php
Last metadata expiration check: 3:13:14 ago on Fri Nov 22 05:51:15 2024.
========================================================= Name & Summary Matched: php ==========================================================
php-pear.noarch : PHP Extension and Application Repository framework
php8.1.x86_64 : PHP scripting language for creating dynamic web sites
php8.1-bcmath.x86_64 : A module for PHP 8.1 applications for using the bcmath library
php8.1-cli.x86_64 : Command-line interface for PHP 8.1
php8.1-common.x86_64 : Common files for PHP 8.1
php8.1-dba.x86_64 : A database abstraction layer module for PHP 8.1 applications
・・・
今回はphp8.1をインストールしたいので「php8.1.x86_64」をインストールします。
以下のコマンドでphp8.1をインストールします。
sudo dnf install php8.1.x86_64php8.1.x86_64
Complete!が出ていることを確認してください。
php -vでバージョンが確認できればインストール出来ています。
php -v
PHP 8.1.29 (cli) (built: Jun 5 2024 05:51:57) (NTS gcc x86_64)
Copyright (c) The PHP Group
Zend Engine v4.1.29, Copyright (c) Zend Technologies
with Zend OPcache v8.1.29, Copyright (c), by Zend Technologies
Al2からAL2023へメイン設定ファイル(confファイル)を移動します。
今回はS3を経由してコピーする方法を利用しました。
その他必要なオブジェクト(コンテンツ)もこの方法でAL2023にコピーしました。
以下はカレントディレクトリからTest.txtをS3のHogeFuga_bucketのTempにコピーする場合のサンプルです。
※事前にS3にバケット(HogeFuga_bucket)を作成しています。
aws s3 cp ./Test.txt s3://HogeFuga_bucket/Temp/
upload: ./Test.txt to s3://HogeFuga_bucket/Temp/Test.txt
phpのパッケージ差分について(AL2とAl2023)
既存環境ではphpの実行方式をmod_phpを使用していましたが
AL2023のPHP8.1のパッケージにはmod_phpがない様子。
dnf search php
Last metadata expiration check: 10:27:55 ago on Tue Oct 29 14:02:50 2024.
========================================================= Name & Summary Matched: php ==========================================================
php-pear.noarch : PHP Extension and Application Repository framework
php8.1.x86_64 : PHP scripting language for creating dynamic web sites
php8.1-bcmath.x86_64 : A module for PHP 8.1 applications for using the bcmath library
php8.1-cli.x86_64 : Command-line interface for PHP 8.1
php8.1-common.x86_64 : Common files for PHP 8.1
php8.1-dba.x86_64 : A database abstraction layer module for PHP 8.1 applications
php8.1-dbg.x86_64 : The interactive PHP 8.1 debugger
php8.1-devel.x86_64 : Files needed for building PHP 8.1 extensions
php8.1-embedded.x86_64 : PHP 8.1 library for embedding in applications
php8.1-enchant.x86_64 : Enchant spelling extension for PHP 8.1 applications
php8.1-fpm.x86_64 : PHP 8.1 FastCGI Process Manager
php8.1-gd.x86_64 : A module for PHP 8.1 applications for using the gd graphics library
php8.1-gmp.x86_64 : A module for PHP 8.1 applications for using the GNU MP library
php8.1-intl.x86_64 : Internationalization extension for PHP 8.1 applications
php8.1-ldap.x86_64 : A module for PHP 8.1 applications that use LDAP
php8.1-mbstring.x86_64 : A module for PHP 8.1 applications which need multi-byte string handling
php8.1-mysqlnd.x86_64 : A module for PHP 8.1 applications that use MySQL databases
php8.1-odbc.x86_64 : A module for PHP 8.1 applications that use ODBC databases
php8.1-pdo.x86_64 : A database access abstraction module for PHP 8.1 applications
php8.1-pgsql.x86_64 : A PostgreSQL database module for PHP 8.1
php8.1-process.x86_64 : Modules for PHP 8.1 script using system process interfaces
php8.1-pspell.x86_64 : A module for PHP 8.1 applications for using pspell interfaces
php8.1-snmp.x86_64 : A module for PHP 8.1 applications that query SNMP-managed devices
php8.1-soap.x86_64 : A module for PHP 8.1 applications that use the SOAP protocol
php8.1-tidy.x86_64 : Standard PHP 8.1 module provides tidy library support
php8.1-xml.x86_64 : A module for PHP 8.1 applications which use XML
~省略~
php8.3-modphp.x86_64 : PHP 8.3 module for Apache HTTP Server
※ちなみにphp8.3にはmodphpのパッケージがありました。
公式のリリースノートではphp8.1のmod_phpについて明確な記載は見当たりませんでした。
https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes-2023.5.20241001.html#major-updates-2023.5.20241001
php.confの修正
mod_phpが使えないようであるため、php-fpmで動作するようにphp.confを修正する必要があると考えました。
mod_phpではなくphp-fpmで動作するためにphp.confの以下の箇所を修正しました。
修正前のphp.conf
<FilesMatch \.php$>
SetHandler application/x-httpd-php
</FilesMatch>
修正後のphp.conf
<IfModule proxy_module>
# .phpファイルに対してPHP-FPMを使う
ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://127.0.0.1:9000/var/www/app/public/$1
</IfModule>
以上が
・mysqlのインストール
・PHPのインストール
・設定ファイル(confファイル)の移動
・PHP.confの修正
についての記事になります。
ここまでの感想
初心者のため、ここまででもわからないことが多く時間がかかりました。