AWS
YAML
CloudFormation

Cloud Formationでnginx+wordpress環境を用意する

作った動機

cloudformatonを使ったことがなかったというのもあり、勉強がてら触ってみることにした。
特にサーバ環境とかを考慮しないのであれば、wordpress用のCFNテンプレをAWSが用意してくれているので問題無いんですが、LAMP構成(あんまり好きじゃないw)だったり、phpが古かったりで、あまり今の構成のまま本番運用に使えないなーって感じ、新しく作ることに。
また、弊社ではwordpressを使う開発も結構多いので、作っておいて運用まで使えれば問題ないかなとも思って作成しました

Cloudformationとは?

Amazon Web Servicesリソースのモデル化およびセットアップに役立つサービス。
インフラストラクチャ管理がコード化されているため、簡略化できすばやく複製ができちゃうすばらしいサービスです。

前提条件

・VPCの知識
VPCはいちいち作り直す事もないかなーと思ったので、今回のテンプレートには、VPC環境を1から作るようなフォームは用意していません。なので、VPC環境は、事前に用意しておいてください。
・Route53にHostedZoneの設定
Route53にDNSの設定をするとドメインも設定できるようになってます

・AWSの簡単な知識
基本的にこのテンプレートを使えば誰でも構成できるようにしているつもりですが、VPCも然りAWSの知識も少し知ってないと使うことが少し厳しいかもしれません

・LB・CF/ACMの準備
ACMを使用したSSLの設定を前提として作成してますが、cloudfront/LBにどちらにぶら下げるかはプロジェクト次第かと思ったので、今回はCFNの設定に組み込みませんでした。
プロジェクトごとにどちらを使用するかを決めて対応するようにしてください。

使用環境

PHP ver7.1
php fpm
nginx
Mysql ver5.7

参考にしたサイト

以下のリンクのテンプレートを参考に作成させていただきました。
https://github.com/stelligent/cloudformation_templates/tree/master/labs/wordpress
リンクのテンプレでも充分に使えるんですが、以下の理由からカスタマイズを行いました。
・構築済みRDSを使用する前提だったので、テンプレ内でDBが自動生成されない(今回はローカルDBを構築するように設定を変更しました)
・PHP, Mysqlのバージョンを最新にしたい
・EFSは不要なので消したい

作成環境

AWS Networking.png

テンプレート

テンプレートは以下に公開してます
https://github.com/katyou/cloudfront-wordpress-nginx/blob/master/wordpress-nginx.yml

あとはGOするだけです!
Wordpress Lab