パッケージを最新のバージョンに更新
インストールされているパッケージを最新のバージョンに更新します。
Amazon Linux 2023はFedoraベースのAMIなのでdnfコマンドでインストールを行います。
-y オプションを指定することで確認をスキップすることができます。
sudo dnf update -y
ApacheとPHPパッケージをインストールします。
AL2023 用の最新バージョンの Apache ウェブサーバーと PHP パッケージをインストールします。
コマンドは以下になります。
sudo dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel
wgetコマンドはコマンドラインからインターネットを通じてファイルをダウンロードできるツールです。
MySQLのインストール
AL2023へMySQLをインストールする場合は、公式のMySQLリポジトリを先にインストールする必要があります。RHEL9のリポジトリをインストールしましょう。
sudo dnf localinstall https://dev.mysql.com/get/mysql80-community-release-el9-1.noarch.rpm
GPG 公開鍵をインポート
rpm --import https://repo.mysql.com/RPM-GPG-KEY-mysql-2023
MySQLの関連パッケージをインストール
dnf install mysql-community-server mysql-community-client mysql-community-devel
自動起動設定
systemctl enable httpd.service
systemctl start httpd.service
systemctl status httpd.service
systemctl enable php-fpm.service
systemctl start php-fpm.service
systemctl status php-fpm.service
systemctl enable mysqld
systemctl start mysqld
systemctl status mysqld
インストールしたミドルウェアの確認
Apache
$ dnf list installed | grep httpd
generic-logos-httpd.noarch 18.0.0-12.amzn2023.0.3 @amazonlinux
httpd.x86_64 2.4.59-2.amzn2023 @amazonlinux
httpd-core.x86_64 2.4.59-2.amzn2023 @amazonlinux
httpd-filesystem.noarch 2.4.59-2.amzn2023 @amazonlinux
httpd-tools.x86_64 2.4.59-2.amzn2023 @amazonlinux
PHP
$ dnf list installed | grep php
php8.2.x86_64 8.2.15-1.amzn2023.0.2 @amazonlinux
php8.2-cli.x86_64 8.2.15-1.amzn2023.0.2 @amazonlinux
php8.2-common.x86_64 8.2.15-1.amzn2023.0.2 @amazonlinux
php8.2-devel.x86_64 8.2.15-1.amzn2023.0.2 @amazonlinux
php8.2-fpm.x86_64 8.2.15-1.amzn2023.0.2 @amazonlinux
php8.2-mbstring.x86_64 8.2.15-1.amzn2023.0.2 @amazonlinux
php8.2-mysqlnd.x86_64 8.2.15-1.amzn2023.0.2 @amazonlinux
php8.2-opcache.x86_64 8.2.15-1.amzn2023.0.2 @amazonlinux
php8.2-pdo.x86_64 8.2.15-1.amzn2023.0.2 @amazonlinux
php8.2-process.x86_64 8.2.15-1.amzn2023.0.2 @amazonlinux
php8.2-sodium.x86_64 8.2.15-1.amzn2023.0.2 @amazonlinux
php8.2-xml.x86_64 8.2.15-1.amzn2023.0.2 @amazonlinux
MYSQL
$ dnf list installed | grep mysql
mysql-community-client.x86_64 8.0.37-1.el9 @mysql80-community
mysql-community-client-plugins.x86_64 8.0.37-1.el9 @mysql80-community
mysql-community-common.x86_64 8.0.37-1.el9 @mysql80-community
mysql-community-devel.x86_64 8.0.37-1.el9 @mysql80-community
mysql-community-icu-data-files.x86_64 8.0.37-1.el9 @mysql80-community
mysql-community-libs.x86_64 8.0.37-1.el9 @mysql80-community
mysql-community-server.x86_64 8.0.37-1.el9 @mysql80-community
mysql80-community-release.noarch el9-1 @@commandline
php8.2-mysqlnd.x86_64 8.2.15-1.amzn2023.0.2 @amazonlinux
ドキュメントルートの所有権の変更
Apacheの初期ドキュメントルートは/var/www/htmlです。デフォルトでは root が所有者になっています。EC2へセッションマネージャーで接続している為ssm-userをapacheグループに追加し、/var/www ディレクトリの所有権を apache グループに付与します。
apacheグループにssm-userを追加
sudo usermod -a -G apache ssm-user
以下コマンドでグループに追加で来たか確認します。
$groups
ssm-user apache ssm-user
/var/www ディレクトリおよびその中のすべてのファイルとサブディレクトリの所有者を ssm-user に、グループを apache に設定します。これにより、ec2-user ユーザーがこのディレクトリに対して管理作業を行えるようになり、apache グループに属するプロセス(例えば、Apache Webサーバー)もこれらのファイルにアクセスできるようになります。
sudo chown -R ssm-user:apache /var/www
sudo chmod 2775 コマンドの中で「2」が指定するのは「セットGID(Group ID)」ビットです。
ディレクトリに適用した場合には、そのディレクトリ内で新しく作成されるファイルやサブディレクトリが、作成者のグループではなく、ディレクトリのグループ所有権を継承するようになります。
sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;
参考記事