どうもこんにちは。たかだか、サイトを表示するだけで数時間どっぷりハマったこうじです。

最近KUSANAGI環境に触る機会が(というか勝手に触ってる)多く、自分のサーバーでは問題なかったのに、クライアントのサーバーで問題があった事があり、備忘録しちゃいます!

表示されない場合の選択肢

こういう場合は落ち着いて、一つずつ原因を潰していくのが一番早いです。
え、なんで一番早いくせに数時間もハマったんだって?まぁまぁまぁ・・・ね^^

そもそもブラウザからアクセスできない

この場合は大抵、DNSがちゃんとされていないか、DNSが伝播しきってない場合が多いです。
DNSの変更直後は、浸透するまである程度時間がかかります。早いと1時間くらいですが、遅いと1日くらい?僕の場合は、経験則で言うと5〜6時間あれば大概解決してます。

DNSの設定方法

サーバーはConoHaVPSです。

とは言っても、結局はLinuxのNginxなので、他のサービスでも場所が違うだけで同じような項目がどこかにあると思います。

なお、ドメインのネームサーバーはちゃんと設定されている前提とします。
ここら辺はConoHaVPSのマニュアルでも公開されています。

IPを調べたいサーバーの詳細ページへ移動。
IPアドレスを確認。
サイドナビのDNSメニューをクリック。
先程調べたIPを登録。

これで、あとはその内反映されます。
少なくとも、しばらくしたら「あーサーバーには繋がってるけどなんかエラーで表示されてないな」までは最悪行くと思います。

繋がってるけど、なんかエラーでる

この場合はドメインのルートパスが間違っている場合が多いです。
これもKUSANAGIに限らず、特段こだわったインストールなどをしていなければ、同じ場所にあると思います。

今回はNginxの場合の方法です。

# ルート権限に移行します。sudoでもいいです。
$ su

# confファイルが置かれている場所に移動します。
# cd /etc/nginx/conf.d/

# ファイルを見ると、「プロファイル名_http.conf」と
# SSL証明書を発行している場合は「プロファイル名_ssl.conf」も
# あると思いますのでこれらを編集します。
# ll
-rw-r--r-- 1 root root 2216  2月 19 18:14 profile_name_http.conf
-rw-r--r-- 1 root root 3318  2月 19 18:15 profile_name_ssl.conf

# エディターで開く。
# vim profile_name_http.conf

#=======================================
# example.com
#---------------------------------------

server {
  # ...
  # ...
  # 上から見ていくと「root」という項目がありますので、パスを実際に表示したいパスになっているか確認。
  # KUSANAGIの場合は「/home/kusanagi/プロファイル名/DocmentRoot」がそう。
  root  /home/kusanagi/profile_name/DocumentRoot;
  # ...
  # ...
}

KUSANAGIでWordPressのプロファイルを作った場合はほとんど勝手にやってくれるのでこういう事はないですが、LEMP環境などを自分で作って何かしらのフレームワークを入れた場合などは、うっかりしやすいです。

ファイアウォールを見直す

長くなりましたが、本題です(笑)
僕の今回の原因は、ファイアウォールの設定が適切ではなかったのが原因でした。これも設定なのかは分かりませんが基本的にはファイアウォールは無効になっている様なんですが、なぜか有効になっていた様で、それが原因でした。

firewalldの設定

設定する前にSSHで繋いでいる場合、繋いでるSSHポートが開いていない場合、問答無用で操作できなくなりますので、気をつけてください。
え?そんなやついるの?ププー^w^

はい。僕のことです^^

通常のSSHポート(22番)のままでしたら問題ないと思いますが、ポートを変更してSSH接続している人は要注意です。その場合は管理画面からのコンソールで操作しましょう。

# firewalldが稼働しているか確認。
# 稼働していない場合は「running」になる。
# firewall-cmd --state
not running

# 稼働していない場合は稼働させる。
# systemctl start firewalld.service

# 「running」になっていればOK。
# firewall-cmd --state
running

# HTTPポート(80番)を開く。
# 「success」が出れば成功。
# 既に登録されている場合は「Warning: ALREADY_ENABLED: http」みたいなメッセージが出る。
# firewall-cmd --permanent --zone=public --add-service=http

# HTTPSポート(443番)を開く。
# firewall-cmd --permanent --zone=public --add-service=https

# SSHポートを変更している場合は変更したポートも開いておく。
# 以下は「56789」ポートを開く場合。
# firewall-cmd --add-port=56789/tcp

# 再起動時にも自動でやってもらう設定。
# firewall-cmd --permanent --add-port= 56789/tcp

# 標準のSSHポートは使用しないと思うので閉じておく。
# firewall-cmd --remove-service=ssh

# 再起動時にも自動で閉じてもらう。
# firewall-cmd --permanent --zone=public --remove-service=ssh

# 次回から自動で起動するように設定。
# systemctl enable firewalld.service

# 再起動。
# systemctl restart firewalld.service

これでおそらく、ブラウザから表示されるようになると思います。

一応DocumentRootにはちゃんと繋がっているか分かりやすいように、適当なindex.htmlでも置いておきましょう^^

まとめ

僕の場合は、今回前述の通り、ファイアウォールが設定されている選択肢を全く考えてなかった為、めちゃくちゃ時間がかかりました。

今回学んだ事は、『思い込みで物事を進めるのはやめましょう。』です(笑)

思い込みを無くして、1から選択肢を一つずつ潰していったらこんなに時間はかからなかったと思います。とか言いながら、きっと次も「あっれーおかしいなー。」とか言いながらハマるんでしょうね(笑)

夜更かし中はマジで要注意。Javascriptのセミコロン内だけで数十分潰せますからね!ちゃんと規則正しい生活を心がけましょう。