Водич за креирање апликација на Amazon Web Services (AWS)
Amazon Web Services (AWS) је једна од најпопуларнијих светских платформи за cloud computing. Са AWS-ом можете да креирате и покрећете апликације без куповине физичких сервера, подешавања серверског простора или одржавања сопствене инфраструктуре. Овај чланак ће вас провести кроз креирање једноставне апликације на AWS-у користећи уобичајени приступ: имплементација веб апликације помоћу рачунарских сервиса (EC2), управљане базе података (RDS) као опције, и складишта и домена ако је потребно. Иако је следећи пример општи, можете га применити на многе врсте апликација.
-
1. Почетна припрема: Рачуни и основни концепти
Пре него што почнете, уверите се да имате AWS налог. Многе AWS услуге нуде бесплатни ниво (бесплатно у одређеним границама) који је савршен за вежбање.
Неки важни концепти које треба да разумете:
– Регион: Локација AWS дата центра (пример: Сингапур/ap-southeast-1). Изаберите најближи регион за малу латенцију.
– IAM (Управљање идентитетом и приступом): систем за управљање приступом. Најбоља пракса: немојте користити root налог за свакодневни рад.
– VPC (Виртуелни приватни облак): виртуелна мрежа у којој се покрећу ваши сервиси.
– Безбедносна група: „заштитни зид“ за регулисање долазног/одлазног приступа са сервера.
Разумевањем ове четири ствари, биће вам много лакше да се снађете у основама AWS-а.
-
2. Креирајте IAM кориснике и обезбедите налоге
Безбедност нам је увек главни приоритет. Пријавите се на AWS конзолу као root, а затим:
1. Отворите IAM услугу.
2. Направите новог корисника (нпр. `admin-dev`) и означите поље за потврду „Омогући кориснику приступ AWS конзоли за управљање“.
3. Доделите дозволу: за вежбање можете користити AdministratorAccess (мада би у стварним пројектима требало да буде ограниченији).
4. Омогућите MFA (вишефакторску аутентификацију) да бисте повећали безбедност.
Када завршите, одјавите се из root налога и пријавите се користећи новокреираног IAM корисника.
-
3. Одређивање архитектуре апликације
За овај туторијал, направићемо једноставну архитектуру:
– EC2: покретање веб апликација (нпр. Node.js/Express, Python Flask или PHP).
– Опциони RDS: управљана MySQL/PostgreSQL база података, тако да се подаци уредно чувају.
– S3 (опционо): чува статичке датотеке као што су слике, документи или резервне копије.
– Рута 53 (опционо): управљање доменима.
– CloudWatch: основно праћење.
Ако тек почињете, фокусирајте се на EC2 да бисте прво покренули своје апликације.
-
4. Направите EC2 сервер
а) Креирајте инстанцу
1. Пријавите се на EC2 сервис.
2. Кликните на Покрени инстанцу.
3. Изаберите ОС, на пример Ubuntu Server 22.04 LTS.
4. Изаберите тип инстанце: за бесплатни ниво користите `t2.micro` или `t3.micro` (у зависности од доступности).
5. Направите или изаберите пар кључева (нпр. `aws-key.pem`). Чувајте датотеку `.pem` на сигурном месту јер ће се користити за SSH.
б) Конфигурација мреже и заштитног зида
– Уверите се да је инстанца у подразумеваном VPC-у (само за вежбу).
– Подесите безбедносну групу:
– Порт 22 (SSH) само са ваше IP адресе (нпр. `Моја IP адреса`)
– Порт 80 (HTTP) од `0.0.0.0/0` (јавни)
– Порт 443 (HTTPS) од `0.0.0.0/0` ако касније користите SSL
Напомена: Отварање SSH-а за јавност је ризично. Увек ограничите IP адресе.
Кликните на Покрени и сачекајте да се инстанца покрене.
-
5. Пријавите се на сервер путем SSH-а
На Windows-у можете користити WSL или PuTTY. На macOS/Linux-у то можете урадити директно из терминала.
1. Промена кључа за дозволе:
„`басх
chmod 400 aws-key.pem
„`
2. SSH до сервера (користите јавни IPv4 из EC2):
„`басх
ssh -i aws-key.pem ubuntu@ЈАВНА_ИП АДРЕСА
„`
Ако је успешно, налазите се на AWS Ubuntu серверу.
-
6. Инсталирајте веб сервер и извршно окружење апликације
Ево примера за Node.js апликацију, јер се широко користи за модерни веб.
а) Ажурирајте и инсталирајте зависности
„`басх
судо апт упдате && судо апт надоградња -и
судо апт инсталл -и цурл гит
„`
б) Инсталирајте Node.js (LTS верзија)
„`басх
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
судо апт инсталл -и нодејс
чвор -в
нпм -в
„`
-
7. Направите једноставну апликацију
Направите фасциклу пројекта:
„`басх
mkdir myapp && cd myapp
нпм инит -и
нпм инсталл екпресс
„`
Направите датотеку `index.js`:
„`js
const express = require(“express”);
цонст апп = екпресс();
апликација.гет(“/”, (захтев, рес) => {
res.send(„Здраво! Ваша апликација ради на AWS EC2.“);
});
app.listen(3000, () => console.log(„Сервер ради на порту 3000“));
„`
Покрените апликацију:
„`басх
индекс чвора.јс
„`
Покушајте да приступите из прегледача:
– `http://PUBLIC_IP:3000`
Међутим, порт 3000 тренутно није отворен у Безбедносној групи. Можете:
1) отворите порт 3000 у Безбедносној групи, или
2) користите обрнути прокси (препоручује се више) тако да апликација остане на интерном порту, али да јој се може приступити преко порта 80/443.
-
8. Коришћење Nginx-а као обрнутог проксија (приступ преко порта 80)
Инсталирајте Нгинк:
„`басх
sudo apt install -y nginx
судо системцтл омогућити нгинк
судо системцтл старт нгинк
„`
Подесите Nginx конфигурацију:
„`басх
судо нано /етц/нгинкс/сајтови-авајл/миапп
„`
Садржај конфигурације:
„`нгинк
сервер {
слушај КСНУМКС;
сервер_наме _;
локација /
проки_пасс хттп://127.0.0.1:3000;
проки_хттп_версион 1.1;
проки_сет_хеадер Надоградња $хттп_упграде;
проки_сет_хеадер 'надоградња' везе;
проки_сет_хеадер Хост $ хост;
проки_цацхе_бипасс $хттп_упграде;
}
}
„`
Омогући конфигурацију:
„`басх
судо лн -с /етц/нгинкс/сајтови-авајл/миапп /етц/нгинкс/сајтови-енаблед/
судо нгинк -т
судо системцтл поново учитај нгинк
„`
Сада приступ:
– `http://PUBLIC_IP/`
Апликација ради на порту 3000, али јој јавност приступа преко порта 80.
-
9. Континуирано покретање апликација помоћу PM2
Да бисте спречили пад апликације када је SSH искључен, користите PM2:
„`басх
судо нпм инсталл -г пм2
pm2 start index.js –име моје апликације
пм2 саве
пм2 покретање
„`
Команда `pm2 startup` ће пружити додатна упутства. Покрените приказану команду да би се апликација аутоматски покренула када се сервер поново покрене.
-
10. (Опционо) Додавање базе података помоћу RDS-а
Ако ваша апликација захтева базу података, RDS то олакшава јер AWS управља резервним копијама, закрпама и скалирањем.
Кратки кораци:
1. Отворите RDS сервис → Креирај базу података.
2. Изаберите MySQL или PostgreSQL (правила бесплатног нивоа су доступна на одређеним конфигурацијама).
3. Подесите корисничко име/лозинку.
4. Уверите се да је RDS инстанца у истом VPC-у као и EC2.
5. Подесите RDS безбедносну групу да прихвата само везе из EC2 безбедносне групе (не од јавности).
Када је база података активна, преузмите RDS крајњу тачку и повежите се са њом из ваше апликације користећи драјвер базе података.
-
11. (Опционо) Омогућите HTTPS са SSL сертификатом
За продукцију, HTTPS је обавезан. Типичан метод:
– Користите домен (нпр. од Руте 53 или другог регистрара).
– Инсталирајте SSL путем Let's Encrypt (Certbot) на EC2.
Укратко:
„`басх
судо апт инсталл -и цертбот пајтон3-цертбот-нгинкс
судо цертбот –нгинк
„`
Пратите чаробњака да бисте изабрали домен и омогућили HTTPS преусмеравање.
-
12. Праћење и трошкови
AWS пружа CloudWatch за преглед метрика као што су процесор, мрежа и одређени логови. Такође ћете желети да пратите своје трошкове како бисте избегли губитак.
Важни савети:
– Омогућите аларм за наплату у CloudWatch-у (нпр. аларм ако наплате пређу 5 долара).
– Искључите инстанцу када је не користите.
– Уклоните неискоришћене ресурсе (балансере оптерећења, EBS, еластичне IP адресе, снимке) јер они и даље могу стварати трошкове.
-
Пенутуп
Честитамо! Научили сте основе креирања апликације на AWS-у користећи EC2, покретања веб апликације , подешавања Nginx обрнутог проксија и његовог сталног укључивања помоћу PM2. Такође сте стекли преглед додатних сервиса као што су RDS за базе података, S3 за складиштење и HTTPS сертификати за безбедност.
Ако желите да подигнете ниво, следећи кораци су обично:
– Аутоматизовано распоређивање са CI/CD (GitHub Actions + SSH или AWS CodeDeploy),
– Коришћење контејнера са Докером и оркестрацијама попут ECS-а или EKS-а,
– Коришћење серверлесс архитектуре са Ламбда + API Gateway.
Ако желите, наведите тип апликације коју правите (Node.js, Laravel, Django, React, итд.) и њену намену (демо, продукцијска, велика). Могу прилагодити туторијал са прецизнијим корацима.