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

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

前回は「Let’s Encrypt でSSL 証明書を発行とリダイレクト設定」を行いました。

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

現在のWordPress は、Google Compute Engine(GCE) で構築したため、WordPress でアップロードしたメディア ファイルはVM インスタンスの永続ディスク(HDD)に格納されます。 フェーズ 1:WordPress をクリック操作のみでデプロイ での設定通りであれば、そのVMのHDD は「30 GB」になっています。この状態でアップロードを行っていくとその30 GB が圧迫され、WordPress に負荷がかかる恐れがあります。

WordPress が快適に稼働するようにメディア はGCSに格納するようにします。
GCS とWordPress の連携には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 が管理する鍵 を選択。
    • 保持ポリシー:チェックしない を選択。
    • ラベル:追加しない。
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 を「有効化」を行い、先ほど作成したGoogle Cloud Storage バケット と紐付けを行います。

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インスタンス内にあるメディア ライブラリの全てのファイルを、Google Cloud Storage と同期します。

タブ「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インスタンス にメディアを保存せず、Google Cloud Storage だけに保存を行うように設定します。

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

WP-Stateless:Stateless を選択

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

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

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

SSH 接続を行い、ターミナルを起動させます。

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

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

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

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

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

Cloudflare でGCS をhttps化

Google Cloud Storage は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プログラムでは、Google Compute Engine のHDD 30 GB に対し、Google Cloud Storage は5Gしかありません。
Google Cloud Storage 5 GB だけで運用すると早々に5 GBを超える可能性があり、料金が発生してしまいます。
また、VM インスタンス のHDD が圧迫してない状態であれば、同じ環境内でファイルを読み出しする方が表示速度は速いです。
どういう運用するかだと思います。

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

全記事

  1. 【はじめ 編】無料を目指してGCPでWordPress 環境構築
  2. 【WordPress構築 編】Google Cloud Platform でWordPress をクリック操作のみでデプロイ
  3. 【WordPresss設定 編】WordPressのアップロード上限を変更&Bitnami バナーの削除
  4. 【https化 編】SSL 証明書の発行とリダイレクトの設定
  5. 【Cloudflare 設定 編】Webサイトの表示速度を高速化
  6. 今ココ→【WP-Stateless 設定 編】WordPres のメディアをGoogle Clould Storage へ移行/バックアップ
  7. 【振り返り 編】GCE でWordPressを構築 with SSL化
  8. 【支払い 編】WordPress×GCPでの2020年1月の支払い料金

Google Cloudカテゴリの最新記事

:)