インフラエンジニア志望の私は、勉強の一環としてAWSを使い、WordPressを構築しました。
この記事では、その中でもEC2インスタンスの作成からSSL証明発行までの手順をまとめました。
同じようにWordPress構築やAWSの学習している方の参考になれば幸いです。
構築手順
- EC2インスタンスを作成
- Elastic IPを作成
- お名前.comでドメインを取得
- AWS Certificate Manager (ACM)で証明書リクエスト
- Route 53でホストゾーンを作成
- 作成されたNSレコード、ElasticIPをお名前.comに設定
- ターゲットグループを作成
- ALB(ロードバランサー)を作成
- Route 53で独自ドメインをALBに向ける
- Tera Term 5インストール&インスタンスにSSHで接続
1. EC2インスタンスを作成
EC2インスタンスとはAmazon Web Services (AWS) が提供する仮想サーバーのサービスです。
サーバーを購入して用意しなくても、インターネット越しに使うことができます。
①インスタンスを起動します。
- AWSマネジメントコンソールから「EC2」を検索して開きます。
- 「インスタンスを起動」をクリックします。
②インスタンス名とAMIを設定します。
- 「名前とタグ」に任意のインスタンス名を入力します。
- 「アプリケーションおよびOSイメージ(Amazon マシンイメージ)」で無料利用枠の対象であるAmazon Linux 2 AMI (HVM) – Kernel 5.10, SSD Volume Typeを選択します。
③「インスタンスタイプ」では、無料利用枠の対象にあるt2.microを選択します。
④「キーペア(ログイン)」で、新しいキーペアの作成をクリックします。
⑤キーペアを作成します。
- 「キーペア名」に任意の名前を入力します。
- 「キーペアのタイプ」でED25519を選択し、「プライベートキーファイル形式」で.pemを選択して、キーペアを作成します。
⑥「ネットワーク設定」でセキュリティグループを作成を選択し、他の設定はデフォルトのままでインスタンスを作成します。
⑦セキュリティグループを選択します。
- 左側のメニューからインスタンスをクリックし、作成したインスタンスを選択します。
- 画面下部の「セキュリティ」タブをクリックし表示されたセクション内のセキュリティグループを選択します。
⑧セキュリティグループの編集を行います。
- セキュリティグループの「インバウンドのルールを編集」をクリックします。
- 「ルールを追加」をクリックし、タイプにHTTPを選択します。
- 「ルールを保存」をクリックして変更を反映します。
2. Elastic IPを作成
Elastic IPとはAWSが提供する静的なIPアドレスであり、インスタンスに永続的に割り当てることができます。
通常のパブリックIPアドレスは、インスタンスの起動や再起動をするたびに変更される可能性がありますが、ElasticIPはインスタンスを起動・再起動してもIPアドレスが変わりません。
①EC2の左側メニューからElastic IPを開き、「Elastic IPを割り振る」をクリックします。
②「Elastic IPアドレスの設定」でAmazon の IPv4アドレスループを選択し、割り振るをクリックすると、割り当てが完了します。
③Elastic IPをインスタンスに関連付けるため、画面右上のアクションから「Elastic IPアドレスを関連付ける」をクリックします。
④「リソースタイプ」でインスタンスを選択し、関連付けたいインスタンスとプライベートIPアドレスを選択し、「関連付ける」をクリックします。
3. お名前.comでドメインを取得
お名前.comはGMOインターネット株式会社が運営する、ドメイン登録サービスです。
①「お名前.com」でドメインを取得します。
4. AWS Certificate Manager (ACM)で証明書をリクエスト
ACMとはSSL証明書の発行や発行済みのSSL証明書を自動で更新できるサービスです。
SSL証明書とは、通信の暗号化し、ウェブサイトの安全性を証明するためのものです。
SSL証明書を使用することで、利用者の個人情報が盗まれないよう通信を暗号化し安全なウェブサイトを提供できます。
また、なりすましサイトの対策としても有効です。
①証明書をリクエストします。
- AWSマネジメントコンソールで「Certificate Manager」 を検索して開きます。
- 「証明書をリクエスト」をクリックします。
②「証明書タイプ」でパブリック証明書をリクエストを選択し、次へをクリックします。
③「ドメイン名」にお名前.comで取得したドメイン名を入力します。
④「エクスポートを許可」でエクスポートを無効にするを選択します。
⑤「検証方法」でDNS検証を選択します。
⑥「キーアルゴリズム」でRSA 2048を選択し、リクエストをクリックします。
⑦証明書の作成が完了しました。
5. Route 53でホストゾーンを作成
Route 53とはDNSの機能を提供するサービスです。
ドメイン名とはIPアドレスを人間が覚えやすい文字列に置き換えたものです。
DNSは、ブラウザでドメイン名を入力した際に、そのドメイン名に紐づいたIPアドレスを探し出して対応する仕組みです。
このDNSの機能を提供するサーバーがDNSサーバーです。
ホストゾーンとはドメイン名に関するDNS情報を管理する場所のことです。
①AWSマネジメントコンソールで「Route 53」 を検索して開きます。
②左側メニューからホストゾーンをクリックし、画面右上の「ホストゾーンの作成」をクリックします。
③ホストゾーンの設定を行います。
- 「ドメイン名」に、取得したドメイン名で登録します。
- 「タイプ」では、パブリックホストゾーンを選択します。
- 「ホストゾーンの作成」をクリックしてホストゾーンを作成します。
④「レコードを作成」から、ACMのCNAME検証レコードをホストゾーンに追加します。
6. 作成されたNSレコードとElastic IPをお名前.comに設定
①「お名前.com」にログインします。
②左側メニューから「ネームサーバー/DNS」をクリックし、ドメインDNS設定→ドメインDNSを順に選択します。
③DNSレコードとElastic IPを登録します。
- 「DNSレコード設定」でレコードの追加をクリックします。
- Route 53 によって自動作成されたNSレコード(4つのネームサーバー)と、インスタンスのElastic IPを入力し、保存します。
7. ターゲットグループを作成
ターゲットグループとはロードバランサーからWebサーバーにアクセスする際に、関係する設定を行います。
①ターゲットグループを作成します。
- AWSマネジメントコンソールで「EC2」を検索して開きます。
- 左側メニューからターゲットグループをクリックし、画面右上の「ターゲットグループの作成」をクリックします。
②「ターゲットタイプの選択」で、インスタンスを選択します。
③ターゲットグループの設定行います。
- 「ターゲットグループ名」には任意の名前で入力します。
- 「プロトコル:ポート」はHTTP:80に設定します。
④「ヘルスチェックパス」には「/」を入力します。
⑤作成したインスタンスをターゲットとして登録し、ターゲットグループを作成します。
8. ALB(ロードバランサー)を作成
ALB(ロードバランサー)とはWebサイトへの外部からの通信によるサーバーの負荷を、複数のEC2インスタンスに分散させる仕組みで、Webサーバーやキャッシュサーバーの運用において、広く利用されています。
ロードバランサーにSSL証明書を設定すれば、通信の暗号化を一元管理できます。そのため、各EC2インスタンスごとに証明書を設定・更新する必要がありません。
ウェブサイトにアクセスすると、ロードバランサーで接続が確立され、暗号化されたデータがEC2インスタンスへ安全かつ高速に中継が行われます。
①ロードバランサーを作成します。
AWSマネジメントコンソールで「EC2」と検索します。
左側メニューからロードバランサーをクリックし、「ロードバランサーの作成」をクリックします。
②「Application Load Balancer」 を選択します。
③ロードバランサーの設定を行います。
- 「ロードバランサー名」に任意の名前を入力します。
- 「スキーム」ではインターネット向けを選択します。
- 「ロードバランサーのIPアドレスタイプ」ではIPv4を選択します。
④ネットワークマッピングの設定行います。
- 「VPC」にデフォルトのVPCを選択します。
- 「アベイラビリティゾーン」に、3つのアベイラビリティーゾーンが表示されるため、EC2インスタンスと同じアベイラビリティーゾーンにチェックを入れます。
- 「サブネット」には、アベイラビリティーゾーンを選択した際に表示されるデフォルトのサブネットにします。
※EC2インスタンスが存在するアベイラビリティーゾーンと、ロードバランサーが展開されているアベイラビリティーゾーンが異なる場合、ロードバランサーがEC2に通信できず、トラフィックを処理できなくなります。
⑤リスナーとルーティングの設定を行います。
- 「 リスナーとルーティング」でリスナーにHTTP(ポート80)と HTTPS(ポート443)を追加します。
- それぞれのリスナーに対して、作成済みのターゲットグループを選択します。
⑥リスナーとルーティングでHTTPSを追加すると「セキュアリスナーの設定」画面が表示されます。証明書にACMで発行した証明書を選択します。
⑦「ロードバランサーの作成」をクリックし、作成が完了しました。
9. Route 53で独自ドメインをALBに向ける
①レコード作成を行います。
- AWSマネジメントコンソールで「Route 53」を検索します。
- 左側のメニューからホストゾーンをクリックします。
- 作成したいレコードの対象となるドメインを選択し、「詳細を表示」をクリックします。
②「レコードを作成」からwordpress-albのレコード名、タイプ(A)、値(ALB、ターゲット)をホストゾーンに追加します。
10. Tera Term 5インストール&インスタンスにSSH接続
Tera TermとはtelnetやSSHで接続をするときに使われる「ターミナルエミュレータ」と呼ばれるソフトです。
SSHとはネットワーク経由でほかのコンピュータ(主にサーバー)に接続し、遠隔操作するための仕組みで、通信内容はすべて暗号化されています。
①「Tera Term」 ホームページからTera Term 5をダウンロード&インストールします。
https://teratermproject.github.io
②Tera Term5を起動し、「ホスト」に作成したインスタンスのパブリックDNSを入力します。「サービス」でSSHを選択しOKをクリックします。
③ログインの設定をします。
- 「ユーザ名」にec2-userで入力します。
- 「認証方式」ではRSA/DSA/ECDSA/ED25519鍵を使うを選択し、インスタンス作成時に作成した秘密鍵をファイルから指定し、OKをクリックします。
④SSH接続ができました。