WordPress on Amazon S3(S3 in EC2篇)

記事タイトルとURLをコピーする

こんにちは、CSチームの坂本です。

前回「WordPress on Amazon S3」と題して、「Really Static」というWordPressのプラグインを利用してWordPressをAmazon S3で公開するまでの流れを説明させていただきました。

前回の記事
WordPress on Amazon S3

今回は、前回の記事の最後に「他にEC2でS3をマウントして利用する方法もあります。」と書いていた内容に関して説明したいと思います。

今度はS3をファイルシステムとしてマウントできるツール、「s3fs」を利用して、前回「S3Sync.rb」を使ってS3へリリースしていた工程を削りたいと思います。

今回利用したツール

s3fsS3をファイルシステムとしてマウントできるツール


目次

  1. 「s3fs」のインストール
  2. S3をマウント
  3. 「Really Static」の設定変更
  4. S3で再公開

1. 「s3fs」のインストール

※今回のEC2の環境は「AmazonLinux-2011.9.1-i386」を使用しています。

まず、事前に必要なパッケージをインストールします。

yum install gcc
yum install libstdc++-devel
yum install gcc-c++
yum install fuse
yum install fuse-devel
yum install curl-devel
yum install libxml2-devel
yum install openssl-devel
yum install mailcap
yum install make

「s3fs」をインストールします。

wget http://s3fs.googlecode.com/files/s3fs-1.61.tar.gz
tar xvzf s3fs-1.61.tar.gz
cd s3fs-1.61/
./configure --prefix=/usr
make
sudo make install

「s3fs」の設定を行います。

sudo vi /etc/passwd-s3fs


/etc/passwd-s3fs

アクセスキー:シークレットキー

※上記を記載してください。

インストール方法は以下のページも参考にしてください。
http://code.google.com/p/s3fs/wiki/InstallationNotes

2. S3をマウント

マウント用のディレクトリを作成します。

mkdir /mnt/static

S3をマウントします。

s3fs mybucket /mnt/static/ -o allow_other -o default_acl=public-read

※オプションで「allow_other」を指定すると他のユーザーでもS3を操作できるようになります。
※default_aclはデフォルトでは「private」になっていて公開されないので、「public-read」を指定します。

オプションに関しては以下も参考にしてください。
http://code.google.com/p/s3fs/wiki/FuseOverAmazon

3. 「Really Static」の設定変更

前回の設定を変更します。

設定 > Really Static > Destination

work with local filesystem internal filepath from to cachedfiles :

/mnt/static/wordpress/

※静的なHTML生成場所をS3をマウントしたディレクトリに変更します。

以下は前回と同じ作業工程です。

※今回前回の状態のまま作業を行ったところ、書き込み権限がないというエラーが発生しましたので、AWS Management Consoleでバケットの中を一旦空にし、EC2上でマウントし直してから、以下の作業を行っています。

設定 > Really Static > Reset

「reset filedatabase」ボタンを押します。
※「Really Static」をインストールすると、DBに「wp_realstatic」というテーブルが作成されますが、このボタンを押すと「wp_realstatic」テーブルに保存されている情報が削除されます。

4. S3で再公開

設定 > Really Static > Manual Refresh

「write all files」ボタンを押します。
※このボタンを押すと、静的なHTMLページが生成されます。

無事、前回「S3Sync.rb」を使ってS3へリリースしていた工程を削ることができました。


これでEC2上でS3をあまり意識することなく連携ができるようになりました。

同じリージョン内にあるEC2とS3間ではデータの転送料が発生しないので、今回のように両方ともTokyoリージョンを使用していれば金額面も意識しないで済みますね。