AWS2-6 質疑応答

💬 AWS LAMP/WordPress 2日間研修:よくある質問(FAQ 20)


【環境・接続関連】

Q1. SSHで接続できません。
A1.
以下を確認しましょう:

  • インスタンスのセキュリティグループに 22番ポート (SSH) が許可されているか。
  • 接続コマンドのユーザー名が ec2-user になっているか。
  • .pem ファイルのパーミッションを chmod 400 に設定済みか。
  • Elastic IPが割り当てられているか(再起動で変わることがあります)。

Q2. 自分のIPが頻繁に変わるのでSSH制限をかけるのが面倒です。
A2.
固定IP付きVPNや、AWS Systems Manager Session Managerを利用すると安全・便利です。
または一時的に「マイIP」に設定し、作業終了後に削除するのが安全です。


Q3. yum update でエラーが出るときは?
A3.
一時的なミラー不具合の場合が多いです。
sudo yum clean all && sudo yum update -y を試します。
それでも失敗する場合は、時間をおいて再実行。


【Apache/LAMP関連】

Q4. Apacheをインストールしたのに「It works!」が表示されません。
A4.

  • sudo systemctl start httpd で起動しているか確認。
  • セキュリティグループで HTTP(80) を開放しているか。
  • /var/www/htmlindex.html が存在するか確認しましょう。

Q5. ブラウザでアクセスすると「403 Forbidden」になります。
A5.
ファイルの権限または所有者が不正です。

sudo chown -R ec2-user:apache /var/www/html
find /var/www/html -type d -exec sudo chmod 755 {} \;
find /var/www/html -type f -exec sudo chmod 644 {} \;

で修正できます。


Q6. PHPファイルを開くとダウンロードされてしまいます。
A6.
ApacheがPHPモジュールを読み込めていません。
sudo amazon-linux-extras enable php8.2sudo yum install -y php php-mysqlnd
sudo systemctl restart httpd で解決します。


【MySQL/DB関連】

Q7. MySQLにログインできません。
A7.
rootパスワードを忘れた場合は再設定可能です:

sudo systemctl stop mariadb
sudo mysqld_safe --skip-grant-tables &
mysql -u root
UPDATE mysql.user SET Password=PASSWORD('新パスワード') WHERE User='root';
FLUSH PRIVILEGES;
exit;
sudo systemctl restart mariadb

Q8. WordPressのインストール画面で「データベース接続確立エラー」が出ます。
A8.

  • wp-config.phpDB_NAME, DB_USER, DB_PASSWORD, DB_HOST を再確認。
  • DBユーザーが localhost からアクセス許可されているか確認します。
  • sudo systemctl status mariadb でDBが起動しているか確認。

Q9. MySQLのデータベースはバックアップできますか?
A9.
はい。以下のコマンドでダンプできます。

mysqldump -u root -p wpdb > /home/ec2-user/backup.sql

復元は mysql -u root -p wpdb < backup.sql


【WordPress関連】

Q10. wp-config.php のソルトって何ですか?
A10.
WordPressのCookieとセッションを暗号化するためのランダムキーです。
https://api.wordpress.org/secret-key/1.1/salt/ から自動生成して貼り付けます。


Q11. 管理画面にログインできません。パスワードを忘れました。
A11.
DBで直接リセット可能です。

UPDATE wp_users SET user_pass=MD5('NewPass123!') WHERE user_login='admin';

またはログイン画面の「パスワードをお忘れですか?」から再発行します。


Q12. プラグインを入れたら真っ白になりました。
A12.
問題のプラグインを無効化しましょう。SSHから以下を実行:

cd /var/www/html/wp-content/plugins
mv プラグイン名 プラグイン名_bak

→ 再度管理画面にアクセスできます。


Q13. 投稿URLが「?p=123」から変わりません。
A13.
「設定 → パーマリンク設定 → 投稿名」を選択して保存してください。
.htaccess にリライト設定が作成されない場合は、Apacheの AllowOverride All を確認します。


【SSL/ネットワーク関連】

Q14. HTTPSが「保護されていない通信」になります。
A14.
Let’s Encryptで発行した証明書の対象にドメインが含まれていない可能性。
sudo certbot --apache -d example.com -d www.example.com を再実行。


Q15. certbot更新を自動化したいです。
A15.
Amazon Linuxでは自動cronが既に設定されています。
動作確認は:

sudo certbot renew --dry-run

を実行して「Congratulations!」と出ればOKです。


Q16. Elastic IPを付けないとドメインが安定しませんか?
A16.
はい。EC2を再起動するとパブリックIPが変わります。
必ず Elastic IP を割り当てて固定しましょう。


【バックアップ/運用関連】

Q17. スナップショットとAMIの違いは?
A17.

  • スナップショット:EBSボリューム単位のバックアップ(差分保存)
  • AMI:EC2全体(設定+EBS含む)のイメージ。新規起動に利用できます。

Q18. スナップショットはどのくらいの頻度で取ればいいですか?
A18.

  • 学習・開発環境:1日1回または大きな変更前後
  • 本番環境:週次 or 自動スケジュール(AWS BackupまたはLambda)

Q19. Route 53でドメインを設定したのに反映されません。
A19.

  • ネームサーバ(NS)の変更が完了していない可能性(最大48時間)
  • AレコードがElastic IPを指しているか確認
  • DNSキャッシュをクリア(ブラウザ再起動 or ipconfig /flushdns

Q20. CloudFrontを使うと何が良くなりますか?
A20.

  • 世界中にキャッシュを配置して 表示速度が大幅に向上
  • EC2へのリクエスト数が減り、コスト削減・セキュリティ強化
  • 画像や動画など大容量ファイルを高速に配信可能

⚙️ AWS LAMP/WordPressトラブル対応手順書(チェックリスト)


🔸 1. SSH接続できない

チェック項目内容結果
[ ] セキュリティグループの22番ポートが許可されているかEC2管理画面 → [セキュリティ] → インバウンドルールを確認。許可IPが「自分のグローバルIP/32」になっているか
[ ] Elastic IPを使っているか一時IP(再起動で変化)ではなくElastic IPで接続しているか
[ ] 接続ユーザー名が正しいかAmazon Linux 2では ec2-user を使用
[ ] 鍵ファイル権限chmod 400 mykey.pem になっているか
[ ] SSHコマンド例ssh -i mykey.pem ec2-user@xx.xx.xx.xx で実行できるか

🔸 2. Apacheが動作しない

チェック項目コマンド/確認内容結果
[ ] サービス起動状態sudo systemctl status httpd → active(running)か
[ ] 自動起動設定sudo systemctl enable httpd で登録済みか
[ ] ポート開放SGで「HTTP(80)」が許可されているか
[ ] ファイル存在/var/www/html/index.html が存在するか
[ ] エラーログ確認sudo tail -n 10 /var/log/httpd/error_log でエラー内容確認

🔸 3. ページが403 Forbiddenになる

チェック項目内容結果
[ ] 所有者sudo chown -R ec2-user:apache /var/www/html で適正化
[ ] パーミッションディレクトリ755、ファイル644になっているか
[ ] DocumentRoot/etc/httpd/conf/httpd.conf の DocumentRoot が /var/www/html に設定されているか
[ ] SELinuxAmazon Linux 2ではデフォルト無効だが、有効化されていないか確認

🔸 4. PHPが動作しない・ダウンロードされる

チェック項目コマンド/設定結果
[ ] PHPインストール済みphp -v でバージョン表示されるか
[ ] Apache-PHP連携yum install -y php php-mysqlnd が導入済みか
[ ] Apache再起動sudo systemctl restart httpd
[ ] テストファイル/var/www/html/info.php<?php phpinfo(); ?> で確認

🔸 5. MySQL接続エラー

チェック項目内容結果
[ ] DBサービス起動sudo systemctl status mariadb → activeか
[ ] ユーザー権限GRANT 設定が wpuser@localhost に付与されているか
[ ] wp-config.php のDB情報DB名、ユーザー、パスワード、ホスト(localhost)に誤りがないか
[ ] 手動ログインmysql -u wpuser -p でログインできるか

🔸 6. WordPressインストール画面が出ない

チェック項目内容結果
[ ] /var/www/html に WordPress ファイルがあるかindex.php, wp-config.php が存在するか
[ ] Apache動作中かsudo systemctl status httpd
[ ] ブラウザURLhttp://<IP>/wp-admin/install.php にアクセスしているか

🔸 7. 「データベース接続確立エラー」

チェック項目内容結果
[ ] MySQL起動systemctl start mariadb
[ ] wp-config.php設定DB名/ユーザー名/パスワード/ホスト確認
[ ] DBユーザー確認SELECT Host,User FROM mysql.user; で該当ユーザー確認
[ ] WordPress側sudo tail -n 20 /var/log/httpd/error_log で原因確認

🔸 8. WordPressが真っ白になる(ホワイトスクリーン)

チェック項目内容結果
[ ] 新規プラグインを直前に導入したかwp-content/plugins/ 内で該当フォルダを _bak にリネーム
[ ] PHPエラー確認/var/log/httpd/error_log を確認
[ ] メモリ制限wp-config.phpdefine('WP_MEMORY_LIMIT','128M'); を追記

🔸 9. HTTPSで「保護されていない通信」

チェック項目内容結果
[ ] 証明書発行済み/etc/letsencrypt/live/ 内に証明書ファイルがあるか
[ ] certbot発行時のドメイン名-d example.com -d www.example.com が指定されているか
[ ] Apache設定SSLCertificateFile パスが正しいか
[ ] サイトURLWordPress設定のURLが https:// になっているか

🔸 10. Route53でドメインが開かない

チェック項目内容結果
[ ] ネームサーバ反映済みドメイン管理会社側のNSをRoute53の値に設定
[ ] Aレコード設定Elastic IPを指定済みか
[ ] 反映待機反映に最大48時間かかる(通常1〜3時間)
[ ] キャッシュクリアipconfig /flushdns またはブラウザ再起動

🔸 11. certbot更新が動かない

チェック項目内容結果
[ ] 自動更新サービス`sudo systemctl list-timersgrep certbot` で存在確認
[ ] 手動テストsudo certbot renew --dry-run
[ ] ポート80/443開放HTTP-01認証用に開放されているか

🔸 12. AMI/スナップショットが失敗する

チェック項目内容結果
[ ] インスタンス停止の有無作成時にインスタンスが実行中でも問題ないが、整合性確保には停止推奨
[ ] ボリューム選択EBS(ルートボリューム)が正しいか
[ ] ステータス確認スナップショットが completed になるまで待機

🔸 13. CloudFrontで更新内容が反映されない

チェック項目内容結果
[ ] キャッシュ破棄(Invalidation)CloudFront管理画面 → [Invalidations] → /* で作成
[ ] TTL設定デフォルトTTLが長すぎないか(推奨:3600秒以下)
[ ] S3側更新確認S3内ファイルの更新日時確認

🔸 14. サイト全体が遅い

チェック項目内容結果
[ ] PHPバージョンPHP8.1以上になっているか
[ ] キャッシュWP Super Cache / W3 Total Cache 有効か
[ ] 画像圧縮EWWW Image Optimizer など利用
[ ] CloudFrontCDN経由で配信されているか

🔸 15. バックアップ確認

チェック項目内容結果
[ ] WordPress DBバックアップUpdraftPlusやmysqldumpで取得済みか
[ ] ファイルバックアップwp-content をS3やローカルにコピー
[ ] スナップショット最新のスナップショットが completed 状態か
[ ] AMI定期的に作成(少なくとも月1回)されているか

🧩 補足:緊急時対応フローチャート(概要)

┌────────────┐
│ サイトにアクセス不可 │
└────┬────────┘
     ▼
SSH接続確認 → × → SG / IP / PEM 確認
     ▼
Apache起動確認 → × → systemctl start httpd
     ▼
DB接続確認 → × → mariadb start / wp-config.php再確認
     ▼
HTTPS動作確認 → × → certbot再発行 or URL修正
     ▼
最終手段:AMIまたはスナップショットから復元

✅ 総合チェックシート(1枚版)

項目チェック
SSH接続:22番ポートと鍵設定を確認
Apache起動&HTTP(80)許可
PHP・MariaDBインストール済み
WordPress wp-config.php 設定正確
パーミッション:755/644
HTTPS証明書(Let’s Encrypt)有効
Route53 Aレコード/NS設定完了
CloudFront CDN反映済み
最新スナップショット存在
AMIバックアップ作成済み