AWSでSSL対応WordPressサイトを構築したメモ。

AWS,ネットワーク,勉強

概要

  1. 勉強も兼ねて、書籍を参考にAWSでwordpress環境を構築した
  2. AWSでWordPress環境を作成すること自体は簡単(1h~3h程)
  3. VPC,CIDR,サブネット,NAT,EC2,MySQL(MariaDB),webサーバの知識が多少必要
  4. Let’s Encryptを使用すればSSLも簡単に対応可能
  5. Let’s Encryptの証明書は更新が必要なので自動更新するようにしておくと便利

AWS上の構成

最終的に作りたい最小の構成を図にして示すと以下の形になる。

  1. VPCの中にインターネットからアクセス可能なpublicサブネットを作成。
  2. VPCの中にインターネットからアクセス不可能なprivateサブネットを作成。
  3. publicサブネットにEC2インスタンスを立てる。wordpressを動かす用。
  4. privateサブネットにEC2インスタンスを立てる。MariaDBを動かす用。
  5. 各サブネットにセキュリティグループを設定。
  6. インターネットゲートウェイを作成し、VPCにアタッチ。
  7. ルーティングテーブルをそれぞれ設定する。
  8. Route53にてドメイン取得&DNS設定をする。

注意:Privateサブネット内のEC2にMariaDBをインストールする際、インターネット接続が必要になる。その際はNATを立て対応する。

SSL化

  1. Let’s Encryptの導入クライアントCertbot(Certbot-auto)をインストール
    1. Amazon Linux2に対応してないので微妙にコードの書き換えが必要だった。
  2. 証明書の発行とApache(or 他のwebサーバ)の設定
  3. Let’s Encryptの証明書は3ヶ月ごとに更新が必要なので、crontabで自動コマンドを叩くよう設定
  4. Apache(or 他のwebサーバ)にてhttp接続がきたらhttps接続へリダイレクトするよう設定
    1. あるいはAWSのセキュリティグループでhttp接続を閉じてしまっても良い

WordPress設定

  1. 画面に従って設定。好きなテーマを入れる。
  2. あとは好きなプラグインなりを入れてカスタマイズ。

参考にしたもの

今回箇条書きで記載した"AWS上の構成"、と言う部分はこの本に詳細なやり方が記載されている。

ネットワークの基礎的な知識をAWSを使って学べる。WordPress環境を作りながら、特に不具合もなく楽しく学習が進められた。画面上の操作も画像を使って説明されており、迷うことがない。

AWSを勉強する人の間では有名な本。紫本と呼ばれていたりする。

その他記事:

感想

かなり前に業務でAWSを使ったことがあったが、しばらくインフラ/ネットワーク周りを触っていなかったことに不安を感じたため復習として上記の書籍を購入した。

上記紫本は本当に読みやすく、AWSの基本的な用語の意味、ネットワーク用語の意味をやさしく説明してくれた。バックエンドエンジニアにとっては、CIDR,サブネット,NATなどの普段触れない知識に触れられるだけでも読む価値がある。昔勉強したはずのことも、改めて突き付けられると忘れていることが多くあって、それを自覚できたことがまず私には貴重だった。

実務に向けて

今回は個人での利用なのでコスト面から最小構成で作成したが、もう少し堅牢でスケーラブルなサービスを作りたい場合は今の私なら大体以下のようにする。

こちらの方がよく見かける基本的な構成かと思う。

ELB(ALB)を立てること、AZを分けること、DBをフルマネージドなAmazonRDS(Aurora)にすることで堅牢性と保守性を増している。ロードバランサを使うことでスケールアウト/スケールアップにも容易に対応できるようになる。よくある具体的な例として、負荷が増してきたからEC2を追加したい、という場合にもロードバランサがあれば簡単に新しいインスタンスをぶら下げられる。

実際に運用する場合は上記構成に要件にあったサービスを追加する形が良いと思う。

私がよく関わる業務の要件から想像すると、ほとんどの場合S3が必要になりそうだと感じた。DBのデータやログをバックアップしたい、画像を置いておきたい(その場合はCloudFront[CDN]も利用するかも)などの場合が考えられる。

また、高速なキャッシュを必要とする場合が多いためElastiCacheかDynamo DBを加えることが多そう。コスト面で考えるとElastiCacheを選択するだろうな、というのが今の印象。

最近流行しているサーバレスアーキテクチャ周りでは、LambdaやAPI Gateway, SQSを利用することもありそう。フロントエンドさえ開発してしまえば、BFFはLambda+API Gatewayでほとんど十分なものが作れてしまうと思う。サーバレスアーキテクチャの案件に関わったことがないため、今後は是非触っていきたい。

AWS,ネットワーク,勉強

Posted by shoopon