„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:
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.