[AWS] Bitnami WordPress構築 – AWS設定編

WordPressAWS,Bitnami

AWS ( Amazon Web Services )上で、Bitnami WordPress をインストールする手順。
Amazon Linux に PHP や Apache を自分でインストールした上で、WordPress を設置するより簡単に構築できる。

<AWS 設定編>

EC2 インスタンス作成

  1. EC2 → インスタンスの作成をクリック
    AWS EC2 Instances
    AWS EC2 Create Instances
  2. 手順 1: Amazon マシンイメージ ( AMI )
    「AWS Marketplace」で「Bitnami WordPress」を検索し、「WordPress Certified by Bitnami 〜」を選択
    (名称は変わるかもしれないがとにかく Bitnami の WordPress を選択。 「WordPress Multisite Certified by Bitnami」は、1つの WP 内に複数サイトを作るときに選択する。)
    AWSMarketplaceBitnamiWordpress
    AWSMarketplaceBitnamiWordpress
  3. 「Continue」
    料金一覧が出てくるが、無料枠で使える
     
  4. 手順 2: インスタンスタイプの選択
    t2.micro」を選択
    AWS InstanceType
    AWS InstanceType
  5. 手順 3: インスタンスの詳細の設定
    削除保護の有効化の「誤った削除から保護します」にチェック入れる
    AWS InstanceDetail
    AWS InstanceDetail
  6. 手順 4: ストレージの追加
    必要なければ特に何もしない。「次の手順:〜」クリック
  7. 手順 5: タグの追加
    必要なければ特に何もしない。「次の手順:〜」クリック
  8. 手順 6: セキュリティグループの設定
    新しいセキュリティグループを作成するにチェック(されているはず)
    (必要に応じてセキュリティグループ名を変更)
    AWS Instance Security Group
    AWS Instance Security Group
  9. 手順 7: インスタンス作成の確認
    「起動」 → 「新しいキーペアの作成」を選択、キーペア名を入力 → 「キーペアのダウンロード」(SSH接続で使用)
    キーペアのダウンロードが完了したら、「インスタンスの作成」
    AWS Instance Keypair
    AWS Instance Keypair
    「インスタンスの表示」を押下し、インスタンスの状態が running となれば OK。 これで、パブリック DNS または Public IP で、Wordpress にアクセス可能。

Elastic IP の割り当て

この IP を作成後、前述で作成したインスタンスに紐付ける。

  1. EC2 ダッシュボード(画面左部)から「Elastic IP」選択
  2. 「新しいアドレスの割り当て」選択
  3. 「割り当て」
  4. 取得した IP を選択し「アクション」ボタン → 「アドレスの関連付け」
  5. 前述したインスタンスを選択し、「関連付け」

これで割り当てた IP でアクセス可能。 Elastic IP を作成し、インスタンスに紐づけていない場合、料金が発生する。

Elastic IP は、初めから発行できる IP の上限数が設定されている。(デフォルト上限数:5)
上限数を超えた場合、AWS サポートセンターに上限緩和申請を行い、上限値を引き上げてもらう。

SSL 証明書の取得

https 化するには証明書が必要だが、AWS Certificate Manager ( ACM )が無料で発行し、自動更新もしてくれる。

メールアドレスは、証明書を申請する時点で受信できる必要がある。
例えば、MailGun でメアド作ると Route53 (または何かしらの DNS )に設定するまでメールが使えない。この場合は、先に Route53 に MX レコードなど必要情報を登録しておく。A レコードには、暫定的に ElasticIP を入れるか、先にロードバランサーを作成してから、A レコードのターゲットにロードバランサーを選択する。
  1. ドメイン名で下記いずれかのメールアドレスを作っておく。
    administrator@ドメイン名
    hostmaster@ドメイン名
    postmaster@ドメイン名
    webmaster@ドメイン名
    admin@ドメイン名
  2. サービス → 「Certificate Manager」を選択
    AWS CertificateManager
    AWS CertificateManager
  3. 「証明書のリクエスト」選択
  4. 「パブリック証明書のリクエスト」にチェック、「証明書のリクエスト」
  5. ステップ 1: ドメイン名の追加
    ドメイン名入力、「次へ」
    ( www が必要な場合、「www.ドメイン.com」 も追加する、サブドメイン使う場合は、「*.ドメイン.com」と入力しても OK)
  6. ステップ 2: 検証方法の選択
    E メールの検証を選択
  7. ステップ 3: 確認とリクエスト
    「確認とリクエスト」
  8. ステップ 4: 検証
    Amazon から認証メールが届いたら、メール内のリンク( Amazon Certificate Approvals )にアクセスし、「I Approve」をクリック
Amazon の証明書は、マルチドメイン・サブドメインに対応しており、1つの ACM 証明書に、複数のドメイン名を追加することができる。 (ただし発行済みの証明書に、ドメイン名を追加することはできない。)
デフォルトの制限数は10。 ユーザーガイドには、上限緩和申請で最大100個のドメイン名のリクエストが可能とあるが、実際問い合わせたら「30」と言われた…
Certificate Manager では、初めから発行できる証明書の上限数が設定されていてデフォルト上限数:1,000だったのに、11個目からエラーになって発行できなかった。 上限数を超えた場合、AWS サポートセンターに上限緩和申請を行い、上限値を引き上げてもらう。

ロードバランサの作成

アプリケーションロードバランサーは1つ作成すると、複数のターゲットグループをぶら下げることができる。
すでにロードバランサーが作成されている場合、次の[ターゲットグループ作成]に進む。

  1. 「ロードバランサー」をクリック
  2. 「ロードバランサーの作成」をクリック
  3. アプリケーションロードバランサー( Application Load Balancer )の「作成」
  4. ステップ 1: ロードバランサーの設定
    「名前」を入力
    「スキーム」 : インターネット向け
    「IP アドレスタイプ」 : ipv4
    リスナー : HTTP 80
    「リスナーの追加」 → HTTPS 443 (証明書がない場合、省略。後から追加する)
    アベイラビリティーゾーン : VPC から少なくとも 2 つのアベイラビリティーゾーンを選択
  5. ステップ 2: セキュリティ設定の構成
    前項[ロードバランサーの設定]で HTTP のみの場合、何もしない
    HTTPS を追加している場合、
    説明書タイプ : 「ACMから説明書を選択する」
    証明書の名前 : 3. で取得した証明書を選択
    セキュリティポリシー:デフォルトのまま
  6. ステップ 3: セキュリティグループを設定する
    「既存のセキュリティグループを選択する」 → インスタンス作成時に作成したセキュリティーグループを選択
  7. ステップ4: ルーティングの設定
    ターゲットグループの名前を入力、あとは画像のまま
    AWS Routing
    AWS Routing
  8. ステップ5: ターゲットの登録
    ターゲットグループは、後から「ターゲットグループ」から登録・削除が可能。
    前述で作成したインスタンスを選択 → 「登録済みに追加」
    「次の手順:確認」 → 「作成」
  9. リスナーの追加([ステップ 2: セキュリティ設定]の構成で HTTPS を追加していない場合)
    AWS alb-listeners
    AWS alb-listeners
    画面下部の「リスナー」、「リスナーの追加」 を選択
    プロトコル : ポート : HTTPS 443
    セキュリティポリシー : デフォのまま
    デフォルトの SSL 証明書 : 対象の証明書選択
    画面上部の「保存」
    画面下部の「リスナー」タブ → リスナーID が HTTP:80の行の「ルールの表示/編集」をクリック
    画面上部の「+」 → 「ルールの追加」
    条件の追加:パスが…
    アクションの追加:リダイレクト先…
    「保存」

ターゲットグループ作成

  1. 「ターゲットグループ」 → 「ターゲットグループ作成」
  2. ターゲットグループ名を入力 → 「作成」
  3. 作成したターゲット選択 → 画面下部の「ターゲット」タブ → 「編集」
  4. 対象インスタンス選択 → 「登録済みに追加」 → 「保存」

リスナールールの追加

  1. 「ロードバランサー」
  2. 対象ロードバランサー選択 → 画面下部の「リスナー」タブ → リスナーID が HTTPS:443 の行の「ルールの表示/編集」
  3. 画面上部の「+」 → 「ルールの挿入」
  4. 条件の追加:ホストが… : ドメイン名
  5. アクションの追加:転送先… : 作成したターゲット
    ( www.ドメインとかがある場合)
  6. 「ルールの挿入」
  7. 条件の追加:ホストが… : www.ドメイン名
  8. アクションの追加:転送先… : 作成したターゲット
  9. リスナーID が HTTPS:443 の「証明書の表示/編集」
  10. 画面上部の「+」 → 対象の証明書選択 → 「追加」

Route53 設定(ドメインとロードバランサの紐づけ)

  1. 「Route53」 → 「Hosted zones」
  2. 「Create Hosted Zone」
  3. ドメイン名を入力 → 「Create」
    AWS Route53 Create Hosted Zones
    AWS Route53 Create Hosted Zones
    ホストゾーンを作成すると、「NS」と「SOA」というレコードが作成される
     
  4. 「Create Record Set (レコードセットの作成)」をクリック
    AWS Route53 Record Sets
    AWS Route53 Record Sets
  5. Aレコード作成
    上記「AWS Route53 Record Sets」の画像の、青枠で囲まれた「レコードセットの作成」のところに入力する
    name : 何も入力しない
    Type : A – IP4 address
    Alias : Yes
    Alias Target : ロードバランサーで作成したものを選択
    「Save Record Set (作成)」ボタンをクリック
    www.ドメインがある場合、「Create Record Set (レコードセットの作成)」をクリックし、以下を入力
    name : www
    Type : A – IP4 address
    Alias : Yes
    Alias Target : ロードバランサーで作成したものを選択
    「Save Record Set (作成)」ボタンをクリック

    * ロードバランサーを作成していない、またはロードバランサーにターゲットグループを登録していない場合、「 Alias : No (エイリアス : いいえ) 」にし、「 Value : (値 : ) 」に Elastic IP を入力する

  6. 「NS」の 4 つの値を、ドメインを作ったサイトに登録する
    ドメインを、RegistryDomains.comで作った場合、「My Domains」 から今使うドメインを選択し、ドメイン詳細画面にいく
    Registrydomains.com Domain Manager
    Registrydomains.com Domain Manager
    ドメイン詳細画面から 「DNS Servers」 の 「Edit」 をクリック
    「DNS Server Settings」 で、「Custom DNS」 を選択し、「Server Address」 に、AWS Route53 の 「NS」 タイプの値 4 つを入力し、「Save Changes」をクリック
    * AWS Route53 の 「NS」 タイプの値には末尾に . (ドット)がついているが、RegistryDomains.comへ入力時にはドットは含めない
    Registrydomains DNS Server Settings
    Registrydomains DNS Server Settings
  7. メアドを使う場合、MX レコード登録 (必要があれば、TXT などメアドを取得したサイトにある必要情報を入力し登録する)
    メールアドレスを、Mailgunで作った場合、ドメイン詳細画面の 「DNS Records」 にある値を Route53 にセットする
    Mailgun Sending DNS records
    Mailgun DNS records

Posted by Agopeanuts