4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

メモ:Wordpressから静的ファイルを書き出してS3/CF配信する

Last updated at Posted at 2020-12-23

やりたかったこと

  • Wordpressでコンテンツを配信したいけど、セキュリティ対応をしたくなかったです

構成

  • 直接のEC2へのアクセスは内部NWからのみにする
  • EC2内からWordpressのプラグインを使って静的htmlをS3へ書き出し、CFで配信する

Wordpress構築

  • bitnamiのamiを利用して適当に構築(シングル構成のEC2)
  • グローバルIPの割り振り
  • セキュリティグループの指定で80/443へのアクセスのソースIPを絞る
  • 詳細は割愛

S3/CloudFrontの設定

  • 普通に作ります
  • 詳細は割愛

静的ファイル書き出しプラグイン

WP2Staticというプラグインを使います。(StaticPress/StaticPress-S3という国産プラグインもあったのですが、S3連携が動きませんでした)

機能

  • 静的ファイルへの書き出し
  • S3へのアップロード
  • CloudFrontのinvalidation(キャッシュ削除)

インストール

上記のプラグインのzipファイルをwp-adminからアップロードしてインストールします

設定方法

下記の感じで設定します。特に難しいところはない。

  • WP2Static > Addons > S3Deployment > Configure
    • バケット名、リージョン、アクセスキー、シークレットキー、バケットパスなどS3の基本情報を指定する
    • 同様にCloudFrontのinvalidation情報を指定する
    • 通常はObject ACLをprivateに変更しないとエラーになるので注意
  • WP2Static > Addons > S3Deployment > Enabled
    • ボタンを押して有効化する
    • 「Enabled」というボタンが表示されていると有効
  • WP2Static > Options > Post-processing Options > Deployment URL
    • 配信する際のドメインを指定する
    • このドメイン直書きで静的ファイルが生成されるもよう
  • WP2Static > Jobs > Events to queue new jobs
    • デフォルトで記事の更新・削除をすると自動的に再ビルドするようになっている
    • お好みでOFFにしたほうがよい

書き出しの実行

  • WP2Static > Generate static site
    • 実行が開始される
    • Refresh logsボタンを押すとログを更新できる

追記

  • どうも書き出しをした時にCSSや画像のリンクが切れることがあって変だなーと思ったら、ApacheのModPagespeedというモジュールが悪さをしていました。
  • sshで入って、下記の修正で直りました。
/opt/bitnami/apache2/conf/pagespeed.conf
#ModPagespeed on
ModPagespeed off
  • Apacheの再起動が必要です
$ sudo /etc/init.d/bitnami restart apache

終わりに

これでセキュリティのこと考えずに眠れますね

4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?