“For å være vertskap for flere nettsteder, konfigurerer administratorer vanligvis virtuell hosting på en enkelt maskin. I virtuell hosting kan vi bruke enten en "IP-basert" hosting eller en "navnbasert.”I“ IP-basert ”hosting har vi distinkte IP-adresser for hvert nettsted. Når det gjelder "navnbasert" hosting, har vi flere navn som kjører på hver IP-adresse.”
Hva vil vi dekke?
I denne guiden vil vi se hvordan vi kan konfigurere virtuelle verter på en Amazon EC2 Ubuntu 22.04 forekomst. I dette laboratoriet vil vi bruke navnbasert virtuell hosting. Vi vil bruke Terraform for å distribuere ønsket infrastruktur.
Oversikt over laboratoriet
I dette laboratoriet vil vi lage to virtuelle verter; domain1 og domain2. Vi installerer en Apache -webserver på Ubuntu -maskinen vår. Hver virtuelle vert har en annen indeks.HTML -fil med innholdet: “Dette er virtuell vert 1.”For Domain1 og“ Dette er virtuell vert 2.”For Domain2.
I stedet for å registrere domenenavnet for hver vert, bruker vi LocalHost IP -adressen for å kartlegge domenenavnene. Dette kan gjøres ved å endre "vertene" -filen. For å forenkle distribusjonen av denne infrastrukturen, har vi delt den generelle konfigurasjonen i flere filer. På denne måten vil vi spare oss fra kodeklatthet. Omriss av filene som brukes her:
Konfigurere oppsettet
Trinn 1. La oss først lage en fungerende katalog som vil beholde alle våre .TF -filer:
$ mkdir demo
Steg 2. Opprett brukerdata.SH -fil:
$ nano userdata.sh
Lim inn følgende linjer inni den:
#!/bin/bash
sudo apt-get oppdatering
sudo apt -get oppgradering -y
sudo apt -get installer apache2 -y
sudo SystemCTL Restart Apache2
sudo sh -c "ekko 127.0.0.1 www.Domain1.com >> /etc /hosts "
sudo sh -c "ekko 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 $ bruker: $ bruker/var/www/domain_1/public_html
sudo chown -r $ bruker: $ bruker/var/www/domain_2/public_html
sudo chmod -r 755 /var /www
sudo ekko “Dette er virtuell vert 1.”>/Var/www/domain_1/public_html/indeks.html
sudo ekko “Dette er virtuell vert 2.”>/Var/www/domain_2/public_html/indeks.html
sudo cp/home/ubuntu/domain_1.Conf/etc/apache2/nettsteder-tilgjengelig/domain_1.konf
sudo cp/home/ubuntu/domain_2.Conf/etc/apache2/nettsteder-tilgjengelig/domain_2.konf
sudo a2ensite domain_1.konf
sudo a2ensite domain_2.konf
sudo a2dissite 000-default.konf
sudo SystemCTL Restart Apache2
I skriptet ovenfor installerte vi en Apache -webserver og endret vertsfilen for å kartlegge localhost -adressen til de to virtuelle vertenes domenenavn vi ønsker å konfigurere. Vi har også konfigurert webserveren for de nye nettstedene og deaktiverte standard.
Trinn 3. Lag SECGRP.TF -fil for å tillate SSH- og HTTP -inntrengningstrafikk hvor som helst og utgående trafikk til hvor som helst.
$ Nano Secgrp.tf
Lim inn følgende linjer inni den:
ressurs "aws_security_group" "demo-sg"
name = "Sec-grpg"
Beskrivelse = "Tillat HTTP og SSH -trafikk via Terraform"
Ingress
fra_port = 80
TO_PORT = 80
protokoll = "TCP"
cidr_blocks = ["0.0.0.0/0 "]
Ingress
fra_port = 22
to_port = 22
protokoll = "TCP"
cidr_blocks = ["0.0.0.0/0 "]
egress
fra_port = 0
to_port = 0
protokoll = "-1"
cidr_blocks = ["0.0.0.0/0 "]
Trinn 4. For virtuell vertskonfigurasjon, lag to filer: domain_1.Conf og Domain_2.konf. Legg merke til dokumentets rotplassering i hver fil.
Jeg. $ nano domain_1.konf
Serveradmin [email protected]
Servernavn Domain1
Serveralias www.Domain1.com
Documentroot/var/www/domain_1/public_html
Errorlog $ apache_log_dir/feil.Logg
Ii. $ nano domain_2.konf
Serveradmin [email protected]
Servernavn domain2
Serveralias www.Domain2.com
Documentroot/var/www/domain_2/public_html
Errorlog $ apache_log_dir/feil.Logg
CustomLog $ apache_log_dir/tilgang.logg kombinert
Trinn 5. Til slutt, lage hoved.TF for å fullføre infrastrukturerklæringen:
$ nano main.tf
leverandør "aws"
Region = "Us-East-1"
ressurs "aws_instance" "webserver"
AMI = "AMI-09D56F8956AB235B3"
instans_type = "T2.mikro "
Key_name = "Name-of-Your-EC2-Key-Pair"
vpc_security_group_ids = [aws_security_group.Demo-SG.id]
Associate_public_ip_address = true
bestemmelse "fil"
kilde = "domain_1.Conf "
destinasjon = "/home/ubuntu/domain_1.Conf "
forbindelse
type = "ssh"
bruker = "ubuntu"
Private_key = "$ File ("/Path/To // EC2-taksypair.pem ")"
vert = "$ selv.public_dns "
bestemmelse "fil"
kilde = "domain_2.Conf "
destinasjon = "/home/ubuntu/domain_2.Conf "
forbindelse
type = "ssh"
bruker = "ubuntu"
Private_key = "$ File ("/Path/To // EC2-taksypair.pem ")"
vert = "$ selv.public_dns "
user_data = "$ fil (" userdata.sh ")"
tags =
Name = "virtualhosts"
output "ipadress"
verdi = "$ aws_instance.Internett server.public_ip "
I det ovennevnte .TF -fil, vi har brukt filbestemmeren til å kopiere “domene.konf”Fil fra vårt lokale system til EC2 -forekomsten. Dette “domene.konf”Vil bli brukt som en malfil for å lage domenespesifikke virtuelle vertsfiler, i.e., “Domain_1.Conf ”og“ Domain_2.Conf ”.
Trinn 6. Alle konfigurasjonsfilene våre er klare nå; Det er nå på tide å faktisk distribuere denne konfigurasjonen. Initialiser prosjektkatalogen ved å bruke:
$ terraform init
Til slutt, bygg prosjektet ved å kjøre kommandoen:
$ Terraform Søk
Skriv inn "ja" på terminalen når du blir spurt. Fra EC2 -forekomsten din, bruk “Curl” -kommandoen for å se hva hvert domeneadresse viser:
Konklusjon
Virtuell hosting er en veldig effektiv teknikk for å administrere flere nettsteder fra en enkelt server. I dette laboratoriet har vi sett hvordan terraform kan brukes til å distribuere en enkel infrastruktur med to vertskaper. Forsøk å gjøre denne konfigurasjonen mer skalerbar ved å implementere Terraform Modules.