もっと詳しく

「複数のウェブサイトをホストするために、管理者は通常、単一のマシンで仮想ホスティングを構成します。 仮想ホスティングでは、「IPベース」のホスティングまたは「名前ベース」のいずれかを使用できます。 「IPベース」のホスティングでは、ウェブサイトごとに異なるIPアドレスがあります。 「名前ベース」のホスティングの場合、各IPアドレスで複数の名前が実行されています。」

何をカバーしますか?

このガイドでは、Amazon EC2Ubuntu22.04インスタンスで仮想ホストを設定する方法を説明します。 このラボでは、名前ベースの仮想ホスティングを使用します。 Terraformを使用して、必要なインフラストラクチャを展開します。

ラボの概要

このラボでは、2つの仮想ホストを作成します。 domain1およびdomain2。 UbuntuマシンにApacheWebサーバーをインストールします。 各仮想ホストには、「これは仮想ホスト1です」という内容の異なるindex.htmlファイルがあります。 domain1および「これは仮想ホスト2です。」 domain2の場合。

各ホストのドメイン名を登録する代わりに、ローカルホストのIPアドレスを使用してドメイン名をマッピングしています。 これは、「hosts」ファイルを変更することで実行できます。 このインフラストラクチャの展開を簡素化するために、構成全体を複数のファイルに分割しました。 このようにして、コードの不器用さから身を守ることができます。 ここで使用されるファイルの概要:

  1. userdata.sh:UbuntuインスタンスにApacheWebサーバーをインストールして構成するために必要なスクリプトが含まれています。
  2. secgrp.tf:インスタンスで使用するセキュリティグループを作成します。 このセキュリティグループは、SSHとHTTPがインスタンスにトラフィックを入力できるようにします。
  3. domain_2.confおよびdomain_1.conf:仮想ホスト構成が含まれています。
  4. main.tf:すべての.tfファイルのプライマリ/メインエントリポイント。

セットアップの構成

手順1.最初に、すべての.tfファイルを保持する作業ディレクトリを作成しましょう。

手順2.userdata.shファイルを作成します。

次に、その中に次の行を貼り付けます。

#!/ bin / bash

sudo apt-get update

sudo apt-get upgrade -y

sudo apt-get install apache2 -y

sudo systemctl restart apache2

sudo sh -c “echo 127.0.0.1 www.domain1.com >> / etc / hosts”

sudo sh -c “echo 127.0.0.1 www.domain2.com >> / etc / hosts”

sudo mkdir -p /var/www/domain_1/public_html

sudo mkdir -p /var/www/domain_2/public_html

sudo chown -R $ USER$ USER /var/www/domain_1/public_html

sudo chown -R $ USER$ USER /var/www/domain_2/public_html

sudo chmod -R 755 /var/www

sudo エコー 「これは仮想ホストです 1。」 >> /var/www/domain_1/public_html/index.html

sudo エコー 「これは仮想ホストです 2。」 >> /var/www/domain_2/public_html/index.html

sudo cp //ubuntu/domain_1.conf //apache2/サイト-利用可能/domain_1.conf

sudo cp //ubuntu/domain_2.conf //apache2/サイト-利用可能/domain_2.conf

sudo a2ensite domain_1.conf

sudo a2ensite domain_2.conf

sudo a2dissite 000-default.conf

sudo systemctl restart apache2

上記のスクリプトでは、Apache Webサーバーをインストールし、ホストのファイルを変更して、ローカルホストアドレスを構成する2つの仮想ホストのドメイン名にマップしました。 また、新しいWebサイト用にWebサーバーを構成し、デフォルトのWebサイトを無効にしました。

手順3.secgrp.tfファイルを作成して、SSHおよびHTTPの入力トラフィックをどこからでも許可し、発信トラフィックをどこからでも許可します。

その中に次の行を貼り付けます。

資源 「aws_security_group」 「demo-sg」 {{

名前= 「sec-grpg」

説明= 「Terraform経由でHTTPおよびSSHトラフィックを許可する」

イングレス {{
from_port = 80
to_port = 80
プロトコル= 「tcp」
cidr_blocks = [“0.0.0.0/0”]
}

イングレス {{
from_port = 22
to_port = 22
プロトコル= 「tcp」
cidr_blocks = [“0.0.0.0/0”]
}

出口 {{
from_port = 0
to_port = 0
プロトコル= 「-1」
cidr_blocks = [“0.0.0.0/0”]
}
}

ステップ4.仮想ホスト構成の場合、domain_1.confとdomain_2.confの2つのファイルを作成します。 各ファイルのドキュメントルートの場所に注意してください。

I. $ nano domain_1.conf

<VirtualHost *80>>

ServerAdmin管理者@domain1.com
ServerName domain1
ServerAlias www.domain1.com
DocumentRoot /var/www/domain_1/public_html

エラーログ $ {APACHE_LOG_DIR}/エラーログ

VirtualHost>>

II。 $ nano domain_2.conf

<VirtualHost *80>>

ServerAdmin管理者@domain2.com
ServerName domain2
ServerAlias www.domain2.com
DocumentRoot /var/www/domain_2/public_html

エラーログ $ {APACHE_LOG_DIR}/エラーログ
CustomLog $ {APACHE_LOG_DIR}/access.logの組み合わせ

VirtualHost>>

ステップ5.最後に、main.tfを作成して、インフラストラクチャ宣言を完了します。

$ ナノ main.tf

プロバイダー 「aws」 {{
地域=「us-east-1」
}

資源 「aws_instance」 「ウェブサーバー」 {{
ami =「ami-09d56f8956ab235b3」
instance_type = 「t2.micro」
key_name = 「Name-of-your-Ec2-Key-pair」
vpc_security_group_ids = [aws_security_group.demo-sg.id]
associate_public_ip_address = 真実

プロビジョナー “ファイル” {{
ソース = 「domain_1.conf」
宛先= 「/home/ubuntu/domain_1.conf」

繋がり {{
タイプ = 「ssh」
ユーザー= 「ubuntu」
private_key = 「」$ {file( “/ Path / to // EC2-keyPair.pem”)}「」
ホスト= 「」$ {self.public_dns}「」
}
}

プロビジョナー “ファイル” {{
ソース = 「domain_2.conf」
宛先= 「/home/ubuntu/domain_2.conf」

繋がり {{
タイプ = 「ssh」
ユーザー= 「ubuntu」
private_key = 「」$ {file( “/ Path / to // EC2-keyPair.pem”)}「」
ホスト= 「」$ {self.public_dns}「」
}
}

user_data = 「」$ {file( “userdata.sh”)}「」

タグ= {{
名前= 「VirtualHosts」
}
}

出力 “IPアドレス” {{
値= 「」$ {aws_instance.webserver.public_ip}「」
}

上記の.tfファイルでは、ファイルプロビジョナーを使用して「domain.conf」ファイルをローカルシステムからEC2インスタンスに送信します。 これ “domain.conf」は、ドメイン固有の仮想ホストファイルを作成するためのテンプレートファイルとして使用されます。 「domain_1.conf」と「domain_2.conf」。

ステップ6.これですべての構成ファイルの準備が整いました。 次に、この構成を実際に展開します。 以下を使用してプロジェクトディレクトリを初期化します。

最後に、次のコマンドを実行してプロジェクトをビルドします。

求められたら、端末に「はい」と入力します。 EC2インスタンスから、「curl」コマンドを使用して、各ドメインアドレスが何を表示しているかを確認します。

結論

仮想ホスティングは、単一のサーバーから複数のWebサイトを管理するための非常に効率的な手法です。 このラボでは、Terraformを使用して単純な2ホストインフラストラクチャを展開する方法を確認しました。 Terraformモジュールを実装して、この構成をよりスケーラブルにするようにしてください。

The post Terraformを使用してUbuntuEC2インスタンスにApache仮想ホストを設定する方法 appeared first on Gamingsym Japan.