Hvordan sette opp apache virtuelle verter på Ubuntu EC2 -forekomst ved hjelp av Terraform

Hvordan sette opp apache virtuelle verter på Ubuntu EC2 -forekomst ved hjelp av Terraform

“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:

  1. brukerdata.sh: Inneholder skriptet som trengs for å installere og konfigurere Apache -webserveren på Ubuntu -forekomsten.
  2. SECGRP.tf: Oppretter en sikkerhetsgruppe som skal brukes med forekomsten. Denne sikkerhetsgruppen vil tillate SSH og HTTP å inngå trafikk til forekomsten.
  3. domain_2.Conf og Domain_1.konf: Inneholder virtuell vertskonfigurasjon.
  4. hoved-.tf: Det primære/hovedinngangspunktet for alle .TF -filer.

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.