So einrichten

So einrichten

„Um mehrere Websites zu hosten, konfigurieren Administratoren in der Regel das virtuelle Hosting auf einem einzigen Computer. Beim virtuellen Hosting können wir entweder ein "IP-basiertes" Hosting oder ein "Namensbasierte" verwenden.”In" IP-basierten "Hosting haben wir für jede Website unterschiedliche IP-Adressen. Im Fall von "Namensbasis" -Hosting haben wir mehrere Namen, die auf jeder IP-Adresse ausgeführt werden.”

Was werden wir abdecken??

In diesem Handbuch werden wir sehen, wie wir virtuelle Hosts auf einem Amazon EC2 Ubuntu 22 konfigurieren können.04 Instanz. In diesem Labor werden wir ein Namensbasis Virtual Hosting verwenden. Wir werden Terraform verwenden, um die gewünschte Infrastruktur einzusetzen.

Überblick über das Labor

In diesem Labor werden wir zwei virtuelle Hosts erstellen. Domain1 und Domain2. Wir werden einen Apache -Webserver auf unserem Ubuntu -Computer installieren. Jeder virtuelle Host hat einen anderen Index.HTML -Datei mit dem Inhalt: „Dies ist virtueller Host 1.”Für Domain1 und„ Dies ist virtueller Host 2.”Für Domain2.

Anstatt den Domänennamen für jeden Host zu registrieren, verwenden wir die Lokalhost -IP -Adresse, um die Domainnamen zu kartieren. Dies kann durchgeführt werden, indem die Datei "Hosts" geändert wird. Um die Bereitstellung dieser Infrastruktur zu vereinfachen, haben wir die Gesamtkonfiguration in mehrere Dateien unterteilt. Auf diese Weise retten wir uns vor Code -Unbeholfenheit. Umrisse der hier verwendeten Dateien:

  1. Benutzerdaten.Sch: Enthält das Skript, das für die Installation und Konfiguration des Apache -Webservers auf der Ubuntu -Instanz benötigt wird.
  2. secgrp.tf: Erstellt eine Sicherheitsgruppe, die mit der Instanz verwendet werden soll. Diese Sicherheitsgruppe ermöglicht es SSH und HTTP, den Verkehr in die Instanz einzubeziehen.
  3. Domain_2.Conf und Domain_1.Conf: Enthält virtuelle Hostkonfiguration.
  4. hauptsächlich.tf: Der primäre/Haupteintrittspunkt für alle .TF -Dateien.

Konfigurieren des Setups

Schritt 1. Lassen Sie uns zunächst ein Arbeitsverzeichnis erstellen, das alle unsere behalten wird .TF -Dateien:

$ mkdir Demo

Schritt 2. Erstellen Sie die Benutzerdata.SH -Datei:

$ nano userData.Sch

Fügen Sie nun die folgenden Zeilen hinein ein:

#!/Bin/Bash
sudo apt-Get-Update
sudo apt -Get Upgrade -y
sudo apt -Get installieren apache2 -y
sudo systemctl starten Sie Apache2 neu
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 echo „Dies ist Virtual Host 1.”>/Var/www/domain_1/public_html/index.html
sudo echo „Dies ist Virtual Host 2.”>/Var/www/domain_2/public_html/index.html
sudo cp/home/ubuntu/domain_1.conf/etc/apache2/sites-verfügbare/domain_1.Conf
sudo cp/home/ubuntu/domain_2.conf/etc/apache2/sites-verfügbare/domain_2.Conf
sudo a2ensit domain_1.Conf
sudo a2ensit domain_2.Conf
sudo a2dissit 000-default.Conf
sudo systemctl starten Sie Apache2 neu

Im obigen Skript haben wir einen Apache -Webserver installiert und die Datei des Hosts so geändert, dass die Localhost -Adresse den Domänennamen der beiden virtuellen Hosts zugeordnet ist, die wir konfigurieren möchten. Außerdem haben wir den Webserver für die neuen Websites konfiguriert und die Standardeinstellung deaktiviert.

Schritt 3. Erstellen Sie die SECGRP.TF -Datei, damit SSH und HTTP den Verkehr von überall und ausgehender Verkehr auf überall eindringen lassen können.

$ nano secgrp.tf

Fügen Sie die folgenden Zeilen hinein ein:

Ressource "aws_security_group" "Demo-Sg"
NAME = "SEC-GRPG"
Beschreibung = "HTTP- und SSH -Verkehr über Terraform zulassen"
Eindringung
von_port = 80
to_port = 80
Protocol = "TCP"
cidr_blocks = ["0.0.0.0/0 "]

Eindringung
von_port = 22
to_port = 22
Protocol = "TCP"
cidr_blocks = ["0.0.0.0/0 "]

Ausgang
von_port = 0
to_port = 0
Protocol = "-1"
cidr_blocks = ["0.0.0.0/0 "]

Schritt 4. Für die virtuelle Hostkonfiguration erstellen Sie zwei Dateien: Domain_1.conf und domain_2.Conf. Beachten Sie den Dokument -Stammort in jeder Datei.

ICH. $ nano domain_1.Conf


Serveradmin [email protected]
Serverame Domain1
Serveralias www.Domain1.com
DocumentRoot/var/www/domain_1/public_html
Fehlerlog $ apache_log_dir/fehler.Protokoll

Ii. $ nano domain_2.Conf


Serveradmin [email protected]
Serverame Domain2
Serveralias www.Domain2.com
Documentroot/var/www/domain_2/public_html
Fehlerlog $ apache_log_dir/fehler.Protokoll
CustomLog $ apache_log_dir/Access.log kombiniert

Schritt 5. Schließlich erstellen Sie die Haupt.TF, um die Infrastrukturerklärung abzuschließen:

$ nano main.tf
Anbieter "AWS"
Region = "US-East-1"

Ressource "AWS_Instance" "Webserver"
AMI = "AMI-09D56F8956AB235B3"
Instance_type = "T2.Mikro"
KEY_NAME = "Name von Your-EC2-Key-Pair"
vpc_security_group_ids = [aws_security_group.Demo-Sg.Ausweis]
associate_public_ip_address = true
Provisioner "Datei"
Source = "Domain_1.Conf "
destination = "/home/ubuntu/domain_1.Conf "
Verbindung
type = "ssh"
User = "Ubuntu"
private_key = "$ file ("/path/to // ec2-keypair.pem ")"
Host = "$ self.public_dns "


Provisioner "Datei"
Source = "Domain_2.Conf "
destination = "/home/ubuntu/domain_2.Conf "
Verbindung
type = "ssh"
User = "Ubuntu"
private_key = "$ file ("/path/to // ec2-keypair.pem ")"
Host = "$ self.public_dns "


user_data = "$ file (" userData.Sch")"
Tags =
Name = "virtualHosts"


Ausgabe "iPaddress"
value = "$ aws_instance.Webserver.public_ip "

In obigem .TF -Datei haben wir mit dem Dateiprofisioner das Kopieren der “verwendet“Domain.ConfDatei von unserem lokalen System zur EC2 -Instanz. Das "Domain.Conf”Wird als Vorlagendatei verwendet, um domänenspezifische virtuelle Hostdateien zu erstellen.e., “Domain_1.conf ”und„ Domain_2.conf ”.

Schritt 6. Alle unsere Konfigurationsdateien sind jetzt fertig. Es ist jetzt an der Zeit, diese Konfiguration tatsächlich bereitzustellen. Initialisieren Sie das Projektverzeichnis mit:

$ terraform init

Erstellen Sie das Projekt schließlich, indem Sie den Befehl ausführen:

$ Terraform gelten

Geben Sie auf der Frage "Ja" auf dem Terminal ein. Verwenden Sie aus Ihrer EC2 -Instanz mit dem Befehl „curl“, um zu sehen, was jede Domänenadresse anzeigt:

Abschluss

Virtual Hosting ist eine sehr effiziente Technik zum Verwalten mehrerer Websites von einem einzelnen Server. In diesem Labor haben wir gesehen. Versuchen Sie, diese Konfiguration durch die Implementierung von Terraformmodulen skalierbarer zu gestalten.