とある日の昼下がり
デザイナーAさん:「モジュールをアップしたけどページに反映されません><」
私:「!?どの環境ですか?」
デザイナーAさん:「Tの環境です」
私:「分かりました調べてみます。(Tってなんだ?初めて聞くんだが。。)」
さて、接続情報する知らないサーバでの原因調査となりました。
IP/ポート、ログインID/PWは分からないとお話しにならないので資料ディレクトリをあさって発掘。
次に色々な人にヒアリングして状況を整理しました。
デザイナーAさん:一月前に作業した時は、同じ手順で反映されました。
デザイナーAさん:リニューアル前のドキュメントルートもバックアップとして残っています。(怪しい。。)
エンジニアBさん:Tの環境なら先週Apacheの再起動をしたよ。(怪しい。。てか知ってるんだったら見てくれればいいのに。。)
エンジニアBさん:2サーバ(TサーバとUサーバ)あってLBで振り分けてるはずだよ。構成はアクティブ・スタンバイになってるよ。(怪しい。。)
みんな原因は分からないというので、ここから調査に入ります。
1. LBの設定
まず、LBの設定を見ました。
確かにTサーバとUサーバの2台構成で、アクティブ・スタンバイとなっていました。
Tサーバがアクティブで、Uサーバがスタンバイだったので、
調査はTサーバで始めることにします。
2. Tサーバの調査
まず疑ったのが、
- リニューアル前のドキュメントルートもバックアップとして残っています。
- Tの環境なら先週Apacheの再起動をしたよ。
怪しすぎます。
右も左もわからない見たこともないサーバだったので、まずApacheの起動元を確認しました。
$ ps aux | grep httpd
root 4777 0.0 0.0 107460 916 pts/0 S+ 10:23 0:00 grep httpd
apache 31088 0.0 2.8 370344 28800 ? S Apr09 0:04 /usr/sbin/httpd
apache 31089 0.0 5.9 455960 61240 ? S Apr09 0:13 /usr/sbin/httpd
apache 31090 0.0 4.5 441196 46056 ? S Apr09 0:04 /usr/sbin/httpd
これでまず、「/usr/sbin/httpd」が起動元だと分かります。
次に「httpd.conf」の場所を確認します。
「/etc/httpd/conf」の配下にあることが多いですが、
念のためコマンドで確認します。
$ /usr/sbin/httpd -S
VirtualHost configuration:
wildcard NameVirtualHosts and _default_ servers:
*:81 xxxxx01 (/etc/httpd/conf/httpd.conf:1036)
Syntax OK
コマンドの結果、confの場所は「/etc/httpd/conf/httpd.conf」、
記載行は「1036行目」だとわかります。
次はconfを調べます。
3. httpd.confの確認
viコマンドでhttpd.confを開き、
1036行目を確認してみましょう。
# ファイルを開く
$ vi /etc/httpd/conf/httpd.conf
# :1036で1036行目へジャンプ
1036 <VirtualHost *:81>
1037 DocumentRoot /var/www/html
...
1042 </VirtualHost>
ドキュメントルートは「/var/www/html」と分かりました。
結論から述べると、これは正しい設定でした。
アップしたモジュールも存在しました。
4. 深まる謎
モジュールはきちんとTサーバにアップされてました。
ここで、下記2つはこの件とは無関係と判断しました。
リニューアル前のドキュメントルートもバックアップとして残っています。Tの環境なら先週Apacheの再起動をしたよ。
もうUサーバしか考えられないので、1~3の工程をUサーバでも実施しました。
結果、ページとして見えていたのは、Uサーバのモジュールでした。
5. 原因特定
ダッシュボード上のLBの状態が表示と実体で異なっていました。
表示とは違いUサーバがアクティブとなっていたようです。
なんともしっくりこない結果でしたが、
目に見えるものが必ず正しいとは限らない教訓になりました。
後「httpd -S」が本当に便利です。