「複数のウェブサイトをホストするために、管理者は通常、単一のマシンで仮想ホスティングを構成します。 仮想ホスティングでは、「IPベース」のホスティングまたは「名前ベース」のいずれかを使用できます。 「IPベース」のホスティングでは、ウェブサイトごとに異なるIPアドレスがあります。 「名前ベース」のホスティングの場合、各IPアドレスで複数の名前が実行されています。」
何をカバーしますか?
このガイドでは、Amazon EC2Ubuntu22.04インスタンスで仮想ホストを設定する方法を説明します。 このラボでは、名前ベースの仮想ホスティングを使用します。 Terraformを使用して、必要なインフラストラクチャを展開します。
ラボの概要
このラボでは、2つの仮想ホストを作成します。 domain1およびdomain2。 UbuntuマシンにApacheWebサーバーをインストールします。 各仮想ホストには、「これは仮想ホスト1です」という内容の異なるindex.htmlファイルがあります。 domain1および「これは仮想ホスト2です。」 domain2の場合。
各ホストのドメイン名を登録する代わりに、ローカルホストのIPアドレスを使用してドメイン名をマッピングしています。 これは、「hosts」ファイルを変更することで実行できます。 このインフラストラクチャの展開を簡素化するために、構成全体を複数のファイルに分割しました。 このようにして、コードの不器用さから身を守ることができます。 ここで使用されるファイルの概要:
- userdata.sh:UbuntuインスタンスにApacheWebサーバーをインストールして構成するために必要なスクリプトが含まれています。
- secgrp.tf:インスタンスで使用するセキュリティグループを作成します。 このセキュリティグループは、SSHとHTTPがインスタンスにトラフィックを入力できるようにします。
- domain_2.confおよびdomain_1.conf:仮想ホスト構成が含まれています。
- main.tf:すべての.tfファイルのプライマリ/メインエントリポイント。
セットアップの構成
手順1.最初に、すべての.tfファイルを保持する作業ディレクトリを作成しましょう。
手順2.userdata.shファイルを作成します。
次に、その中に次の行を貼り付けます。
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の入力トラフィックをどこからでも許可し、発信トラフィックをどこからでも許可します。
その中に次の行を貼り付けます。
名前= 「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
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
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を作成して、インフラストラクチャ宣言を完了します。
プロバイダー 「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.