やりたかったこと
- Wordpressでコンテンツを配信したいけど、セキュリティ対応をしたくなかったです
構成
- 直接のEC2へのアクセスは内部NWからのみにする
- EC2内からWordpressのプラグインを使って静的htmlをS3へ書き出し、CFで配信する
Wordpress構築
- bitnamiのamiを利用して適当に構築(シングル構成のEC2)
- グローバルIPの割り振り
- セキュリティグループの指定で80/443へのアクセスのソースIPを絞る
- 詳細は割愛
S3/CloudFrontの設定
- 普通に作ります
- 詳細は割愛
静的ファイル書き出しプラグイン
WP2Staticというプラグインを使います。(StaticPress/StaticPress-S3という国産プラグインもあったのですが、S3連携が動きませんでした)
- 本体
- S3へのアップロード&CF invalidationのアドオン
- WP2Static-S3
- https://github.com/leonstafford/wp2static-addon-s3
- プラグインファイルDL
機能
- 静的ファイルへの書き出し
- 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
終わりに
これでセキュリティのこと考えずに眠れますね