Amazon Linux 2023でLAMP環境を構築してみた

Amazon Linux 2023でLAMP環境を構築してみた

AWS公式手順を参考に、Amazon Linux 2023でLAMP環境を構築しました。Session ManagerでEC2に接続し、Apache・PHP・MariaDBの導入、起動・自動起動設定、MariaDBの初期セキュリティ設定を実施。ブラウザーでの動作確認まで、実行コマンドとともに紹介します。
2026.11.13

はじめに

クラウド事業統括本部 プロフェッショナルサービス事業本部 コンサルティング2部の山﨑です。

ITエンジニアを目指して自己学習を始めた頃、ALB・EC2・RDSを組み合わせた三層Webアーキテクチャを構築しました。当時は、EC2上にApache・PHPを導入し、データベースにはRDSを利用していました。

LinuCのレベル1・レベル2・レベル3(304)を取得しており、Linuxを触ることも好きなので、今回は久しぶりにAmazon Linux 2023でLAMP環境を構築してみました。

AWS公式ドキュメントを参考に、Apache・PHP・MariaDBをインストールし、ブラウザーからApacheのテストページとPHPの実行結果を確認します。

EC2インスタンスへの接続には、SSHではなくAWS Systems Manager Session Managerを利用します。

Amazon Linux 2023でLAMP環境を構築する際の参考になれば幸いです。

今回やりたいこと

今回は、以下を実施します。

  • Session ManagerでEC2インスタンスに接続
  • Apache・PHP・MariaDBをインストール
  • 各サービスの起動と自動起動を設定
  • MariaDBの初期セキュリティ設定
  • Webディレクトリの所有者とアクセス権限を設定
  • ブラウザーからApacheとPHPの動作を確認
  • PHPの確認用ファイルを削除

構築手順は、AWS公式の「チュートリアル: AL2023 に LAMP サーバーをインストールする」を参考にしています。

なお、今回は学習・検証用の基本構築を対象とし、HTTPSの設定、phpMyAdminの導入、PHPからMariaDBへの接続テストは実施しません。

検証環境

今回使用した環境は以下です。

項目 内容
リージョン 東京リージョン(ap-northeast-1)
OS Amazon Linux 2023
インスタンスタイプ t3.small
EC2インスタンス名 test-lamp-amazonlinux2023-ec2
接続方法 Session Manager
Webサーバー Apache 2.4.71
PHP PHP 8.5.12
データベース MariaDB 10.5.29

バージョンは、今回のインストール結果に基づくものです。実施する時期や利用するリポジトリによって、導入されるバージョンは異なる場合があります。

今回はALB・RDSを使用せず、1台のEC2インスタンス上にApache・PHP・MariaDBをインストールして設定します。

やってみる

手順1:Session ManagerでEC2に接続する

対象のインスタンスを選択し、「接続」から「SSM Session Managerで接続」をクリックします。

問題なく接続できたため、ec2-userへ切り替えます。

sudo -iu ec2-user

実行後、プロンプトが以下のようになりました。

[ec2-user@ip-<プライベートIPv4> ~]$

以降のコマンドは、CloudShellではなく、このEC2上のシェルで実行します。

手順2:パッケージを更新する

まず、インストール済みパッケージを更新します。

sudo dnf upgrade -y

今回の実行結果は以下でした。

Dependencies resolved.
Nothing to do.
Complete!

今回は、設定されているリポジトリで更新対象となるパッケージはありませんでした。

手順3:Apache・PHPをインストールする

ApacheとPHP関連パッケージをインストールします。

sudo dnf install -y httpd wget php-fpm php-mysqli php-json php php-devel

最後にComplete!が表示され、インストールが完了したことを確認してください。

手順4:MariaDBをインストールする

続いて、MariaDBをインストールします。

sudo dnf install mariadb105-server

途中で確認が表示されるので、yを入力します。

Is this ok [y/N]: y

Complete!が表示されれば、インストール完了です。

手順5:Apacheを起動し、自動起動を設定する

Apacheを起動します。

sudo systemctl start httpd

続いて、OS起動時にApacheも自動起動するよう設定します。

sudo systemctl enable httpd

状態を確認します。

sudo systemctl status httpd

起動状態はactive (running)、自動起動設定はenabledになっていれば設定完了です。

手順6:PHP-FPMを起動し、自動起動を設定する

PHP-FPMを起動し、自動起動を設定します。

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

状態を確認します。

sudo systemctl status php-fpm

起動状態はactive (running)、自動起動設定はenabledになっていれば設定完了です。

手順7:MariaDBの自動起動設定と起動を行う

MariaDBを起動し、自動起動を設定します。

sudo systemctl start mariadb
sudo systemctl enable mariadb

状態を確認します。

sudo systemctl status mariadb

起動状態はactive (running)、自動起動設定はenabledになっていれば設定完了です。

これで、Apache・PHP-FPM・MariaDBの起動と自動起動設定ができました。

手順8:MariaDBの初期セキュリティ設定を行う

以下のコマンドで、MariaDBの初期セキュリティ設定を行います。

sudo mysql_secure_installation

対話形式で質問が表示されるので、内容を確認しながら回答します。

今回の回答は以下です。

質問 今回の回答 内容
Enter current password for root (enter for none): 何も入力せずEnter 今回は新規導入後で、MariaDBのrootパスワードを設定していないため
Switch to unix_socket authentication [Y/n] y MariaDBのrootアカウントでUnix socket認証を利用するよう設定
Change the root password? [Y/n] n Unix socket認証を利用するため、rootパスワードの設定・変更を省略
Remove anonymous users? [Y/n] y 匿名DBユーザーを削除
Disallow root login remotely? [Y/n] y ローカルホスト以外から接続するためのrootアカウントを削除
Remove test database and access to it? [Y/n] y testデータベースと、テスト用DBへのアクセス権限を削除
Reload privilege tables now? [Y/n] y 権限テーブルを再読み込みし、変更を反映

MariaDB公式ドキュメントを参考に、今回はUnix socket認証を利用し、rootパスワードの追加設定は省略しました。
MariaDBのセキュアインストール | サーバー | MariaDBドキュメント

最後に以下が表示され、初期セキュリティ設定が完了しました。

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

手順9:ブラウザーからApacheを確認する

自分のPCのブラウザーから、EC2のパブリックIPv4アドレスへアクセスします。

http://<EC2のパブリックIPv4>/

ブラウザーに以下が表示されました。

It works!

Apacheのテストページが表示され、HTTPでアクセスできることを確認できました。

手順10:Webディレクトリの所有者と権限を設定する

続いて、ec2-userでWebファイルを配置できるようにします。

まず、ec2-userをapacheグループに追加します。

sudo usermod -a -G apache ec2-user

グループ変更を反映するため、一度ec2-userのシェルを終了します。

exit

元のSession Managerのシェルへ戻ったら、再度ec2-userへ切り替えます。

sudo -iu ec2-user

所属グループを確認します。

groups

今回の結果は以下でした。

ec2-user adm wheel apache systemd-journal

apacheが含まれていることを確認できました。

次に、/var/wwwとその配下の所有者・グループを変更します。

sudo chown -R ec2-user:apache /var/www

ディレクトリの権限を設定します。

sudo chmod 2775 /var/www && find /var/www -type d -exec sudo chmod 2775 {} \;

続いて、ファイルの権限を設定します。

find /var/www -type f -exec sudo chmod 0664 {} \;

手順11:PHPの動作を確認する

Apacheのドキュメントルートに、確認用のPHPファイルを作成します。

echo "<?php phpinfo(); ?>" > /var/www/html/phpinfo.php

ブラウザーで、以下へアクセスします。

http://<EC2のパブリックIPv4>/phpinfo.php

PHPの情報ページが表示されました。

これで、Apache経由でPHPが実行できることを確認できました。

確認後は、ファイルを削除します。

rm /var/www/html/phpinfo.php

同じURLを再読み込みしたところ、今回は以下が表示されました。

File not found.

PHPの情報ページが表示されなくなったことを確認し、動作確認は完了です。

今回確認できたこと

今回の作業結果を整理すると、以下のとおりです。

確認項目 結果
Session Managerからの接続 接続できた
Apacheの起動・自動起動設定 active (running)、enabledを確認
PHP-FPMの起動・自動起動設定 active (running)、enabledを確認
MariaDBの起動・自動起動設定 active (running)、enabledを確認
MariaDBの初期セキュリティ設定 完了
ApacheのHTTP応答 It works!を確認
Apache経由のPHP実行 PHP情報ページの表示を確認
PHP確認ファイルの削除 File not found.の表示を確認

まとめ

今回は、AWS公式手順を参考に、Amazon Linux 2023へLAMP環境を構築してみました。

実施した内容は以下のとおりです。

  • Session ManagerでEC2へ接続
  • Apache・PHP・MariaDBをインストール
  • 各サービスの起動と自動起動を設定
  • MariaDBの初期セキュリティ設定
  • Webディレクトリの所有者とアクセス権限を設定
  • ブラウザーからApacheとPHPの動作を確認
  • PHPの確認用ファイルを削除

接続にはSession Managerを利用し、MariaDBはUnix socket認証を有効にする構成としました。

Amazon Linux 2023でLAMP環境を構築する際の参考になれば幸いです。

この記事をシェアする

AWSのお困り事はクラスメソッドへ

関連記事