本当に怖いDNS(ネームサーバー)変更。予想外のトラブルに備えよう!

本当に怖いDNS(ネームサーバー)変更。予想外のトラブルに備えよう!

サーバー引越ししろたん師匠

サイト移行やDNS(ネームサーバー)変更、ちゃんと事前準備して行ってますか?
最近ドメインをさくらサーバーからお名前.comへ移し、さらにサーバーもNetlifyへ移しました。

移管中エラーを吐いて、ブログページが見れなくなってしまいました。事前準備を怠ったことを死ぬほど反省しました。体験談と対処法を綴ります。

この記事を書いた人

かみーゆ/フロントエンドエンジニア

資金ゼロからフィリピンで起業した海外ノマドエンジニア。IT業界10年以上でテクニカルディレクター(技術責任者)・エンジニア講師・ブリッジSEを経てLenzTechnologies Inc.を設立し、代表を務める。CMS concreteCMSエバンジェリスト。テックブログ以外も「磨耗しない人生」や「海外ノマド」のライフスタイルについて発信。好きなものは肉とハイボール。

大切なコンテンツが見れなくなっちゃう!準備をしっかりしてサイト引越しをすべし

今回サイト引越し中やらかして、ウェブサイトがおおよそ1日間見れなくなってしまいました。

以前も忙しすぎてサーバーかドメイン更新を見逃し、1週間位サイトが見れなくなりましたが大ダメージでした。長期サイトが見れなくなるのはサイト運営者にとって脅威です

ざっくり対策は次の3つ。

  • DNS(ネームサーバー)の反映のタイムラグを理解しておく
  • 旧サイトが健全に表示されるか確認し必要であればメンテナンスしておく
  • 最悪の事態に備えてメンテナンス中ページも用意しておく


連日のサイトのコーディングと記事移行がキツかったのもあり、サイトをリニューアルできるのが嬉しすぎて3つとも抜けていました。

※普段クライアントに対しては公開日などをきちんと確認しています。

要因と対策をそれぞれご紹介します。

DNS(ネームサーバー)反映は最大72時間も待たなければならない

トラブルがすぐに収束しなかった理由は、DNS(ネームサーバー)反映のタイムラグです。

DNS(ネームサーバー)の変更は、たとえ変更手続きが終わっていてもインターネット全体に反映するまで24時間から72時間程度かかります。

インターネットはルーター、個人のパソコン、サーバー側、さまざまなところにキャッシュが残るような仕組みになっています。

ちなみにフィリピンには3大インターネット会社があり、私はスマホをGlobe、自宅ではPLDTを使っています。
インターネット会社でも反映時間の格差があり、Globeは1日、PLDTは2日かかりました。

もしこれが72時間かかっていたらと思うとゾッとします。

不足のトラブルがあると想定し、できるだけPV(閲覧数)の少ない時間にDNS(ネームサーバー)変更をすべきです。

PVはGoogleAnalyticsなどで確認できます。

サイトの系統にもよりますが、金曜日の深夜から日にかけて作業するのがオススメです。

ただ、サーバー会社にお問い合わせができないのである程度覚悟しておいてください。

予想外のトラブルを想定し、できるだけ被害の少なくて済む日にDNS(ネームサーバー)の変更をする

反映するまで旧サイトが健全な状態で表示されている状態を保つ

本来問題がなければ、旧サイトと新サイトは徐々に入れ替わる予定でした。

しかし急に今回記事詳細ページのみ表示されなくなりました。

原因はAMP対応したくてクセの強いPHPのメソッドを使っていたからです。

AMP

Accelerated Mobile Pagesの略でアンプと読みます。モバイルユーザーが快適にホームページを閲覧できるようにすることを目的としてGoogleとTwitterが共同で立ち上げたオープンソースプロジェクトで、一般的にはモバイル端末でホームページを高速で表示させるための仕組み。

リニューアルでは新サイトに注目しがちです。

旧サイトが健全な状態で表示されている状態をキープできるよう事前に、クセの強いメソッドなど、変なコード書いてないか確認しておくべきでした。

旧サイトが健全に表示されるように事前メンテナンスをしておく

なぜ記事詳細ページだけ表示されなくなったのか。PHP file get contentで予想外のエラー

原因はfile_get_contents(PHP)でした。

file get contents

ファイルの内容を全て文字列として読み込むメソッド

AMPではhead内にCSSを直書きしなければならないのですが、私はいつもSCSSでCSSを書いているので修正入ったら書き直すなんてめんどくさい。

コンパイルしたAMP用のCSSファイルをパッケージ内に置き、file_get_contentsで読み込んでました。

ginneko-atelier/
  └ themes/
    └ ginneko-atelier/
	  ├ amp.php
	  └ amp.css

徐々に反映が進むと、file_get_contentsで取得しているファイルが中途半端に反映してかNetlify側のサーバーから取得している形になりました。

今回Netlifyに載せ替えるサイトはGatsbyの静的ジェネレーターなので以前と構造がまったく違います。当然Netlifyに同じファイルがないのでAMP対応していたページがすべてエラーを吐いてしまいました。

ちなみにAMP対応で、file_get_contentsを使う方法が紹介されています。みなさんもご注意を。

APIなどに file get contents を使うのはオススメしない理由と代替案

トラブルはある!ぐらいの心づもりでメンテナンス中ページも用意しておく

トラブルは起こる。うまくいかない可能性を考えて、どうしても復旧できなかった時のためにメンテナンスページを必ず用意しておきましょう。

500番エラーを出すよりマシです。

そうすればユーサーはまたページに戻ってきてくれます。

トラブルが発生したら、いったんメンテナンスページに差し替えリダイレクトかけておきましょう。

以下は、.htaccessのコードです。

ErrorDocument 503 /maintenance.html #表示させるメンテナンスページ

<IfModule mod_rewrite.c>
  RewriteEngine On
  RewriteRule ^.*$ - [R=503,L]
</IfModule>

<IfModule mod_headers.c>
  Header set Retry-After "Fri, 13 February 2018 09:00:00 GMT" #メンテナンス終了予定時刻を設定
</IfModule>

トラブルはあって当然。表示されなかった時の対処法も用意しておく

どうしようもないときは諦めよう

ちなみに私は焦りのあまりさくらサーバー側の設定を触りすぎて、SSLまで効かなくなり手の施しようがなくなりました。

そんな時ほど人間諦めが肝心

最低でも24時間ぐらいかかるみたいだし、開き直って他の作業をしました。

翌日も気にせず友達とLandersに買い物へ行ってジャンク祭りを堪能。

友達とLandersに買い物へ行ってジャンク祭り

スーパーマーケット Landers

そんなことをしていると、いつの間にか反映していました。

嬉しいリニューアル効果

ページ読み込みのストレスは軽減し、UXが向上したおかげでPVも1.5倍まで伸びました!!!
反映までの1、2日は辛かったけど、喜びはひとしおです。

リニューアルサイコー!

まとめ

今回私が痛い目にあったDNS変更に関する経験と対処法についてシェアさせていただきました。

ちなみに以前DNS変更がいかに怖いかって内容をITセミナーで話をしていたことが発覚しました。。。

しかも、DNS変更の作業は爆弾撤去作業のように神経を使うと説明までしておりました。。。

サイト引越しの際に学んだ5の教訓

サイト引越しの際に学んだ5の教訓 | Slide Share

第90回「WEB TOUCH MEETING

DNS変更は慎重に!

みなさんのWeb制作ライフの一助となれば幸いです。

最後までお読みいただきありがとうございました。