Pozdravljeni, moje ime je Mark Poljanšek in na tej spletni strani bom podrobno opisal, kako sem rešil DevOps nalogo. Cilj naloge je bil postaviti Nginx strežnik z uporabo Dockerja na AWS EC2 instanci, pri čemer mora biti strežnik dostopen na portu 80, vse spremembe pa morajo biti trajne tudi po ponovnem zagonu instance. Kot bonus nalogo sem moral poskrbeti, da ima Nginx kontejner nameščen tudi urejevalnik nano.
Posebnost te predstavitve je, da spletno stran, na kateri berete to razlago, gosti prav Nginx strežnik, ki sem ga postavil kot del naloge. Poleg tega sem stran izdelal s pomočjo HTML, CSS in JavaScript, kar omogoča osnovno oblikovanje in interaktivne elemente.
Koraki, ki sem jih izvedel
1. Registracija na AWS in ustvarjanje EC2 instance
Korak 1.1: Ustvaril sem AWS račun
Najprej sem se registriral na platformo AWS in aktiviral brezplačni nivo uporabe (Free Tier), ki omogoča brezplačno ustvarjanje virtualnih strojev (EC2 instanc) za obdobje enega leta.
Korak 1.2: Ustvaril sem EC2 instanco
Po uspešni registraciji sem odprl konzolo AWS in izbral storitev EC2 za ustvarjanje virtualnega strežnika. Izbral sem sliko operacijskega sistema Amazon Linux 2023 AMI in tip instance t2.micro. Nato sem nastavil Security Group, kjer sem odprl dostop za porte 22 (SSH) in 80 (HTTP).
Opomba: Za omogočanje varnih HTTPS povezav sem kasneje moral dodatno odpreti tudi port 443 (HTTPS) v nastavitvah Security Group.
2. Povezava na EC2 instanco prek SSH
S pomočjo .pem ključa, ki sem ga prenesel ob ustvarjanju instance, sem se povezal na instanco prek SSH z naslednjim ukazom:
ssh -i /pot/do/datoteke/naloga.pem ec2-user@IP_NASLOV
3. Namestitev Dockerja in Nginx strežnika
Po prijavi na instanco sem posodobil sistem in namestil Docker, nato pa zagnal Nginx kontejner:
sudo yum update -y
sudo yum install docker -y
sudo systemctl start docker
sudo systemctl enable docker
sudo docker run --name nginx-container -d -p 80:80 nginx
4. Postavitev spletne strani z uporabo HTML, CSS in JavaScript
Korak 4.1: Ustvaril sem spletno stran
Stran vsebuje osnovno HTML strukturo, nekaj stilov za boljšo vizualno podobo in interaktivne elemente za izboljšanje uporabniške izkušnje.
Korak 4.2: Prenos datotek na strežnik
Na instanci sem ustvaril mapo ~/my-website in tja prenesel datoteke index.html, style.css in script.js. Nato sem ponovno zagnal Nginx kontejner z naslednjim ukazom:
sudo docker stop nginx-container
sudo docker rm nginx-container
sudo docker run --name nginx-container -d -p 80:80 --restart always -v ~/my-website:/usr/share/nginx/html nginx
5. Nastavitev trajnosti rešitve
Da bi zagotovil trajnost rešitve tudi po ponovnem zagonu instance, sem uporabil možnost --restart always. Ta možnost poskrbi, da se kontejner vedno samodejno zažene, ko se instanca ponovno zažene.
6. Bonus naloga – Namestitev urejevalnika nano
Za bonus nalogo sem moral v Nginx kontejnerju namestiti urejevalnik nano. To sem izvedel z naslednjimi ukazi:
sudo docker exec -it nginx-container bash
apt update && apt install nano -y
exit
7. Preizkus delovanja
Na koncu sem večkrat ponovno zagnal AWS instanco in preveril, ali je Nginx stran še vedno dostopna prek IP naslova. Vsakič se je kontejner samodejno zažene, spletna stran pa je bila pravilno prikazana, kar potrjuje, da so vse spremembe trajne in naloga uspešno rešena.
Zaključek
Z nalogo sem pridobil veliko praktičnega znanja o uporabi AWS, Dockerja in Nginx strežnika. Posebej ponosen sem na to, da ta spletna stran, ki jo berete, deluje na rešitvi, ki sem jo postavil sam. Uporabil sem HTML, CSS in JavaScript, da sem izdelal stran, ki ne le predstavi rešitev naloge, ampak je tudi vizualno privlačna in interaktivna.
Upam, da sem uspešno predstavil rešitev te naloge. Hvala za vaš čas! 😊