初めてVPSを契約して、SSHの設定やWebサーバの設定を終え、満を持してブラウザからアクセスしようとしたときにハマったので、経緯を残しておく。
環境
- centOS7.6(重要)
- apache
- nginxでも再現する
原因
80ポート(ブラウザからアクセスするためのhttpで使われるポート)がファイアウォールで遮断されていたため
解決策
早い話がファイアウォールの設定を変更して80ポートへのアクセスを許可すれば良い。
centOS7から「firewalld」というファイアウォールが初期状態で動作している。
また、この初期設定で80ポートへのアクセスが遮断されているので変更する。
firewalldの設定変更と再起動
firewalldの設定変更と再起動
# 設定変更。httpを追加って書いてある。
firewall-cmd --add-service=http --zone=public --permanent
# 再起動
firewall-cmd --reload
Webサーバソフトを再起動してブラウザからIPアドレスでアクセスして確認。
(DNS設定後ならドメインでも可能。)
解決までに確認したこと
- そもそもVPSは起動してる?
- conohaのコンソールから確認した
- nginxは起動してる?(最初はapacheでなくnginxで設定してた)
-
systemctl restart nginx
でOK
-
- ドキュメントルートとパーミッションあってる?
- 合ってた。
- そもそも、ドキュメントルート間違ってたらnginx起動しなさそうだし、パーミッション違うなら403とか返ってきそうなもんだよね。
- apacheは起動してる?
- 以下、略。
- DNS設定大丈夫?
- DNSチェッカーを使って確認したが疎通確認できず
- 念のため、ドメイン会社のコンソールとVPS会社のコンソールから設定されているか確認した。
- IPで接続できる?
- DNS設定失敗の疑いがあったため、IPで接続試行。
- 失敗したのでもっと前に原因があることが判明。
- Webサーバのログ確認
- apacheやnginxのログファイルを確認した
- ログ一切排出なし。これはおかしい
- 接続を遮断するなにかがあるはず...
- いろいろググってたら、プロキシやファイアウォールの疑いは?って意見があったので、
centOS7 ファイアウォール
のクエリでようやく解決した。
- いろいろググってたら、プロキシやファイアウォールの疑いは?って意見があったので、
ひとこと
1年もWebエンジニアやってましたが、本物のサーバを素の状態からチューニングするのは初めてでした。
ファイアウォールとかインフラのおじちゃんがやってくれるヤツというイメージしかなかったので反省です。
同時に、今までなかった知見を得られたのは少なからず収穫かなと思いました。
今後もしっかり戒めていきます。