AWS1-6 LAMP環境構築(2)

🧩 LAMP環境構築(2)

― MySQLインストールと初期設定/PHPインストールと動作確認 ―


🎯 学習目的

  • EC2(Amazon Linux 2) に MySQL(MariaDB) を導入し、データベースを利用できるようにする
  • PHP を導入し、Apacheとの連携(動的ページ実行)を確認する
  • 次回の WordPress 導入に向けた下地を完成させる

📘 1. LAMP構成の全体像(復習)

+----------------------+
|   WordPress (PHP)   |
|----------------------|
|   PHP 7.x / 8.x      |
|----------------------|
|   Apache (httpd)     |
|----------------------|
|   MySQL (MariaDB)    |
|----------------------|
|   Amazon Linux 2     |
+----------------------+

🧾 2. MySQL(MariaDB)の導入

🧩 MariaDBとは

Amazon Linux 2 では、MySQL互換の MariaDB が標準パッケージとして提供されています。
(コマンドやSQL構文はMySQLとほぼ同じ)


🧪 実習①:インストール

# 管理者権限に昇格
sudo su

# パッケージ情報更新
yum update -y

# MariaDB(MySQL互換)をインストール
yum install -y mariadb-server mariadb

# インストール確認
mysql --version

出力例:

mysql  Ver 15.1 Distrib 5.5.68-MariaDB, for Linux (x86_64)

🧪 実習②:MySQLサービスの起動と自動起動設定

# サービス起動
systemctl start mariadb

# 状態確認
systemctl status mariadb

出力例:

Active: active (running)
# 自動起動設定
systemctl enable mariadb

⚙️ 3. 初期設定(セキュリティ・rootパスワード)

初回利用時は「セキュリティ設定スクリプト」を実行して不要なアカウントを削除します。


🧪 実習③:初期設定スクリプトの実行

mysql_secure_installation

対話形式で進行します。
以下は推奨設定(講師が実際に画面で見せながら説明):

Switch to unix_socket authentication [Y/n] n

Change the root password? [Y/n] Y
New password:<= カーソル動かないので、注意深く pswd とかにしておく(研修なので)
Re-enter new password:<= カーソル動かないので、注意深く pswd とかにしておく(研修なので)

質問回答例説明
Enter current password for rootEnter(未設定なので空)初回はパスワードなし
Set root password?Yパスワード設定開始
New password任意(例:Passw0rd!強度のあるパスワード推奨
Remove anonymous users?Y匿名ユーザー削除
Disallow root login remotely?Yrootのリモート接続禁止
Remove test database and access to it?YテストDB削除
Reload privilege tables now?Y設定を反映

出力例:

Thanks for using MariaDB!

⚙️ root パスワードでログイン確認

mysql -u root -p

(パスワード入力後)

出力例:

Welcome to the MariaDB monitor.
MariaDB [(none)]> 

👉 ここまで確認できればデータベースの利用準備完了です。


🧪 実習④:テストデータベース作成

CREATE DATABASE testdb;
SHOW DATABASES;
EXIT;

出力例:

+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| testdb             |
+--------------------+

📘 講師コメント:

WordPress 導入時にはここに「wordpress」というDBを作成し、ユーザーを設定します。
今回はまずコマンド操作に慣れておきましょう。


🧾 4. PHP の導入

🧩 PHPとは

サーバー上で動作するスクリプト言語。
WordPress や多くのWebアプリは PHP で作られています。


🧪 実習⑤:PHPインストール

Amazon Linux 2 では PHP8 系を使用可能です。
(WordPress要件を満たす)

# PHP8関連パッケージを導入
sudo amazon-linux-extras enable php8.2
sudo yum clean metadata
sudo yum install -y php php-cli php-mysqlnd php-fpm php-json php-mbstring

※ php-mysqlnd は PHP と MySQL を連携させるモジュールです。


🧪 実習⑥:PHPのバージョン確認

php -v

出力例:

PHP 8.2.12 (cli) (built: Oct 2024)

🧱 5. Apache と PHP の連携設定

Apache で PHP を動かすために、
モジュールが自動で設定されているか確認します。

sudo nano /etc/httpd/conf/httpd.conf

確認:

AddType application/x-httpd-php .php

がコメントアウトされていれば有効化。
(ない場合は追記でもOK)


🧪 実習⑦:Apache再起動

sudo systemctl restart httpd

🧪 6. PHP動作テスト(phpinfo)

テスト用ファイル作成

cd /var/www/html
sudo nano info.php

内容:

<?php
phpinfo();
?>

保存後、ブラウザで確認:

http://<EC2のパブリックIP>/info.php

✅ 成功時表示:「PHP Version」「Server API」「Loaded Modules」などの情報画面。


🧩 セキュリティ注意

このページはサーバーの内部情報を表示するため、
動作確認後は必ず削除 します。

sudo rm /var/www/html/info.php

⚙️ 7. MySQL + PHP 連携テスト(オプション実習)

WordPress接続前に、PHPがDBに接続できるか確認します。

sudo nano /var/www/html/dbtest.php

内容:

<?php
$servername = "localhost";
$username = "root";
$password = "Passw0rd!"; // 設定したrootパスワード
try {
  $conn = new PDO("mysql:host=$servername;dbname=testdb", $username, $password);
  echo "✅ MySQL connection successful!";
} catch(PDOException $e) {
  echo "❌ Connection failed: " . $e->getMessage();
}
?>

ブラウザで表示:

http://<EC2のパブリックIP>/dbtest.php

✅ 成功時:

✅ MySQL connection successful!

❌ 失敗時:

Connection failed: Access denied for user 'root'@'localhost'

(パスワード/DB名を確認)


🧰 8. トラブル対応集

症状対処法
Can't connect to local MySQL serversystemctl start mariadb でDB起動確認
Access denied for usermysql_secure_installationで設定したパスワードが正しいか
PHPファイルがダウンロードされるApacheがPHPモジュールを認識していない → yum install php php-mysqlnd 再確認
phpinfo画面が真っ白Apache再起動漏れ or SELinux(Amazon Linuxでは通常OFF)

🧾 9. 実習チェックリスト

項目確認内容
MariaDBインストール完了mysql --version で確認
DB起動systemctl status mariadb が active
rootパスワード設定済みmysql -u root -p ログイン確認
PHP導入php -v バージョン確認
Apacheとの連携/info.php 表示成功
DB接続テスト/dbtest.php 成功メッセージ表示

💡 10. 講師補足ポイント

  • MySQL の root パスワードは 再発行可能sudo mysql_secure_installation 再実行)
  • PHPモジュールの一覧確認: php -m
  • Apache と PHP の関係を「動的 vs 静的」ページの比較で説明すると理解が深まる。

🧱 11. まとめ

学びのポイント内容
MariaDB(MySQL互換)AWSで安定的に使えるデータベース
PHPWebアプリに動的処理を与える言語
LAMP完成Apache + MySQL + PHP でWordPressを動かす土台完成
次のステップWordPressの手動インストール(Day2)