テーマをCocoonに変更しました!
その他

ConoHa VPSでphpMyAdminが502エラー!原因と完全解決手順まとめ【KUSANAGI対応】

FavoriteLoadingお気に入り登録
その他

ConoHa VPS で phpMyAdmin に502エラーが出た時の解決方法【完全版】

ConoHa VPS + Kusanagi の環境で phpMyAdmin にアクセスしたら 502エラーが出て全然使えなくなったトラブルの解決方法を紹介します。原因が複数重なっていて解決までかなり大変でした。同じ状況で困っている方の参考になれば嬉しいです!

最初の症状

phpMyAdmin にアクセスしようとしたら以下のエラーが表示されました。

502 Bad Gateway

「昨日まで動いていたのになぜ?」と思いながら調査を開始しました。


原因①:削除済みサイトの設定ファイルが残っていた

調査方法

まずnginxのエラーログを確認しました。

tail -20 /var/opt/kusanagi/log/nginx129/error.log

すると以下のエラーが大量に出ていました。

connect() failed (111: Connection refused) while connecting to upstream,
fastcgi://127.0.0.1:9074

9074番ポートに接続できないというエラーです。次にPHP-FPMが実際にどのポートで動いているか確認しました。

ss -tlnp | grep php

結果:

LISTEN 0  4096  127.0.0.1:9000

PHP-FPMは 9000番で動いているのに、nginxは 9074番に接続しようとしていました。

原因を特定

どの設定ファイルが間違ったポートを指定しているか調べました。

grep -r "9074" /etc/opt/kusanagi/nginx/

結果:

/etc/opt/kusanagi/nginx/conf.d/削除済みサイト.conf: fastcgi_pass 127.0.0.1:9074;

以前削除したサイトの設定ファイルが原因でした。サイト自体は削除したのに、nginxの設定ファイルだけが残っていたのです!

解決策:不要な設定ファイルを削除

rm /etc/opt/kusanagi/nginx/conf.d/削除済みサイト.conf

削除確認が出たら y を入力してEnterを押します。

/opt/kusanagi/nginx129/sbin/nginx -t
kusanagi restart

restart completed. と表示されれば完了です!

⚠️ ポイント
サイトを削除してもnginxの設定ファイルは自動で削除されません!Kusanagiでサイトを削除した後は /etc/opt/kusanagi/nginx/conf.d/ に不要な .conf ファイルが残っていないか確認しましょう。

原因②:phpMyAdmin自体がなくなっていた

502エラーは解決したものの、今度は phpMyAdmin にアクセスしても別のサイトが表示されるという問題が発生しました。

原因

phpMyAdmin を設置していたサイトごと削除してしまっていました。phpMyAdmin も一緒に消えてしまっていたのです。

解決策:phpMyAdmin を新しいサイトに再インストール

STEP 1:phpMyAdmin をダウンロード

cd /tmp
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
tar zxvf phpMyAdmin-latest-all-languages.tar.gz

STEP 2:設置したいサイトのDocumentRootに移動

mv /tmp/phpMyAdmin-*/ /home/kusanagi/サイト名/DocumentRoot/phpmyadmin

STEP 3:所有者を確認して設定

まず既存ファイルの所有者を確認します。

ls -la /home/kusanagi/サイト名/DocumentRoot/ | head -5

確認した所有者と同じように設定します(例:httpd:www の場合)。

chown -R httpd:www /home/kusanagi/サイト名/DocumentRoot/phpmyadmin
⚠️ ポイント
サイトを削除する前に phpMyAdmin など大切なツールを別の場所に移動しておきましょう!所有者のグループ名は環境によって異なります。必ず既存ファイルで確認してから設定してください。

原因③:Basic認証の設定が新しいサイトに入っていなかった

phpMyAdmin のページは表示されましたが、Basic認証のダイアログが出ませんでした。

STEP 1:設定フォルダとextra.confを作成

mkdir -p /home/kusanagi/サイト名/config/nginx

以下のコマンドを1つずつ実行してください。

echo 'location ^~ /phpmyadmin/ {' > /home/kusanagi/サイト名/config/nginx/extra.conf
echo '    auth_basic "Restricted";' >> /home/kusanagi/サイト名/config/nginx/extra.conf
echo '    auth_basic_user_file /home/kusanagi/.auth/.htpasswd;' >> /home/kusanagi/サイト名/config/nginx/extra.conf
echo '    location ~ \.php$ {' >> /home/kusanagi/サイト名/config/nginx/extra.conf
echo '        auth_basic "Restricted";' >> /home/kusanagi/サイト名/config/nginx/extra.conf
echo '        auth_basic_user_file /home/kusanagi/.auth/.htpasswd;' >> /home/kusanagi/サイト名/config/nginx/extra.conf
echo '        include conf.d/fastcgi.inc;' >> /home/kusanagi/サイト名/config/nginx/extra.conf
echo '    }' >> /home/kusanagi/サイト名/config/nginx/extra.conf
echo '}' >> /home/kusanagi/サイト名/config/nginx/extra.conf

確認:

cat /home/kusanagi/サイト名/config/nginx/extra.conf

STEP 2:サイトのnginx設定ファイルにextra.confを読み込ませる

Pythonスクリプトを使ってHTTPブロックとHTTPSブロックの両方に追加します。

echo "f='/etc/opt/kusanagi/nginx/conf.d/サイト名.conf'" > /tmp/fixsite.py
echo "t=open(f).read()" >> /tmp/fixsite.py
echo "old='include conf.d/acme.inc;'" >> /tmp/fixsite.py
echo "new=old+'\\n    include /home/kusanagi/サイト名/config/nginx/extra.conf;'" >> /tmp/fixsite.py
echo "open(f,'w').write(t.replace(old,new,2))" >> /tmp/fixsite.py
echo "print('done')" >> /tmp/fixsite.py
python3 /tmp/fixsite.py

確認:

grep -n "extra\|acme" /etc/opt/kusanagi/nginx/conf.d/サイト名.conf

STEP 3:nginxを再起動

/opt/kusanagi/nginx129/sbin/nginx -t
kusanagi restart

動作確認

ブラウザで以下にアクセスしてみましょう。

https://あなたのドメイン/phpmyadmin/

Basic認証のダイアログが表示されたら成功です!🎉


今回のトラブル全体図

① 502エラーが発生

② 削除済みサイトの設定ファイルが残っていた
→ 不要な .conf ファイルを削除して解決

③ phpMyAdmin 自体が消えていた
→ サイトごと削除されていた
→ 運用中のサイトに新規インストール

④ Basic認証が設定されていなかった
→ extra.conf を作成してサイトの conf に追加

🎉 完全解決!

まとめ:同じミスをしないためのチェックリスト

  • サイト削除前に phpMyAdmin など大切なツールを先に移動した
  • /etc/opt/kusanagi/nginx/conf.d/ に削除済みサイトの .conf が残っていないか確認した
  • ss -tlnp | grep php で PHP-FPM のポートを確認した
  • サイトの .conf の HTTP・HTTPS 両方のブロックに extra.conf を追加した

セキュリティについて

対策内容
Basic認証を必ず設定する2段階認証でセキュリティを強化
URLを推測されにくくする/phpmyadmin/ → /db_xxxxxx/ など
アクセスIPを制限する自分のIPアドレスのみ許可する
パスワードを定期的に変更するhtpasswd コマンドで更新

同じところでハマっている方の参考になれば嬉しいです!
質問があればコメントで気軽に聞いてください😄

気になる中古パソコン

Supported by Rakuten Web Service

コメント

※当サイトは、Amazon、楽天アソシエイト・他プログラムの参加者です。リンクを通じて商品を購入すると、紹介料を得る場合があります。
タイトルとURLをコピーしました