0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EC2のマイグレーション作業(AL2 →AL2023)について①

Posted at

はじめに

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の修正
についての記事になります。

ここまでの感想

初心者のため、ここまででもわからないことが多く時間がかかりました。

次回は続きの作業を記載します。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?