WP-Stateless

【WP-Stateless 設定 編】WordPres の画像をGoogle Clould Storage へ移行/バックアップ

前フェーズでは「Cloudflare を使ったWebサイトを高速化」を行いました。

今回は、WordPress のメディアを Google Cloud Storage(GCS)に格納/バックアップの設定を行います。

現在の WordPress は Google Compute Engine(GCE) で構築したため、WordPress でアップロードしたメディア ファイルは VM インスタンスの永続ディスク(HDD)に格納されます。 フェーズ 1:WordPress をクリック操作のみでデプロイ での設定通りであれば、そのVMのHDD は「30 GB」で、いずれ容量がいっぱいになります。
そのため、メディアを GCS に格納するようにして VM をひっ迫しないようにします。
WordPress プラグインの「WP-Stateless – Google Cloud Storage」を利用します。


ドメイン所有者の確認

GCS でドメインを使用したバケットを作成するには、そのドメインとサイトの所有者であることを GCP で設定する必要があります。

Google Domains でドメインを持っている方は除外されますが、他の DNS サービスを使用している場合はこちらの参照してください。

Google Cloud Storage バケット作成

GCS コンソール にアクセスし、左上のメニュー「≡」を選択し、「Storage」から [ブラウザ」をクリックします。]

GCP:Google Cloud Storage を選択

バケットを作成」をクリックします。

GCS:バケットを作成

次の項目に変更し、「作成」をクリックします。
また、Always Free に沿った内容で GCS バケットを作成します。

  • バケットに名前を付ける:適当な名称 を入力。
  • データの保存場所の選択
    • ロケーション タイプ:Region を選択。
    • ロケーション:us-east1、us-west1、us-central1 のどれか を選択。
  • データのデフォルトのストレージ クラスを選択する:Standard を選択。
  • オブジェクトへのアクセスを制御する方法を選択する:きめ細かい管理 を選択。
  • 詳細設定(省略可)
    • 暗号化:Google が管理する鍵 を選択。
    • 保持ポリシー:チェックしない を選択。
    • ラベル:追加しない。

※ 制御する方法 [きめ細かい管理] で設定しないと WP-Stateless のモード Backup / CDN / Ephemeral が有効になりません。

Google Cloud Storage:バケットに名前を付ける
Google Cloud Storage:データの保存場所の選択
Google Cloud Storage:データのデフォルトのストレージ クラスを選択する
Google Cloud Storage:オブジェクトへのアクセスを制御する方法を選択する
Google Cloud Storage:オブジェクトへのアクセスを制御する方法を選択する詳細設定(省略可)
Google Cloud Storage:オブジェクトへのアクセスを制御する方法を選択する詳細設定(省略可)

バケットを作成後、タブ「権限」を選択し、「メンバーの追加」をクリックします。

Google Cloud Storage:メンバーを追加

次の設定を行い、「保存」をクリックします。

Google Cloud Storage:「gcs.nippotea.com」にメンバーを追加します

「allUser(全てのユーザー)」に「オブジェクトの閲覧許可」を設定したことで、サイトのメディアが誰でも見れるようになります。

Google Cloud Storage:「gcs.nippotea.com」の追加完了

Google Cloud Storage のAlways Free について

Always Free プログラム概要と詳細およびGoogle Cloud Storage ドキュメントでは、リージョンについて違いがあります。
詳細&ドキュメントの説明書きが正しく、ロサンゼルス [us-west2] で設定した場合は料金が発生します。

  • 概要:北バージニア [us-east4] を除く米国リージョンのみ)。
  • 詳細&ドキュメント:us-east1、us-west1、us-central1 のリージョンでのみ。

WP-Stateless の設定

Wordpres プラグインから「新規追加」をクリックします。
WP-Stateless – Google Cloud Storage」を「今すぐインストール」選択し、「有効化」を行います。

Wordpres:プラグインのインストール

WP-Stateless を「有効化」を行い、先ほど作成した GCS バケット と紐付けを行います。

WP-Stateless

ガイドに従って進めます。

WP-Stateless:Google Login
WP-Stateless Setup:Project & Bucket
WP-Stateless:Complete

ドメイン形式でアクセスできるようにする

初期設定では、メディア ファイル のドメインは「https://storage.googleapis.com/gcs.nippotea.com/~~」になっています。

サブドメイン「gcs.nippotea.com」が使用できるように変更設定を行います。

WordPress 管理の左ナビゲーションのメディアを選択し、[stateless Settings] をクリックします。
タブ [Settings] を選択し、Domain にサブドメイン を入力して [変更を保存] をクリックします。

WP-Stateless Setup:ドメイン の設定

Google Cloud Staorage で独自ドメインに使用する場合は「https://」にしかできません。
https 化するには Google Clould Load Balancing を使用するか、サードパーティーツール で付与するしかありません。

今回は Cloudflare を利用して https 化を行います。
詳しい説明は後ほどのステップで説明します。

メディアをGoogle Cloud Storage に移動

VMインスタンス内にあるメディア ライブラリの全てのファイルを GCS と同期します。

タブ「Sync」を選択し、[Regenerate all stateless images and synchronize Google Storage with local server] を選択して [Run] をクリックします。

WP-Stateless:Google Cloud Storege に移動

VMインスタンス マシンタイプを「f1-micro(1 vCPU、614M メモリ)」のままだと処理が貧弱でメディアが大量または容量が多い場合、処理に時間がかかります。

Google Cloud Storage だけにメディアを保存

アップロードしたメディアは VMインスタンス にメディアを保存せず、GCS だけに保存を行うように設定します。

タブ「Settings」を選択し、[Stateless] を選択して [変更を保存] をクリックします。

WP-Stateless:Stateless を選択

メディアがアップロード動作が行え、メディアが表示されている動作確認を行います。

VMインスタンスに格納されているメディアを削除

WordPress でアップロードしたメディア ファイルが VM に残っているため、VM からメディアを削除を行います。

SSH 接続を行い、ターミナルを起動させます。
メディア ファイルが格納されているディレクトリに移動し、ディレクトリ内のファイルを確認するために次のコマンドを入力します。

cd /var/www/html/wp-content/uploads/
ls
ターミナル:WordPress メディア ディレクトリに移動し、ファイルを確認
フォルダ「2019」があるのが確認できる。

作成されていた 2019 ディレクトリを削除し、ディレクトリに何もないことを確認するために次のコマンドを入力します。

cd
sudo rm -r /var/www/html/wp-content/uploads/*
cd /var/www/html/wp-content/uploads/
ls
ターミナル:ディレクトリ内のファイルを削除し、削除確認

VM に格納されていたメディア ファイルは削除されました。

Cloudflare で Google Cloud Storage をhttps化

GCS はSLL 証明書を発行していないため、http のみしかできませんが Cloudflare のネットワークを使用してhttps化を行います。
この方法であれば VMインスタンス にSSL 証明書を生成しなくても、https化が行えますので楽です。

Cloudflare のタブ「DNS」に移動します。
次の項目に変更し、Targetには「c.storage.googleapis.com」を入力して [Save]をクリックします。

Cloudflare:GCS のCNAME レコードの設定
反映されるには数十分かかる場合があります。

タブ「SSL/TLS」に移動し、「Full (strict)」を選択します。

Cloudflare:SSL / TLS の設定
Full (strict)は、エンドツーエンドで暗号化するが、サーバー上に信頼できるCAまたはCloudflare Origin CA証明書が必要。

適当なメディア URLをhttps に変更し、https化されている事を確認します。


まとめ

これは運用の話になるのですが、
Always Freeプログラムでは GCE のHDD 30 GB に対し、GCS は5Gしかありません。5 GBを超えた場合は超えた分の料金が発生してしまいます。
また、VM インスタンス のHDD が圧迫してない状態であれば、同じ環境内でファイルを読み出しする方が表示速度は速いです。
どういう運用するかだと思います。

マシンタイプ「f1-micro 」は The 貧弱 マシンタイプです。
私はアクセス数の増加や内部処理が発生したときに負荷を軽減させるため、VM インスタンス内には極力メディアは置かず、GCS に格納するようにしています。
このメディアも WordPress プラグインを使用して、出来る限り軽量化しております。

全記事

  1. 【概要 編】無料を目指してGCPでWordPress 環境構築
  2. 【WordPress構築 編】GCP でWordPress をクリック操作のみでデプロイ
  3. 【ドメイン設定 編】IPアドレスの固定化&Google Domains でドメイン設定
  4. 【WordPresss設定 編】WordPressのアップロード上限を変更&Bitnami バナーの削除
  5. 【https化 編】SSL 証明書の発行とリダイレクトの設定
  6. 【Cloudflare設定 編】Webサイトの表示速度を高速化
  7. 今ココ→【WP-Stateless設定 編】WordPres の画像をGoogle Clould Storage へ移行/バックアップ

後日 編