長いこと自分のドメインをお名前.comで、サーバーをさくらインターネットで運用してましたが、そろそろそんな時代じゃないんじゃなかろうか、時代はクラウドでヴァーチャルマシンでインスタンスなのではなかろうか、と思い立ち、なんとなくモダンでイケてそうなGoogle DomainsとGoogle Cloud Platform(以下GCP)に引っ越してみることにしました。
なお、筆者のスキルとしては
- ウェブデザイナー歴19年
- 黒い画面(ターミナルのこと)は一応いじれる
- ウェブサーバーを立てるなんて恐れ多い
といったところで、システムやインフラのことは詳しくありません。この記事もサーバーにあまり詳しくない方に読まれる想定で書いていくことにします。
引っ越し前の状況
- .jpドメインをお名前.comで管理
- ウェブサーバーをさくらインターネットのスタンダードプランで運用していて、WordPressを運用
- ウェブ以外のサービス(メールなど)は不使用
- Let's Encrypt で無料SSLを利用
独自ドメインでメールを使用している方は、別途メール関連の引っ越し手順が必要になると思います(ドメイン移管中にメールが不通にならないようにするなど)。
引っ越し手順
- 現状のサイトをバックアップ
- GCP上にWordPress環境を構築
- SFTPでファイルをアップロードできるよう設定
- VMにサイトを復元
- ドメインを移管
- DNSの設定
- SSLの設定
これで引っ越し中でもサイトが表示されない期間はありません。ただ、5〜7の間はhttpsでのアクセスができない状態にはなります。SSLの設定には正しく設定されたドメインが必要なので、これを解消するには別の方法でSSL化を行わないといけないと思います(Cloudflareの無料SSLサービスを使うなど)。
1. 現状のサイトをバックアップ
必要なモノとしては
- ファイル
- データベース
の2種類です。まずSSHで接続してデータベースのダンプファイルを作成し、次にダンプファイルを含む全てのファイルをSFTPでダウンロードします。SSHが使えない場合は、phpMyAdminなんかを使うことになるでしょう。
ファイル、データベース共に、引っ越し前のサーバーの設定がバックアップデータに含まれていた場合は、適宜修正しておきます。さくらインターネットの場合、.htaccessファイルにさくらインターネット独自の記述が入っていたりするので、削除しておきます。
2. GCP上にWordPress環境を構築
これ以降の作業のほとんどは、@mediaquery さんの GCPで爆速なWordPressを爆速で構築しSSL化する9手順 という大変わかりやすい記事に沿ってやっていきます。途中で黒い画面が出てきたりしますが、書かれている通りにコピペで入力するだけなので難易度は低いと思います。まず手順2の「独自ドメインの設定」まで進めます。今回の引越し作業はこの記事無しには成し得ませんでした。この場を借りてお礼申し上げます。
この際、無料枠対象のインスタンスを選ぶと、使用量上限まで無料で使えます。2021年1月現在、以下の組み合わせが無料枠となっています。
- リージョン: us-west1, us-central1, us-east1 のいずれか
- インスタンス: f1-micro
「ツール > Deployment Manager > デプロイ詳細」で開けるデプロイ詳細パネルでは、たった今立ち上げたVMの各種初期設定やSSHを開くリンクなどが確認できるので、ブックマークしておきましょう。WordPressやMySQLのユーザー/パスワードのデフォルト設定が示されていますが、後で変更しておくとよいと思います。
NSレコードのデータ("ns-cloud-d1.googledomains.com." みたいなやつx4)は後ほどDNSの設定で使用しますので、ひとまずメモしておきます。
3. SFTPでファイルをアップロードできるよう設定
nobuhiro harada さんの [GCP]Compute Engine のインスタンスにFileZillaでファイル転送する(mac) を参考にして、ローカルのSFTPクライアントでGCPに接続できるようにします。ただ、手持のMacのFileZillaではうまく接続できず、Cyberduckではうまくいきました。どうもFileZillaの不具合のようです。
なお、Intellij IDEA でSFTPで接続しようとするとそのままではうまくいかず、秘密鍵を生成する際にいくつかのオプションを追加する必要がありました。(参考:JetBrains製品でSSH接続時に秘密鍵が利用できない場合の一時対処法)
また、アップロードしようとすると、ユーザー権限の問題でパーミッションエラーが出てアップロードできませんでした。stackoverflow の Permission in google cloud sftp を参考に、SSHで権限を調整して解決しました。
4. VMにサイトを復元
バックアップデータを新しいサイトに復元します。ファイルはSFTPで全てアップロードします。ウェブルートのパスは /var/www/html
です。データベースは SSH でアクセスしてmysqlのインポートコマンドで復元します。データベース接続情報は2のデプロイ詳細パネルに書いてあります。
ここまでで、新しいVM上の環境にサイトを構築しました。しかし正しいドメインが割り当てられていないため、うまくアクセスできない状態です。
5. ドメインを移管
昔はGoogle Domainsで.jpドメインは扱ってなかったみたいなんですが、今はできるようになってます。ただし、お名前.comと比べると以下のデメリットがあります。
- 比較的値段が高い(4,600円/年、2020年1月現在) > Google Domains
- プライバシー保護機能が使えない
2のプライバシー保護機能とは何かというと、ドメインの公開管理者情報を表示させない(レジストラを管理者として公開する)機能のことです。お名前.comでは.jpドメインでも利用できるんですが、Google Domains では今の所できないようです。ともあれ、Google Domains の方が色々柔軟にできるっぽいし、UIも今風なので移管してみました。
移管の手順は makkyon さんの その独自ドメイン、Googleに移管してみない?Google Domainsが日本から利用可能になっていたのでドメインを移管してみた。 によくまとめられてますので、これを参考にして行います。注意点としては以下の通り:
- お名前.comの移管ロックの解除は、whois情報公開代行設定を解除してから行う → 【ドメイン】お名前.comから他の登録業者へ移管する方法は?
- Google Domains で入力を求められる REG-ID は、
REG-00-0000-0000
でよい → お名前.comからGoogle Domainsへの移管で詰まったことまとめ - Google Domains で、「移管を処理しています」という表示まで進んだら、ただただ待つ(数日)
わくわくしながらしばらく待ってますと、「トランスファー申請承認のご連絡」というメール(お名前.comの場合)が届き、移管処理が完了します。
6. DNSの設定
Google Domains で、移管したドメイン → DNS と進み、「ネームサーバー」の項目で「カスタム ネームサーバーを使用する」を選択し、2でメモしておいたNSレコードのデータを入力します。入力が完了すると末尾のドットが消えます(例:ns-cloud-d1.googledomains.com. → ns-cloud-d1.googledomains.com)が、気にしなくてよいです。これでドメインの名前解決がGCPで行われるようになるので、しばらくすると(DNS情報の浸透が完了すると)移管したドメインの表示がGCP上のWordPressに切り替わるはずです。やったぜ。
ネームサーバーの情報が自分から見て切り替わったかどうかを調べるには、ターミナルで whois ドメイン名
と入力します。
7. SSLの設定
Let's Encrypt を自動更新してくれるCertBotというのをインストールします。GCPで爆速なWordPressを爆速で構築しSSL化する9手順 に戻り、手順3から進めていきましょう。SSHは4で出てきたデプロイ詳細パネルから開けます。黒い画面多めですがビビらなくて大丈夫です。途中で nano というテキストエディタを使って設定ファイルを編集するとこはちょっと敷居が高いかもしれません。編集が終わったら「ctrl+o → enter(保存完了) → ctrl+x」で nano を抜けます。
これで世界最速級のWordPressサイトが思うままにいじれるようになりました。
その後
- WordPress のバージョンアップに伴い PHP のバージョンの警告が出るようになったので、PHP のバージョンアップをしました → Google Click to Deploy でデプロイした GCP の WordPress インスタンスのPHPのバージョンを最新にした
- Always Free 無料枠内で使えるよう変更しました → GCPのWordPressインスタンスを無料枠内で使えるようにした
- 2020.1.16 記事を公開
- 2020.1.17 引っ越し中でもサイトが正しく表示されるよう順序を修正
- 2020.3.31 いくつかの表現を若干修正
- 2020.5.26 Intellij IDEA での SFTP 設定を追記、ウェブルートのパスを修正
- 2020.6.25 その後を追記
- 2021.1.4 無料枠内での使用方法を追記