ヤマムギ

growing hard days

*

Nephila ClavataでWordPressの画像をS3から配信する

   


当ブログサイトはAWS EC2とRDS上でWordPressを構築しているのですが、画像はEC2サーバから配信していました。
そのため、EC2をスケール出来ない、や、EC2のバックアップをまめにとらないといけない、など運用の手間が発生するので、
Nephila ClavataでWordPressの画像をS3から配信する事にしました。

Nephila Clavata

詳細は作者さんのサイトからご確認ください。

  • PHP5.3以上が必要
  • データベースの記事レコードの画像のパスを書き換えているわけではない(the_content, wp_get_attachment_urlにフックして プラグイン側で変更してくれる。)
  • 設定後アップロードした画像はサーバとS3の両方に同期される
  • 設定前にサーバにアップロードした画像も記事が表示されたタイミングでS3に同期される
  • プラグインを無効化するとサーバからの配信に戻る(パスを書き換えていないので)
  • WordPressサーバを冗長化したときにサーバAからアップロードした画像をサーバBで表示したときにサーバBのローカルにも同期される?(要検証)

WordPress管理画面のプラグイン新規追加から追加しておきます。

画像を保存するS3バケットの作成

Nephila Clavataが画像を同期するためのS3バケットを作成します。

マネージメントコンソールのS3メニューから新規でバケットを作成します。

バケット名は「img.blog.yourdomain.com」などにしました。
※ドメインは独自ドメインを使う必要もないと思うのでそれほど意識する必要はないと思います。

リージョンはEC2と同じ東京リージョンにしました。

Loggingは同じバケットのlogフォルダを指定しました。

作成後、[プロパティ]でStatic website hostingを有効にします。

[アクセス権限] – [バケットポリシー]でアクセス権限を設定します。
logフォルダにはアクセス出来ないように、wp-contentフォルダ以下を有効にします。
index.htmlはテスト用に有効にしています。

ここまで出来たらバケットにindex.htmlを適当に作ってアップロードして、エンドポイント(例 : http://img.blog.yourdomain.com.s3-website-ap-northeast-1.amazonaws.com)にブラウザからアクセスしてみて、index.htmlが表示されることを確認します。

アップロード専用ユーザの作成

念のため、アクセスキーIDとシークレットアクセスキーが漏れてもアクセス範囲をS3だけに抑えるため専用ユーザを作成します。

マネジメントコンソールからIAMを開いてユーザを新規作成します。

ポリシーはAmazonS3FullAccessをアタッチしました。

作成したユーザーのアクセスキーIDとシークレットアクセスキーを控えます。

Nephila Clavataの設定

プラグイン一覧から[有効化]して[設定]します。

AWSアクセスキーIDとAWSシークレットアクセスキーが正しくアクセス権限が適切に設定されていれば、[変更を保存]をクリックすると、
[S3 バケット]と[S3 URL]の項目が表示されるのでそれぞれ入力して[変更を保存]をクリックします。

S3にまだない画像を含むページに最初アクセスするとS3側へのファイル作成が動くのでページ表示にやや時間がかかりますが、同期が出来ているページの表示には時間はかかりませんでした。

@yamamanx
開発ベンダー5年、ユーザ企業システム部門通算8年目のSoftware Engineerです。
質問はコメントかSNSなどからお気軽にどうぞ。
出来る限りなるべく答えます。

 - WordPress ,

ad

ad

Message

メールアドレスが公開されることはありません。

  関連記事

WordPressを4.7.2にアップグレード後、ログインしないと表示出来なくなって対応

このブログをWordPress 4.7.2にあげた後、ログインしていないと規則性 …

ホームページやサイトがiPhone,iPadのホーム画面に追加された時のアイコンを設定しておく

headタグでapple-touch-iconを指定 [crayon-59712 …

Amzon Linux のApacheでRedmineとWordPressをバーチャルホストで共存する

EC2とRDSを節約しようと思いまして、Redmineを動かしてるとこに検証用W …

WordPressにログインを強制して記事ごとのアクセス制限もする

WordPressを限定された組織内で使いたいとした場合に下記を実現したいと思い …

EC2 Amazon LinuxのNginx+RDS MySQLにレンタルWebサーバーからWordPressを移設する(手順整理版)

ブログサイト(WordPress)をレンタルWebサーバーからAWSに移設する事 …

Amazon LinuxのNginx+RDS MySQLにレンタルWebサーバーからWordPressを移設する(失敗、手戻りそのまま記載版)

勉強のためブログサイトを長らくお世話になったロリポップさんから、AWSに移設する …

WordPressの記事を公開日時に関係なくソート順を変更する

PostMash Customを使う WordPressのプラグインでPostM …