WordPress
S3
staticpress

Wordpressで作成したブログをS3で管理する。StaticPress

S3で管理する利点

EC2を起動しないでいいので、料金が安く済む。

S3のバケットを作成する

公開する静的ファイルを置く、S3を作成します。
http://example.comの場合、example.comというバケットを作成します。
スクリーンショット 2018-05-10 15.32.35.png

IAMの設定を行います。

ポリシーを作成します

S3Onlyという名前にしてみました。(適当で)

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "s3:ListAllMyBuckets",
                "s3:GetBucketLocation",
                "s3:DeleteObject",
                "s3:GetObject",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Effect": "Allow",
            "Resource": "arn:aws:s3:::*"
        },
        {
            "Action": "*",
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::${aws:username}",
                "arn:aws:s3:::${aws:username}/*"
            ]
        }
    ]
}

S3を使用するユーザを作成します。

ユーザを作成します。
作成したときに取得する、アクセスキーとシークレットキーを後で使います。
さきほど作成したポリシーをアタッチします。
ここでは、S3Onlyというユーザを作成しました。(適当)
同じ名前ですが、S3Onlyというポリシーをアタッチしました。

StaticPressのプラグインをインストールする

WordPressのプラグインの項目から新規追加する。

スクリーンショット 2018-05-10 14.58.22.png

インストールしたら、有効化を忘れずにします。

StaticPress S3もインストールします。

こちらは、WordPressからインストールできません。
Gitから「Download ZIP」を押して、Zipを落としてください。
https://github.com/megumiteam/staticpress-s3
スクリーンショット 2018-05-10 15.16.59.png

プラグインの新規追加画面を開きます。
プラグインのアップロードボタンを押します。
スクリーンショット 2018-05-10 15.22.16.png

先ほどダウンロードしたZIPを選択し今すぐインストールを押します。
スクリーンショット 2018-05-10 15.25.59.png

StaticPressとStaticPress S3を有効化します。
スクリーンショット 2018-05-10 15.27.06.png

StaticPressのコードを修正

AWSのインスタンスで立ち上げた場合必要でした

wordpress_home/wp-content/plugins/staticpress-s3-master/includes/class-S3_helper.php
$magic_file = '/usr/share/misc/magic';

$magic_file = '/etc/httpd/conf/magic';

一応リスタートします

sudo service nginx restart
sudo service php-fpm restart

StaticPressの設定

StaticPressの設定を押して、設定します。

スクリーンショット 2018-05-10 16.48.50.png

静的サイトURLには、S3バケットでのエンドポイントを設定してください
出力先ディレクトリ (ドキュメントルート)には、/wordpress_home/staticを設定します。

真ん中にある、変更を保存ボタンを押します。

AWS Access Key
AWS Secret Key
AWS Region
を入れて、一番下にある変更を保存ボタンを押します。

そうするとバケットが選べるようになるので、S3に作成したバケットを選択し、変更を保存ボタンを押します。

StaticPressで再構築

StaticPressの再構築を押します。
これにより、設定で指定した、出力先ディレクトリと、S3のバケットに静的ファイルが出力されます。
スクリーンショット 2018-05-10 16.56.59.png

Route53で公開する

Route53を開き、使用するドメインのAレコードにS3で指定したドメイン名と同じバケットを指定する

完成

これで完成となります。
アクセスして確認してください