【WP-Stateless 設定 編】メディアをGoogle Clould Storage へ移行/バックアップ

はじめに

アップロードしたメディア ファイルは、Google Compute Engine のVMインスタンス に格納されます。
WordPress をクリック操作のみでデプロイ で設定した通りであれば、インスタンスが内蔵するHDD容量は「30 GB」になっております。
WordPress 本体  = VMインスタンス に負荷を掛からないように、メディア ファイルはGoogle Cloud Storage に格納するようにしたいと思います。
また、Google Cloud Storage を独自ドメインで使用する場合、SSL 証明書を生成できないため、Cloudflare を利用して、メディア URLをhttps化を行います


ドメイン所有者の確認

Google Cloud Stprage では、ドメイン名でバケットを作成するには、ドメイン名を使用する権限があることを確認するためドメインとサイトの所有者であることを知らせる必要があります。
Google Domains でドメインを持っている方は除外されます。

私はこのフェイズを行っていないため、こちらの参照してください。

Google Cloud Storage バケット作成

Google Cloud Platform にアクセスし、左上の「≡」メニューを選択し、「Storage」の「ブラウザ」をクリックします。

 

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

次の項目を変更し、「作成」をクリックします。
また、Google Cloud Storege をAlways Free に適応させます。

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

Google Cloud Storage のAlways Free について

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

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

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

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

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

WP-Stateless の設定

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

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

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

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

初期設定では、メディア ファイル のドメインは「https://storage.googleapis.com/gcs.nippotea.com/~~」になっています。
サブドメインが使用できるように変更設定を行います。

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

Google Cloud Staorage で独自ドメインに使用する場合は、「http://」にしかできません。
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」をクリックします。

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

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

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

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

次のコマンドを入力し、VM インスタンスにメディア ファイルに移動し、ディレクトリ内のファイルを確認します。

cd /opt/bitnami/apps/wordpress/htdocs/wp-content/uploads/
ls
フォルダ「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 インスタンスにアップロードされていたメディア ファイルは削除されました。

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

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

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

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

Cloudflare でGCS をhttps化

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

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

反映されるには数十分かかる場合があります。

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

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 プラグインを使用して、出来る限り軽量化しております。

Google Cloudカテゴリの最新記事