Amazon Web Services (AWS)-ում հավելվածներ ստեղծելու ձեռնարկ
Amazon Web Services-ը (AWS) աշխարհի ամենատարածված ամպային հաշվարկային հարթակներից մեկն է: AWS-ի միջոցով դուք կարող եք ստեղծել և գործարկել հավելվածներ՝ առանց ֆիզիկական սերվերներ գնելու, սերվերային տարածք ստեղծելու կամ ձեր սեփական ենթակառուցվածքը պահպանելու: Այս հոդվածը ձեզ կուղեկցի AWS-ում պարզ հավելված ստեղծելու գործընթացում՝ օգտագործելով ընդհանուր մոտեցում. վեբ հավելվածի տեղակայում՝ օգտագործելով հաշվողական ծառայություններ (EC2), կառավարվող տվյալների բազա (RDS) որպես տարբերակ, և պահեստ և դոմեյն՝ անհրաժեշտության դեպքում: Չնայած հետևյալ օրինակը ընդհանուր է, այն կարող եք կիրառել բազմաթիվ տեսակի հավելվածների համար:
-
1. Սկզբնական նախապատրաստում. Հաշիվներ և հիմնական հասկացություններ
Սկսելուց առաջ համոզվեք, որ ունեք AWS հաշիվ: AWS-ի շատ ծառայություններ առաջարկում են անվճար մակարդակ (անվճար որոշակի սահմաններում), որը կատարյալ է պրակտիկայի համար:
Որոշ կարևոր հասկացություններ, որոնք դուք պետք է հասկանաք.
– Տարածաշրջան՝ AWS տվյալների կենտրոնի տեղակայում (օրինակ՝ Սինգապուր/ap-southeast-1): Ընտրեք ամենամոտ տարածաշրջանը՝ ցածր լատենտության համար:
– IAM (Identity and Access Management). մուտքի կառավարման համակարգ։ Լավագույն պրակտիկա՝ մի օգտագործեք root հաշիվը ամենօրյա աշխատանքի համար։
– VPC (Վիրտուալ մասնավոր ամպ). վիրտուալ ցանց, որտեղ գործում են ձեր ծառայությունները։
– Անվտանգության խումբ. «firewall»՝ սերվերից մուտքային/ելքային մուտքը կարգավորելու համար։
Այս չորս բաները հասկանալով՝ ձեզ համար շատ ավելի հեշտ կլինի AWS-ի հիմունքներում կողմնորոշվելը։
-
2. Ստեղծեք IAM օգտատերեր և անվտանգ հաշիվներ
Անվտանգությունը միշտ մեր առաջնահերթությունն է։ Մուտք գործեք AWS Console որպես 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-ի համար:
բ) Ցանցի և firewall-ի կարգավորում
– Համոզվեք, որ օրինակը գտնվում է լռելյայն VPC-ում (պարզապես պրակտիկայի համար):
- Սահմանել անվտանգության խումբը.
– Միայն 22-րդ միացք (SSH) ձեր IP-ից (օրինակ՝ `Իմ IP-ն`)
– `0.0.0.0/0`-ի 80-րդ միացքը (HTTP) (հանրային)
– 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 դեպի սերվեր (օգտագործեք EC2-ի հանրային IPv4-ը):
«Բաշ
ssh -i aws-key.pem ubuntu@PUBLIC_IP
««
Հաջողության դեպքում դուք գտնվում եք AWS Ubuntu սերվերի վրա։
-
6. Տեղադրեք վեբ սերվերը և ծրագրի աշխատանքային ժամանակը
Ահա Node.js հավելվածի օրինակ, քանի որ այն լայնորեն օգտագործվում է ժամանակակից վեբում։
ա) Կախվածությունների թարմացում և տեղադրում
«Բաշ
sudo apt թարմացում && sudo apt արդիականացում -y
sudo apt install -y curl git
««
բ) Տեղադրեք Node.js-ը (LTS տարբերակ)
«Բաշ
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
sudo apt install -y nodejs
հանգույց -v
npm -v
««
-
7. Ստեղծեք պարզ ծրագիր
Ստեղծեք նախագծի թղթապանակ՝
«Բաշ
mkdir myapp && cd myapp
npm init -y
npm install express
««
Ստեղծեք `index.js` ֆայլ՝
«`js
const express = require("արտահայտել");
const app = express();
app.get("/", (պահանջվող, պատասխան) => {
res.send(“Բարև ձեզ։ Ձեր ծրագիրը աշխատում է AWS EC2-ի վրա։”);
});
app.listen(3000, () => console.log(“Սերվերը աշխատում է 3000 պորտի վրա”));
««
Գործարկեք ծրագիրը՝
«Բաշ
հանգույցի ինդեքս.js
««
Փորձեք մուտք գործել զննարկիչից՝
– `http://PUBLIC_IP:3000`
Սակայն, 3000-րդ միացքը ներկայումս բաց չէ Անվտանգության խմբում: Դուք կարող եք՝
1) բացեք 3000 պորտը Անվտանգության խմբում, կամ
2) օգտագործեք հակադարձ պրոքսի (ավելի խորհուրդ է տրվում), որպեսզի ծրագիրը մնա ներքին միացքի վրա, բայց դրան հասանելի լինի 80/443 միացքի միջոցով։
-
8. Nginx-ի օգտագործումը որպես հակադարձ պրոքսի (մուտք 80-րդ միացքի միջոցով)
Տեղադրեք Nginx:
«Բաշ
sudo apt install -y nginx
sudo systemctl-ը միացնում է nginx-ը
sudo systemctl-ը գործարկում է nginx-ը
««
Nginx-ի կարգավորումների կարգավորումը՝
«Բաշ
sudo nano /etc/nginx/sites-available/myapp
««
Կարգավորման բովանդակությունը՝
«`nginx
սերվերի {
լսեք 80;
սերվերի_անուն _;
գտնվելու վայրը / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Թարմացում $http_upgrade;
proxy_set_header Կապի 'թարմացում';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
««
Միացնել կարգավորումը՝
«Բաշ
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl վերաբեռնել nginx
««
Հիմա մուտք գործեք՝
– `http://PUBLIC_IP/`
Ծրագիրը աշխատում է 3000 պորտով, բայց հանրությունը դրան մուտք է գործում 80 պորտի միջոցով։
-
9. PM2-ով անընդհատ հավելվածներ աշխատեցնելը
SSH-ի անջատման դեպքում ծրագրի խափանումը կանխելու համար օգտագործեք PM2-ը։
«Բաշ
sudo npm install -g pm2
pm2-ի մեկնարկային ինդեքս.js – անուն myapp
pm2-ի պահպանում
pm2 ստարտափ
««
`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-ի վրա։
Հակիրճ՝
«Բաշ
sudo apt install -y certbot python3-certbot-nginx
sudo certbot –nginx
««
Հետևեք օգնականին՝ դոմեյն ընտրելու և HTTPS վերահասցեավորումը միացնելու համար։
-
12. Մոնիթորինգ և ծախսեր
AWS-ը տրամադրում է CloudWatch՝ CPU-ի, ցանցի և որոշակի գրանցամատյանների նման չափանիշներ դիտելու համար: Դուք նաև պետք է վերահսկեք ձեր ծախսերը՝ բաց չթողնելու համար:
Կարևոր խորհուրդներ.
– Միացրեք CloudWatch-ում հաշվառման ազդանշանը (օրինակ՝ ազդանշան, եթե գանձումները գերազանցում են $5-ը):
– Անջատեք օրինակը, երբ այն չի օգտագործվում։
– Հեռացրեք չօգտագործվող ռեսուրսները (բեռնվածության հավասարակշռիչներ, EBS, առաձգական IP-ներ, snapshots), քանի որ դրանք դեռ կարող են ծախսեր առաջացնել։
-
Penutup
Շնորհավորում ենք։ Դուք սովորեցիք EC2-ի միջոցով AWS-ում հավելված կառուցելու, վեբ հավելված աշխատեցնելու, Nginx հակադարձ պրոքսի կարգավորելու և PM2-ով այն միշտ միացված դարձնելու հիմունքները։ Դուք նաև ստացաք լրացուցիչ ծառայությունների ընդհանուր պատկերացում, ինչպիսիք են RDS-ը տվյալների բազաների համար, S3-ը պահեստավորման համար և HTTPS վկայագրերը անվտանգության համար։
Եթե ցանկանում եք բարձրացնել մակարդակը, հաջորդ քայլերը սովորաբար հետևյալն են.
– Ավտոմատացված տեղակայում CI/CD-ի միջոցով (GitHub Actions + SSH կամ AWS CodeDeploy),
– Docker-ի և ECS կամ EKS-ի նման օրկեստրացիաների միջոցով կոնտեյներների օգտագործումը,
– Lambda + API Gateway-ի հետ սերվերազուրկ ճարտարապետության կիրառում։
Եթե ցանկանում եք, խնդրում եմ նշեք ձեր ստեղծած հավելվածի տեսակը (Node.js, Laravel, Django, React և այլն) և դրա նպատակը (ցուցադրական, արտադրական, լայնածավալ): Ես կարող եմ հարմարեցնել ձեռնարկը՝ ավելացնելով ավելի կոնկրետ քայլեր: