この間からVPSを借りて色々やっているのですが、いざWEBサービスを起動させてみてもうまく開けなかったんですね。
そもそもapacheのテストページは開けるのか?と思って色々試行錯誤した結果を残しておきます。
apacheのテストページが開けない!という人はぜひ参考にしてみてください。
DjangoでWEBアプリを公開したかった
VPSを借りて何をやりたかったかというと、最近練習がてら開発していたDjangoを使ったWEBサービスをデプロイしたかったんですよ。
とりあえずDjangoアプリを公開するようのサーバイメージで、テストページの表示まではうまく行ったんですが、Djangoの追加モジュールを入れようとしてもpipがうまく使えない。(python2系が入っていて3系が動いていない?)
んで、Djangoアプリ公開用のサーバでなくて、ただのCentOSサーバに位置から環境構築したらどうかな、と試してみたわけです。
いざ公開!……ところがアクセスできず
なんとかpython3系をインストールして、apacheを入れてdjangoを入れて、動かしてみたんですがアクセスできませんでした。
サーバーエラーすら帰ってきません。タイムアウトエラーになってしまいます。
今までテストサーバで試したときは、少なくとも503エラーなど、サーバーのエラーが帰ってきたので、接続できないのは何か他の問題が起きているはずです。
apacheでデプロイしたWEBアプリにアクセスできなくて試したこと
apacheでデプロイ(ちなみにこのデプロイっていうのは公開って意味だそうです)したWEBアプリは非常に簡単なテスト用のものだったので、うまく動いていないってことは考えられません。他の設定周りが怪しいのでそちらから攻めていきました。
そもそもテストページが開けない
さて冒頭から怪しいのですが、apacheのテストページすら開けませんでした。
以下のコマンドでapacheの状態を表示してみましたが、ちゃんとアクティブになっています。
これはネットワークの設定周りが怪しそうですね。
# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since Mon 2019-08-12 23:13:00 JST; 26min ago
Docs: man:httpd(8)
man:apachectl(8)
Main PID: 4117 (httpd)
Status: "Total requests: 30; Current requests/sec: 0; Current traffic: 0 B/sec"
CGroup: /system.slice/httpd.service
├─4117 /usr/sbin/httpd -DFOREGROUND
├─4118 /usr/sbin/httpd -DFOREGROUND
├─4119 /usr/sbin/httpd -DFOREGROUND
├─4120 /usr/sbin/httpd -DFOREGROUND
├─4121 /usr/sbin/httpd -DFOREGROUND
├─4197 /usr/sbin/httpd -DFOREGROUND
├─4198 /usr/sbin/httpd -DFOREGROUND
├─4199 /usr/sbin/httpd -DFOREGROUND
├─4200 /usr/sbin/httpd -DFOREGROUND
├─4201 /usr/sbin/httpd -DFOREGROUND
└─4202 /usr/sbin/httpd -DFOREGROUND
Aug 12 23:13:00 163-44-175-158 systemd[1]: Starting The Apache HTTP Server...
Aug 12 23:13:00 163-44-175-158 httpd[4117]: AH00558: httpd: Could not reliably determine the server's fully qual...ssage
Aug 12 23:13:00 163-44-175-158 systemd[1]: Started The Apache HTTP Server.
Hint: Some lines were ellipsized, use -l to show in full.
ssh経由で使ったcurlコマンドでhtmlは取得できる
ほぼほぼネットワークのせいで確定ですが、念の為apacheがちゃんと動いているか、curlコマンドで確認してみましょう。
#curl localhost
apache自体が正常に動いている場合、このコマンドを打つとapacheのテストページのhtmlがコンソールにブワーッと出てくるはずです。
firewalld(=iptables)を無効にしてみる
さて、この時点でネットワークの設定が犯人ということがほぼ確定しました。
最後にダメ押しで、firewalldを無効にしてアクセスを試してみましょう。
ちなみにこのfirewalld、CentOS6のころはiptablesって名前だったみたいですね。僕はCentOS7から使い始めたので(正確には6も触ってたが、そこまで深くない)あまり違和感はありませんでしたが。
#systemctl stop firewalld
この状態でアクセスをすると……

開けました!apacheのテストページです。やっぱりネットワークの設定がうまく行ってなかったようですね。
firewalldの設定変更
最後にこちらのQiitaの記事を参考にfirewalldの設定を変更し、80番(http)と443番(https)のポートを開けました。
試していませんが、firewalldを停止したままだとうまく設定できないみたいなので、firewalldを起動してから行いましょう。(どっちみち後で確認のために起動しなきゃいけないですし)
#systemctl start firewalld
#firewall-cmd --permanent --zone=public --add-service=http
#firewall-cmd --permanent --zone=public --add-service=https
#firewall-cmd --reload
最後にfirewalldの起動状態を確認してから、再度アクセスを試みます。
# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2019-08-12 23:17:52 JST; 38s ago
Docs: man:firewalld(1)
Main PID: 4210 (firewalld)
CGroup: /system.slice/firewalld.service
└─4210 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid
Aug 12 23:17:52 163-44-175-158 systemd[1]: Starting firewalld - dynamic firewall daemon...
Aug 12 23:17:52 163-44-175-158 systemd[1]: Started firewalld - dynamic firewall daemon.
アクセスすると……

いいですね!問題なく開けました!
おわりに:テストページすら開けないときは、firewalldの設定を見直してみよう!
以上、apacheのテストページすら開けなかったときに試したことです。
問題を少しずつ切り分けし、どこが悪くて現象が発生しているのかしらべていくことで、早期の解決になりました。
apacheのテストページすら開けなくて困っていた人は参考にしてみてください。
コメント