💬 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/htmlにindex.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.2 → sudo 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.phpのDB_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 に設定されているか | |
| [ ] SELinux | Amazon 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 | |
| [ ] ブラウザURL | http://<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.php に define('WP_MEMORY_LIMIT','128M'); を追記 |
🔸 9. HTTPSで「保護されていない通信」
| チェック項目 | 内容 | 結果 |
|---|---|---|
| [ ] 証明書発行済み | /etc/letsencrypt/live/ 内に証明書ファイルがあるか | |
| [ ] certbot発行時のドメイン名 | -d example.com -d www.example.com が指定されているか | |
| [ ] Apache設定 | SSLCertificateFile パスが正しいか | |
| [ ] サイトURL | WordPress設定のURLが https:// になっているか |
🔸 10. Route53でドメインが開かない
| チェック項目 | 内容 | 結果 |
|---|---|---|
| [ ] ネームサーバ反映済み | ドメイン管理会社側のNSをRoute53の値に設定 | |
| [ ] Aレコード設定 | Elastic IPを指定済みか | |
| [ ] 反映待機 | 反映に最大48時間かかる(通常1〜3時間) | |
| [ ] キャッシュクリア | ipconfig /flushdns またはブラウザ再起動 |
🔸 11. certbot更新が動かない
| チェック項目 | 内容 | 結果 |
|---|---|---|
| [ ] 自動更新サービス | `sudo systemctl list-timers | grep 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 など利用 | |
| [ ] CloudFront | CDN経由で配信されているか |
🔸 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バックアップ作成済み | ☐ |