Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】How to Move a Website to a New Host Without Downtime

2026年10月10日に「Dev.to」が公開したITニュース「How to Move a Website to a New Host Without Downtime」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

Webサイトをダウンタイムなしで新ホストへ移行するには、DNS TTL事前変更、ファイル・DBコピー、hostsでのテストが重要。SSL証明書発行、最終同期後にDNS切り替え、メール等も移行する。旧サーバーはしばらく残し、万一に備える。

ITニュース解説

ウェブサイトを新しいサーバーへ移転する際、最も避けたいのはサイトが一時的に利用できなくなるダウンタイムだ。多くの移行作業で問題が発生するのは、サイトが稼働中にファイルをコピーしたり、コピーの確認が不十分なままDNSを切り替えてしまったりする点にある。この解説では、そうした問題を防ぎ、ダウンタイムを最小限に抑えながらウェブサイトを安全に移行するための手順を説明する。この方法はWordPressやLaravelのようなPHPベースのサイトだけでなく、シンプルなHTMLサイトにも適用可能で、通常は1時間程度で完了するが、その大半は待機時間である。

ウェブサイトの移行作業は、実際にファイルを移動させる日の前日に始まる。最初のステップは、DNSのTTL(Time To Live)値を一時的に短く設定することだ。TTLは、ウェブサイトのドメイン名がどのIPアドレスを指しているかという情報(Aレコード)を、インターネット上のDNSサーバーがどれくらいの期間記憶しておくかを定める値である。もしTTLが24時間(86400秒)に設定されていると、新しいサーバーへ切り替えた後でも、一部の訪問者は最大24時間、古いサーバーにアクセスし続けてしまう可能性がある。これを避けるため、移行の少なくとも24時間前には、DNSプロバイダーの設定でTTL値を例えば300秒(5分)に設定する。この設定変更がインターネット全体に浸透するまでには、元のTTL値分の時間が必要なため、このステップが移行前日に必要な理由である。TTLを短くすることで、実際にIPアドレスを切り替えた際に、新しいIPアドレスへの情報更新が迅速に行われるようになる。

次に、ウェブサイトの本体であるファイルを新しいサーバーにコピーする作業に入る。最も効率的な方法は、SSH(Secure Shell)という安全な通信方法を使って、新サーバーから旧サーバーのファイルを「プル」することだ。この際、rsyncコマンドを使用すると非常に便利である。rsyncは、変更があったファイルや新しく追加されたファイルだけを効率的に転送する機能を持つため、一度コピーした後も、移行直前にもう一度実行して、その間に変更された内容だけを同期させることが可能だ。これにより、ウェブサイトが稼働し続けている間に発生する微細な更新も取りこぼしなく移行できる。キャッシュファイルやログファイルなど、移行する必要のないファイルは除外設定をしておくのが一般的である。もし、旧サーバーでSSHが使えない場合は、旧サーバーのコントロールパネルからウェブサイトのバックアップファイルをダウンロードし、新しいサーバーでそのファイルを展開する方法もある。ファイルをコピーした後は、新サーバー上でPHPなどのプログラムが正しくファイルを読み書きできるよう、ファイルの所有者とグループを適切に設定し直すことが重要だ。

ウェブサイトのコンテンツやユーザー情報などの動的なデータは、データベースに保存されている。このデータベースも新しいサーバーに移行する必要がある。旧サーバー上でmysqldumpコマンドを使い、データベースの内容をファイルとして出力(ダンプ)する。この際、--single-transactionオプションを使用すると、データベースのテーブルをロックすることなく一貫性のあるスナップショットを取得できるため、ダンプ中もライブサイトが停止することなく稼働し続けられる。ダンプしたデータベースファイルは、gzipで圧縮しておくと転送や保存の効率が良い。圧縮されたデータベースファイルを新サーバーへ転送し、gunzipで解凍してからmysqlコマンドを使って新しいデータベースにインポートする。データベースのインポートが完了したら、新しいサーバー上のウェブサイトが新しいデータベースに接続できるように、サイトの設定ファイルを更新する必要がある。WordPressの場合ならwp-config.phpファイルを開き、データベース名、ユーザー名、パスワード、ホスト名などの情報を新しいサーバーのものに書き換える。

多くの人が見落としがちな、しかし最も重要なステップの一つが、DNSを切り替える前に新サーバー上のウェブサイトが正しく動作するかをテストすることである。このテストは、自分のコンピューターの「hostsファイル」を編集して行う。hostsファイルは、特定のドメイン名がどのIPアドレスに対応するかを、インターネット上のDNSよりも優先して設定できるファイルだ。このファイルを編集し、あなたのウェブサイトのドメイン名が新しいサーバーのIPアドレスを指すように一時的に設定する。この変更はあなたのコンピューターだけに適用されるため、他のインターネットユーザーには影響を与えず、既存のライブサイトは稼働し続ける。hostsファイルを編集した後、ブラウザで自分のウェブサイトにアクセスすると、あなたは新しいサーバー上のサイトを見ていることになる。ここで、全てのページをクリックしてリンク切れがないか、管理画面にログインできるか、ファイルをアップロードできるか、テスト注文ができるかなど、サイトの主要な機能を徹底的に確認する。この段階でSSL証明書に関する警告が表示されることがあるが、それはまだ証明書が発行されていないためであり、次のステップで解決される。テストが完了したら、忘れずにhostsファイルから追加した行を削除しておく。

ウェブサイトをHTTPSで安全に運用するために不可欠なSSL証明書を、新しいサーバーで発行する。Let's Encryptのような無料の証明書サービスを利用する場合、通常はドメインが新しいサーバーを指していることを検証する必要がある。しかし、まだDNSを切り替えていないこの段階では、二つの方法がある。一つは、DNSレコード自体を検証に利用するDNS検証方式を使う方法。これは、ドメインのTXTレコードに特定の情報を追加することで検証を行うため、ウェブサイトがどのサーバーにあるかに関わらず証明書を発行できる。もう一つは、HTTP検証方式を使い、DNS切り替え直後に証明書を発行する方法だ。この場合、前のステップでTTLを300秒に設定していれば、DNSが切り替わってから約5分間はブラウザに証明書警告が表示される可能性がある。推奨されるのは、DNS検証を利用して事前に証明書を発行しておく方法である。これにより、ダウンタイムを伴う警告期間を避けることができる。

いよいよウェブサイトを新しいサーバーへ切り替える最終段階だ。切り替え直前には、旧サーバー上のウェブサイトをメンテナンスモードにするか、あるいは一時的にコンテンツの更新を停止するなどして、「凍結」状態にする。これは、切り替えの直前に発生する可能性のあるデータ変更を防ぐためである。そして、再度rsyncコマンドを使ってファイル全体を、mysqldumpコマンドとmysqlコマンドを使ってデータベースを、それぞれ最終的に新しいサーバーへ同期させる。これにより、メンテナンスモードに入る直前までの全ての変更が新しいサーバーに反映され、データの欠落を防ぐ。最終同期が完了したら、DNSプロバイダーの設定画面で、ウェブサイトのドメイン名(Aレコードと、もしあればwwwサブドメインのAレコード)が指すIPアドレスを、新しいサーバーのIPアドレスに変更する。TTLを300秒に設定してあるため、この変更は世界中のDNSサーバーに約5分以内に浸透し始める。digコマンドを定期的に実行することで、DNSの浸透状況を監視し、切り替えが正常に行われていることを確認できる。

ウェブサイト本体の移行が完了しても、忘れてはならない重要な要素が他にもある。メールサービスはその典型的な例だ。もし、旧サーバーでメールアカウントを運用していた場合、新しいサーバー上にも同じメールアカウントを作成し、imapsyncのようなツールを使って古いサーバーから新しいサーバーへメールメッセージを全て移行する必要がある。また、cronジョブ(定期的に実行される自動タスク)も、新しいサーバーで再設定が必要だ。.htaccessファイルに記述されたリダイレクト設定やアクセス制限、特定のIPアドレスに紐付けられている可能性のあるAPIキーなども確認し、必要に応じて更新する。さらに、迷惑メール対策のために設定されているSPFレコードも確認が必要だ。SPFレコードは、あなたのドメインから正当なメールを送信するサーバーのリストであり、新しいメールサーバーのIPアドレスやホスト名がリストに含まれていなければ、あなたの送信したメールが受信側の迷惑メールフォルダに振り分けられてしまう可能性がある。

全ての移行作業が完了し、新しいサーバー上でウェブサイトが正常に稼働していることを確認した後も、旧サーバーをすぐに解約したり停止したりしてはいけない。移行後、少なくとも一週間は旧サーバーを稼働状態に保つことを強く推奨する。これは、万が一、移行中に見落としたcronジョブや、移行し忘れたメールボックス、あるいは予想外の問題が発生した場合に、旧サーバーからデータを復旧できる余地を残しておくためである。これにより、予期せぬトラブルが発生した場合のリスクを最小限に抑え、安全な移行を実現できる。ウェブサイトの移行は、細部に注意を払い、計画的に進めることで、ダウンタイムを最小限に抑え、ユーザーに不便をかけることなく完了させることが可能だ。この手順を参考に、あなたのウェブサイトを新しい環境へスムーズに移行してほしい。

関連コンテンツ

関連IT用語

関連ITニュース