FPT Object Storage を WordPress のメディアサーバーとして使用する
WordPress のメディアを FPT Object Storage に保存すると、ウェブサーバーの負荷とディスク使用量を減らせるうえ、ブラウザーが画像や動画を bucket から直接ダウンロードできるようになります。このガイドでは Media Cloud プラグインを使用しますが、他のプラグインも同様の仕組みで動作します。
メディアに bucket を使用する理由
- ウェブサーバーの負荷軽減: サーバーがメディアファイルを保存・配信する必要がなくなるため、リソースをページのリクエスト処理に回せます。
- コスト削減: object ストレージはサーバーのディスクより低コストです。ブラウザーはウェブサーバーの帯域幅を使わずにメディアをダウンロードでき、料金は使用したストレージ分だけです。
- 独立したストレージ: ウェブサイトを別のサーバーに移行しても、メディアは bucket に残ります。そのため、ファイルの移行やリンクの更新は不要です。
- ページの高速化: ハノイとホーチミン市のデータセンターにより国内でのダウンロード速度が安定し、データは政令 53/2022 に従ってベトナム国内に保管されます。
前提条件
- WordPress で稼働しているウェブサイト。
- アカウントで FPT Object Storage が有効になっていること。
- 使用する Region の endpoint。詳しくは、Access Key を管理するを参照してください。
仕組み
WordPress 単体では S3 にファイルを保存できません。プラグインが WordPress のアップローダーに組み込まれ、WordPress がファイルをアップロードすると、そのファイルを FPT Object Storage にコピーし、ローカルのコピーを削除して、メディアのリンクを bucket を指すように書き換えます。この処理を行うプラグインには、WP Offload Media Lite、Media Cloud、Media Library Folders Pro S3、W3 Total Cache などがあります。
メディア用の bucket を作成する
- ウェブサイトのメディアファイル用の bucket を、Portal または S3 Browser で作成します。
- ブラウザーが読み込めるように、object を公開します。詳しくは、権限を管理するを参照してください。
- bucket を保護します。キーと endpoint を知っていれば誰でも object を変更・削除できるため、キーが盗まれるとメディアがすべて消去されるおそれがあります。
- Versioning を有効にして、変更された object の以前のバージョンを保持します。
- 書き込みを許可する IP アドレスや、アップロードを許可するファイル拡張子を制限する Bucket Policy を追加します。
- bucket を別の bucket にバックアップします。
WordPress 用の SubUser を作成する
Admin Access Key は簡単なテストには使用できますが、WordPress に保存したままにしないでください。漏洩すると、すべての bucket のデータが削除されるおそれがあります。メディア用の bucket にのみアクセスできる SubUser を作成し、そのキーをプラグインで使用してください。詳しくは、SubUser を管理するとSubUser に bucket 単位のアクセス権を付与するを参照してください。
Media Cloud をインストールして設定する
- WordPress の管理画面で Plugins に移動し、Media Cloud を検索してインストールします。
- プラグインを有効化し、endpoint、SubUser の Access Key と Secret Key、bucket 名を入力します。
- 接続に成功したら、基本設定を調整します。
- UPLOAD HANDLING で、bucket にアップロードするファイルの種類を選択します。
- Delete From Storage を有効にして、WordPress でメディアを削除したときに bucket からも削除されるようにします。
- WordPress でテスト画像をアップロードし、bucket に表示されることを確認します。
これ以降、WordPress は新しいメディアを bucket に保存します。
Media Cloud の無料版では、プラグインのインストール前にアップロードされたファイルは移動されません。既存のファイルを移動するには Premium 版が必要です。