テーマをCocoonに変更しました!
wordpress

ConoHa VPS+KUSANAGIでphpMyAdminにBasic認証を設定する方法【初心者向け】

FavoriteLoadingお気に入り登録
wordpress

ConoHa VPS + Kusanagi で phpMyAdmin に2段階認証を設定する方法【超初心者向け】

こんにちは!今回はConoHa VPSでKusanagiを使ってWordPressを構築した後に、phpMyAdminに2段階認証(Basic認証)を設定する方法を紹介します。

実は私自身、この設定に2日間もかかってしまいました。同じように悩んでいる方の参考になれば嬉しいです!

  1. そもそもBasic認証って何?
  2. 事前に確認すること
  3. STEP 1:パスワードファイルを作成する
    1. 1-1:保存用フォルダを作る
    2. 1-2:パスワードファイルを作る
  4. STEP 2:nginxの設定ファイルを作る
    1. 2-1:設定フォルダを作る
    2. 2-2:設定ファイルを1行ずつ作る
    3. 2-3:ちゃんと作れたか確認する
  5. STEP 3:nginxにextra.confを読み込ませる
    1. 3-1:Pythonスクリプトを作る
    2. 3-2:スクリプトを実行する
    3. 3-3:正しく追加されたか確認する
  6. STEP 4:nginxを再起動する
    1. 4-1:設定ファイルにエラーがないか確認
    2. 4-2:nginxを再起動
  7. STEP 5:動作確認
  8. STEP 6:phpMyAdminの設定ファイルを整える
    1. 6-1:設定ファイルをコピーする
    2. 6-2:viエディタで設定ファイルを開く
    3. 6-3:16行目に移動する
    4. 6-4:編集モードに入る
    5. 6-5:ランダム文字列を入力
    6. 6-6:保存して終了
  9. まとめ
  10. ハマりやすいポイント
  11. 1. phpMyAdmin のインストールコマンドが存在しなかった
  12. 2. nginx のコマンドが見つからなかった
  13. 3. 設定ファイルの中身が不完全だった
  14. 4. 設定が重複してしまった
  15. 5. serverブロックの外に設定を書いてしまった
  16. 6. WordPress の PHP 設定が優先されて Basic認証が効かなかった
  17. 7. HTTP と HTTPS で別々の設定が必要だった
  18. 🗺️ トラブルの全体図
  19. ✅ まとめ:同じ失敗をしないために
  20. ConoHa VPS でサイトにアクセスできない時の解決方法【セキュリティグループの設定】
    1. 原因:セキュリティグループに「IPv4v6-Web」が設定されていなかった
    2. セキュリティグループとは?
    3. 解決手順
      1. STEP 1:ConoHaコントロールパネルにログイン
      2. STEP 2:サーバーの詳細画面を開く
      3. STEP 3:セキュリティグループを確認する
      4. STEP 4:IPv4v6-Web を追加する
      5. STEP 5:動作確認
    4. よくある間違い
    5. まとめ

そもそもBasic認証って何?

phpMyAdminはデータベースを管理できるツールです。つまりWordPressのすべてのデータが入っている場所にアクセスできる、とても重要なツールです。

もしphpMyAdminが誰でも自由に開ける状態だと、悪い人に入られてデータを盗まれたり、サイトを壊されたりする危険があります。

そこで使うのがBasic認証です。

Basic認証とは、ページを開こうとするとユーザー名とパスワードを入力する画面が出てくる仕組みのことです。

phpMyAdminにBasic認証を設定することで、2段階のログインが必要になります。

  1. まずBasic認証のユーザー名・パスワードを入力
  2. 次にphpMyAdmin自体のログイン画面でユーザー名・パスワードを入力

事前に確認すること

  • ConoHa VPS を使っている
  • Kusanagi で WordPress を構築済み
  • phpMyAdmin を手動でインストール済み
    /home/kusanagi/サイト名/DocumentRoot/phpmyadmin/

STEP 1:パスワードファイルを作成する

まずはBasic認証で使うユーザー名とパスワードのファイルを作ります。

ConoHaのコンソール画面からサーバーにログインして、以下のコマンドを実行してください。

1-1:保存用フォルダを作る

mkdir -p /home/kusanagi/.auth

mkdirは「フォルダを作る」コマンドです。-pをつけると途中のフォルダも一緒に作ってくれます。

1-2:パスワードファイルを作る

まずはBasic認証で使うユーザー名とパスワードのファイルを作ります。

htpasswd -c /home/kusanagi/.auth/.htpasswd admin

実行すると以下のようなメッセージが出ます。

New password:
Re-type new password:
Adding password for user admin

好きなパスワードを入力してください(入力中は文字が表示されませんが正常です)。

ここで設定したパスワードを必ずメモしておきましょう!

STEP 2:nginxの設定ファイルを作る

次に「/phpmyadmin/にアクセスしたときにBasic認証を要求する」という設定をnginxに教えます。

2-1:設定フォルダを作る

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

※「サイト名」は自分のサイト名に変えてください(例:you_site)

2-2:設定ファイルを1行ずつ作る

以下のコマンドを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

2-3:ちゃんと作れたか確認する

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

以下のように表示されればOKです!

location ^~ /phpmyadmin/ {
    auth_basic "Restricted";
    auth_basic_user_file /home/kusanagi/.auth/.htpasswd;
    location ~ \.php$ {
        auth_basic "Restricted";
        auth_basic_user_file /home/kusanagi/.auth/.htpasswd;
        include conf.d/fastcgi.inc;
    }
}

STEP 3:nginxにextra.confを読み込ませる

作った設定ファイルをnginxに読み込ませます。

3-1:Pythonスクリプトを作る

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

3-2:スクリプトを実行する

python3 /tmp/fix.py

3-3:正しく追加されたか確認する

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

extra.confの行番号がacme.incの行番号の直後になっていればOKです。

STEP 4:nginxを再起動する

設定を反映させます。

4-1:設定ファイルにエラーがないか確認

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

以下のように表示されればOKです。

4-2:nginxを再起動

kusanagi restart

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

STEP 5:動作確認

ブラウザで以下にアクセスします。

http://サーバーのIPアドレス/phpmyadmin/

ユーザー名とパスワードを入力するダイアログが表示されたら成功です!

  • ユーザー名:admin
  • パスワード:STEP 1-2で設定したパスワード

STEP 6:phpMyAdminの設定ファイルを整える

最後にphpMyAdmin自体の設定も整えましょう。

6-1:設定ファイルをコピーする

cp /home/kusanagi/サイト名/DocumentRoot/phpmyadmin/config.sample.inc.php \
   /home/kusanagi/サイト名/DocumentRoot/phpmyadmin/config.inc.php

6-2:viエディタで設定ファイルを開く

vi /home/kusanagi/サイト名/DocumentRoot/phpmyadmin/config.inc.php

6-3:16行目に移動する

viが開いたら以下を入力してEnterを押します。

:16

6-4:編集モードに入る

i

画面下に— INSERT —と表示されたらOKです。

6-5:ランダム文字列を入力

‘ ‘の間にカーソルを移動して、32文字以上のランダムな文字列を入力します。

AbCdEfGhIjKlMnOpQrStUvWxYz123456

6-6:保存して終了

EscキーでINSERTモードを抜けてから

:wq

を入力してEnterを押せば完了です!

まとめ

STEP内容
STEP 1パスワードファイルの作成
STEP 2Basic認証の設定ファイルを作成
STEP 3nginxにextra.confを読み込ませる
STEP 4nginxを再起動
STEP 5動作確認
STEP 6phpMyAdminの設定ファイルを整える

ハマりやすいポイント

その1:nginxのパスが普通と違う

KusanagiのnginxはPATHが通っておらず、nginx -tでは動きません。

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

その2:HTTPとHTTPSで別々に設定が必要

you_site.confにはHTTPブロックとHTTPSブロックの2つがあります。
両方にextra.confを読み込ませないと片方でBasic認証が効きません。

その3:コマンドが長いと途切れる

ConoHaのコンソールは長いコマンドが途切れることがあります。
長いコマンドは分割して1行ずつ実行しましょう。

ConoHa VPS + Kusanagi で phpMyAdmin の設定に
2日かかった話【失敗談と解決策まとめ】


同じところで詰まっている方の参考になれば嬉しいです!

ConoHa VPS に Kusanagi を使って WordPress を構築した後、データベースを管理するために phpMyAdmin を導入しようとしました。さらにセキュリティのため Basic認証(2段階のログイン) を設定しようとしたのですが、これが思った以上に大変でした。

1. phpMyAdmin のインストールコマンドが存在しなかった

▶ 何をしたか

ネットで調べると「Kusanagi では以下のコマンドでインストールできる」という記事が多数出てきました。

kusanagi addon install pma you_site

✕ 何が起きたか

kusanagi addon install: error: argument module: invalid choice: 'pma'
(choose from zabbix, gemini)

! 原因

Kusanagi がバージョンアップして pma コマンドが廃止されていました。
現在の Kusanagi では addon install で使えるのは zabbixgemini のみです。ネット上の古い記事を参考にしていたことが原因でした。

✓ 解決策

phpMyAdmin を手動でダウンロードして設置することで解決しました。

cd /tmp
wget https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz
tar zxvf phpMyAdmin-latest-all-languages.tar.gz
mv /tmp/phpMyAdmin-*/ /home/kusanagi/you_site/DocumentRoot/phpmyadmin

💡 教訓

ネットの記事は公開日を必ず確認しましょう!Kusanagi のような頻繁にアップデートされるソフトウェアは、古い記事の情報が使えないことがあります。

2. nginx のコマンドが見つからなかった

▶ 何をしたか

設定ファイルを作った後、エラーがないか確認しようとしました。

nginx -t

✕ 何が起きたか

-bash: nginx: command not found

! 原因

Kusanagi の nginx は特殊な場所にインストールされており、通常のパスが通っていませんでした。
find コマンドで探したところ、正しいパスは以下でした。

/opt/kusanagi/nginx129/sbin/nginx

✓ 解決策

フルパスで実行することで解決しました。

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

💡 教訓

Kusanagi 環境では通常の Linux コマンドが使えないことがあります。find / -name "nginx" -type f で場所を探しましょう。

3. 設定ファイルの中身が不完全だった

▶ 何をしたか

Basic認証の設定ファイル(extra.conf)を以下のように作りました。

auth_basic "Restricted";
auth_basic_user_file /home/kusanagi/.auth/.htpasswd;

✕ 何が起きたか

nginx の設定チェックでエラーが出ました。

! 原因

location { } ブロックで囲まないと、nginx はどの URL に設定を適用すればいいか理解できません。
正しくは以下のように書く必要がありました。

location ^~ /phpmyadmin/ {
    auth_basic "Restricted";
    auth_basic_user_file /home/kusanagi/.auth/.htpasswd;
}

💡 教訓

nginx の設定はどの URL に適用するかlocation で必ず指定する必要があります。

4. 設定が重複してしまった

▶ 何をしたか

設定がうまくいかず、同じコマンドを何度も実行してしまいました。

echo 'include /home/.../extra.conf;' >> default.conf

✕ 何が起きたか

同じ行が 4行も重複してしまいました。

include /home/kusanagi/you_site/config/nginx/extra.conf;
include /home/kusanagi/you_site/config/nginx/extra.conf;
include /home/kusanagi/you_site/config/nginx/extra.conf;
include /home/kusanagi/you_site/config/nginx/extra.conf;

✓ 解決策

ファイルを一度リセットして1行だけ書き直しました。
>> は追記、> は上書きです。

echo 'include /home/.../extra.conf;' > default.conf

💡 教訓

>>追記>上書きです。ファイルをリセットしたい時は > を使いましょう。

5. serverブロックの外に設定を書いてしまった

✕ 何が起きたか

設定が }外側に追記されてしまいました。

    include conf.d/fcache_purge.inc;
}  ← serverブロックの終わり

include /home/.../extra.conf;  ← ここに入ってしまった(無効!)

! 原因

nginx の設定は必ず server { } ブロックの内側に書かないと無効になります。

✓ 解決策

Python スクリプトを使って正しい位置に挿入しました。

💡 教訓

nginx の設定ファイルを手動で編集するときは } の位置に注意しましょう。設定後は必ず nginx -t でチェックしましょう。

6. WordPress の PHP 設定が優先されて Basic認証が効かなかった

✕ 何が起きたか

設定ファイルを正しく作って nginx を再起動しても、Basic認証のダイアログが出ずにphpMyAdmin の画面が直接表示されてしまいました。

! 原因

Kusanagi の WordPress 用 nginx 設定(you_site.wp.inc)の中に、PHP ファイルを処理する以下のルールがありました。

location ~ [^/]\.php {
    ...
}

nginx には location の優先順位 というルールがあります。~(正規表現)の location は通常の location より優先されるため、phpMyAdmin の PHP ファイルにアクセスすると WordPress のルールが先に適用されてしまい、Basic認証がスキップされていました。

✓ 解決策

^~ という特別な指定を使いました。

location ^~ /phpmyadmin/ {
    auth_basic "Restricted";
    auth_basic_user_file /home/kusanagi/.auth/.htpasswd;
    location ~ \.php$ {
        auth_basic "Restricted";
        auth_basic_user_file /home/kusanagi/.htpasswd;
        include conf.d/fastcgi.inc;
    }
}

💡 教訓

nginx の location には優先順位があります。
=(完全一致) → ② ^~(正規表現より優先) → ③ ~(正規表現) → ④ 通常の前方一致

7. HTTP と HTTPS で別々の設定が必要だった

✕ 何が起きたか

extra.conf の読み込みを追加してもまだ Basic認証が表示されませんでした。

! 原因

you_site.conf の中には実は 2つのサーバーブロックがあります。

server {
    listen 80;    ← HTTPブロック
    ...
}

server {
    listen 443;   ← HTTPSブロック
    ...
}

extra.conf の読み込みを HTTPS ブロックにしか追加していなかったため、http:// でアクセスすると Basic認証が効きませんでした。

✓ 解決策

HTTP ブロックにも extra.conf の読み込みを追加して解決しました。

💡 教訓

nginx の設定ファイルには HTTP と HTTPS で別々のサーバーブロックがあります。両方に設定を追加しないと片方でしか効きません。

🗺️ トラブルの全体図

1
phpMyAdmin コマンドが廃止
→ 手動インストールで解決

2
nginx のパスが特殊
→ /opt/kusanagi/nginx129/sbin/nginx を使う

3
extra.conf に location ブロックがない
→ location ^~ /phpmyadmin/ で囲む

4
設定が4行重複
→ ファイルをリセットして書き直し

5
server ブロックの外に設定が入った
→ Python スクリプトで正しい位置に挿入

6
WordPress の PHP 設定が優先された
→ location ^~ を使って優先順位を上げる

7
HTTP ブロックにしか設定がなかった
→ HTTP・HTTPS 両方のブロックに追加

🎉
2日後にようやく解決!

✅ まとめ:同じ失敗をしないために

ポイント対策
古い記事に注意記事の公開日を確認する
nginx のパス/opt/kusanagi/nginx129/sbin/nginx -t を使う
設定変更後は必ず確認nginx -t でエラーチェック
location の優先順位phpMyAdmin には ^~ を使う
HTTP / HTTPS 両方に設定you_site.conf の2つのブロック両方に追加
コマンドの重複実行に注意>>> の違いを意識する

2日間かけてたどり着いた結論は意外とシンプルでした。
同じところでハマっている方の参考になれば嬉しいです!
なぜ、ぐちゃぐちゃになってしまったかと言うと、コンソールボックスに入力したものが途中で切れてたにも関わらず、次のコードを書き続けてしまった事に気づかなかったw

 

1日経ってサイトが表示されるかポッチとしてみたらタイムアウトでサイトが表示されないw
試行錯誤でやった結果分かったことは、
IPv4v6-SSHを追加するときにたぶんIPv4v6-Webと置き換えてしまったw
なのでIPv4v6-Webを追加して解決しました。。。

ConoHa VPS でサイトにアクセスできない時の解決方法【セキュリティグループの設定】

こんにちは!今回は ConoHa VPS でサーバーを構築したのにサイトにアクセスできないというトラブルの解決方法を紹介します。
実は私もこの問題にハマりました。nginx も PHP も MariaDB も全部正常に動いているのに、ブラウザでアクセスすると…

このサイトにアクセスできません
160.251.??.?? からの応答時間が長すぎます。
ERR_CONNECTION_TIMED_OUT

このエラーが出て全然アクセスできませんでした。

原因:セキュリティグループに「IPv4v6-Web」が設定されていなかった

ConoHa VPS には2種類のファイアウォールがあります。

種類場所役割
サーバー内のファイアウォールサーバーの中(firewalld)サーバー内部での通信制御
セキュリティグループConoHaのコントロールパネル外からサーバーへの通信制御

サーバー内部のファイアウォールは正常でも、ConoHaのコントロールパネル側のセキュリティグループで通信がブロックされていると外からアクセスできません。

セキュリティグループとは?

セキュリティグループとは「どの通信を許可するか」を決める設定のことです。
ConoHa には以下のセキュリティグループが用意されています。

セキュリティグループ名許可される通信
IPv4v6-SSHSSH接続(22番ポート)
IPv4v6-WebHTTP(80番)・HTTPS(443番)
IPv4v6-DNSDNS(53番)
default基本設定

Webサイトを公開するには IPv4v6-Web が必ず必要です!
これがないと外部からHTTP・HTTPSでのアクセスがすべてブロックされてしまいます。

解決手順

STEP 1:ConoHaコントロールパネルにログイン

ConoHa の管理画面(https://www.conoha.jp/)にログインします。

STEP 2:サーバーの詳細画面を開く

左メニューの「サーバー」をクリックします。
サーバーの一覧が表示されるので、自分のサーバーのネームタグ(サーバー名)をクリックします。

⚠️ ネームタグをクリックしないと詳細画面が開きません!

STEP 3:セキュリティグループを確認する

詳細画面を下にスクロールすると「セキュリティグループ」という項目があります。
初期状態では以下のように設定されていることが多いです。

セキュリティグループ
├ IPv4v6-SSH
└ default

この状態では IPv4v6-Web がないため、Webサイトにアクセスできません!

STEP 4:IPv4v6-Web を追加する

セキュリティグループの右側にある鉛筆マーク(編集アイコン)をクリックします。
セキュリティグループの編集画面が開くので、一覧から IPv4v6-Web を選択して追加します。

設定後は以下のようになります。

セキュリティグループ
├ IPv4v6-SSH
├ default
└ IPv4v6-Web  ← これを追加!

STEP 5:動作確認

ブラウザでサイトにアクセスしてみましょう。

http://サーバーのIPアドレス/

サイトが表示されれば成功です!🎉

よくある間違い

間違い①:サーバー内のファイアウォールだけ確認していた

firewall-cmd --list-all

このコマンドではサーバー内部のファイアウォールしか確認できません。
ConoHaのセキュリティグループは別の設定なので、サーバー内のファイアウォールが正常でもアクセスできないことがあります。

間違い②:左メニューの「ネットワーク」から探していた

セキュリティグループの設定は左メニューの「ネットワーク」からも確認できますが、変更はサーバーの詳細画面から行うのが正しい手順です。
サーバーのネームタグをクリック → 画面下部のセキュリティグループの鉛筆マークから設定しましょう。

まとめ

ConoHa VPS でサイトにアクセスできない時のチェックリストです。

  • ConoHaのコントロールパネルにログインした
  • サーバーのネームタグをクリックして詳細画面を開いた
  • 画面下部のセキュリティグループを確認した
  • IPv4v6-Web が設定されていることを確認した
  • 設定されていなければ鉛筆マークから追加した

ERR_CONNECTION_TIMED_OUT のエラーが出たらまずセキュリティグループを確認してみてください!
サーバー内部は全て正常なのにアクセスできない場合、ほとんどのケースでこの設定が原因です。

同じところでハマっている方の参考になれば嬉しいです!😄

 

気になる中古パソコン

Supported by Rakuten Web Service

コメント

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