
Amazon Linux 2023でLAMP環境を構築してみた
はじめに
クラウド事業統括本部 プロフェッショナルサービス事業本部 コンサルティング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環境を構築する際の参考になれば幸いです。







