Дастур оид ба эҷоди барномаҳо дар хидматҳои веби Amazon (AWS)
Amazon Web Services (AWS) яке аз маъмултарин платформаҳои ҳисоббарории абрӣ дар ҷаҳон аст. Бо AWS, шумо метавонед барномаҳоро бидуни харидани серверҳои ҷисмонӣ, насб кардани фазои сервер ё нигоҳдории инфрасохтори худ созед ва иҷро кунед. Ин мақола шуморо дар эҷоди як барномаи оддӣ дар AWS бо истифода аз равиши маъмулӣ роҳнамоӣ мекунад: ҷойгиркунии як барномаи веб бо истифода аз хидматҳои ҳисоббарорӣ (EC2), пойгоҳи додаҳои идорашаванда (RDS) ҳамчун имконот ва нигоҳдорӣ ва домен дар ҳолати зарурӣ. Дар ҳоле ки мисоли зерин умумӣ аст, шумо метавонед онро ба бисёр намудҳои барномаҳо татбиқ кунед.
-
1. Омодагии ибтидоӣ: Ҳисобҳо ва мафҳумҳои асосӣ
Пеш аз оғоз, боварӣ ҳосил кунед, ки шумо ҳисоби AWS доред. Бисёре аз хидматҳои AWS сатҳи ройгонро (ройгон дар ҳудуди муайян) пешниҳод мекунанд, ки барои машқ комил аст.
Баъзе мафҳумҳои муҳиме, ки шумо бояд фаҳмед:
– Минтақа: Ҷойгиршавии маркази додаҳои AWS (масалан: Singapore/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. Навъи инстансро интихоб кунед: барои Free Tier аз `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 ба сервер (аз Public IPv4 аз EC2 истифода баред):
"`баш
ssh -i aws-key.pem ubuntu@PUBLIC_IP
""
Агар муваффақ бошед, шумо дар сервери AWS Ubuntu ҳастед.
-
6. Веб-сервер ва барномаи иҷрошавандаро насб кунед
Ин як мисоли барномаи Node.js аст, зеро он барои веби муосир васеъ истифода мешавад.
а) Навсозӣ ва насб кардани вобастагиҳо
"`баш
sudo apt update && sudo apt upgrade -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
-в
мм-ш
""
-
7. Як барномаи оддӣ эҷод кунед
Папкаи лоиҳа эҷод кунед:
"`баш
mkdir myapp && cd myapp
npm init -y
npm насби экспресс
""
Файли `index.js`-ро эҷод кунед:
"`js"
const express = require("express");
const app = express();
app.get("/", (талабот, res) => {
res.send(“Салом! Барномаи шумо дар AWS EC2 кор мекунад.”);
});
app.listen(3000, () => console.log(“Сервер дар порти 3000 кор мекунад”));
""
Барномаро иҷро кунед:
"`баш
index.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 start nginx
""
Танзимоти Nginx-ро танзим кунед:
"`баш
sudo nano /etc/nginx/sites-davas/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 Мизбон $хост;
proxy_cache_bypass $http_upgrade;
}
}
""
Танзимотро фаъол созед:
"`баш
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
""
Акнун дастрасӣ:
– `http://PUBLIC_IP/`
Барнома дар порти 3000 кор мекунад, аммо мардум ба он тавассути порти 80 дастрасӣ пайдо мекунанд.
-
9. Иҷрои пайвастаи барномаҳо бо PM2
Барои пешгирӣ аз вайрон шудани барнома ҳангоми қатъ шудани SSH, аз PM2 истифода баред:
"`баш
sudo npm install -g pm2
pm2 оғози index.js –номи барномаи myapp
захира кардани pm2
оғози pm2
""
Фармони `pm2 startup` дастурҳои иловагӣ медиҳад. Барои он ки барнома ҳангоми аз нав оғоз шудани сервер ба таври худкор кор кунад, фармони намоишшударо иҷро кунед.
-
10. (Ихтиёрӣ) Илова кардани пойгоҳи додаҳо бо RDS
Агар барномаи шумо ба пойгоҳи додаҳо ниёз дошта бошад, RDS онро осон мекунад, зеро AWS нусхаҳои эҳтиётӣ, часбондан ва миқёспазириро идора мекунад.
Қадамҳои кӯтоҳ:
1. Хидмати RDS-ро кушоед → Эҷоди пойгоҳи додаҳо.
2. MySQL ё PostgreSQL-ро интихоб кунед (Қоидаҳои Free Tier дар баъзе конфигуратсияҳо дастрасанд).
3. Номи корбар/паролро муқаррар кунед.
4. Боварӣ ҳосил кунед, ки мисоли RDS дар ҳамон VPC бо EC2 ҷойгир аст.
5. Гурӯҳи амниятии RDS-ро танҳо барои қабули пайвастҳо аз Гурӯҳи амниятии EC2 (на аз омма) танзим кунед.
Пас аз фаъол шудани пойгоҳи додаҳо, нуқтаи ниҳоии RDS-ро гиред ва аз барномаи худ бо истифода аз драйвери пойгоҳи додаҳо ба он пайваст шавед.
-
11. (Ихтиёрӣ) HTTPS-ро бо сертификати SSL фаъол созед
Барои истеҳсолот, HTTPS ҳатмӣ аст. Усули маъмулӣ:
– Доменро истифода баред (масалан, аз Route 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-ҳои эластикӣ, аксҳои фаврӣ) хориҷ кунед, зеро онҳо метавонанд хароҷотро ба бор оранд.
-
Penutup
Табрикот! Шумо асосҳои сохтани барномаро дар AWS бо истифода аз EC2, иҷро кардани барномаи веб , танзим кардани проксии баръакси Nginx ва фаъол кардани он бо PM2-ро омӯхтед. Шумо инчунин шарҳи мухтасари хидматҳои иловагиро ба монанди RDS барои пойгоҳи додаҳо, S3 барои нигоҳдорӣ ва сертификатҳои HTTPS барои амният гирифтед.
Агар шумо хоҳед, ки сатҳи худро баланд бардоред, қадамҳои зерин одатан инҳоянд:
– Ҷойгиркунии автоматӣ бо CI/CD (GitHub Actions + SSH ё AWS CodeDeploy),
– Истифодаи контейнерҳо бо Docker ва оркестратсияҳо ба монанди ECS ё EKS,
– Истифодаи меъмории бесервер бо Lambda + API Gateway.
Агар хоҳед, лутфан намуди барномаеро, ки шумо месозед (Node.js, Laravel, Django, React ва ғайра) ва мақсади онро (демо, истеҳсол, миқёси калон) муайян кунед. Ман метавонам дастурро бо қадамҳои мушаххастар танзим кунам.