Mafunzo kuhusu Kuunda Programu kwenye Huduma za Wavuti za Amazon (AWS)
Huduma za Wavuti za Amazon (AWS) ni mojawapo ya mifumo maarufu zaidi ya kompyuta ya wingu duniani. Ukiwa na AWS, unaweza kujenga na kuendesha programu bila kununua seva halisi, kuanzisha nafasi ya seva, au kudumisha miundombinu yako mwenyewe. Makala haya yatakuelekeza katika kuunda programu rahisi kwenye AWS kwa kutumia mbinu ya kawaida: kupeleka programu ya wavuti kwa kutumia huduma za kompyuta (EC2), hifadhidata inayosimamiwa (RDS) kama chaguo, na hifadhi na kikoa ikihitajika. Ingawa mfano ufuatao ni wa jumla, unaweza kuutumia kwa aina nyingi za programu.
-
1. Maandalizi ya Awali: Akaunti na Dhana za Msingi
Kabla ya kuanza, hakikisha una akaunti ya AWS. Huduma nyingi za AWS hutoa Kiwango cha Bure (bila malipo ndani ya mipaka fulani) ambacho ni bora kwa mazoezi.
Baadhi ya dhana muhimu unazohitaji kuelewa:
– Eneo: Eneo la kituo cha data cha AWS (mfano: Singapore/ap-southeastern-1). Chagua eneo lililo karibu zaidi kwa muda mfupi wa kuchelewa.
– IAM (Utambulisho na Usimamizi wa Ufikiaji): mfumo wa usimamizi wa ufikiaji. Mbinu bora: usitumie akaunti ya msingi kwa kazi za kila siku.
– VPC (Wingu la Kibinafsi Pepe): mtandao pepe ambapo huduma zako zinaendeshwa.
– Kundi la Usalama: "kinga-moto" ili kudhibiti ufikiaji unaoingia/unaotoka kutoka kwa seva.
Kwa kuelewa mambo haya manne, itakuwa rahisi zaidi kwako kupitia misingi ya AWS.
-
2. Unda Watumiaji wa IAM na Uhifadhi Akaunti
Usalama ndio kipaumbele chetu kikuu kila wakati. Ingia kwenye Dashibodi ya AWS kama mzizi, kisha:
1. Fungua huduma ya IAM.
2. Unda Mtumiaji mpya (k.m. `admin-dev`) na uchague Toa ufikiaji wa mtumiaji kwenye Dashibodi ya Usimamizi wa AWS.
3. Ruhusu: kwa mazoezi unaweza kutumia AdministratorAccess (ingawa katika miradi halisi inapaswa kuwa na kikomo zaidi).
4. Washa MFA (Uthibitishaji wa Mambo Mengi) ili kuongeza usalama.
Ukishamaliza, ondoka kutoka kwenye root na uingie kwa kutumia mtumiaji mpya wa IAM.
-
3. Amua Usanifu wa Maombi
Kwa mafunzo haya, tutajenga usanifu rahisi:
– EC2: kuendesha programu za wavuti (k.m. Node.js/Express, Python Flask, au PHP).
– RDS ya hiari: hifadhidata inayosimamiwa ya MySQL/PostgreSQL, ili data ihifadhiwe vizuri.
– S3 (hiari): huhifadhi faili tuli kama vile picha, hati, au nakala rudufu.
– Njia ya 53 (hiari): dhibiti vikoa.
– CloudWatch: ufuatiliaji wa msingi.
Kama unaanza tu, zingatia EC2 ili kuendesha programu zako kwanza.
-
4. Unda Seva ya EC2
a) Unda Mfano
1. Ingia kwenye huduma ya EC2.
2. Bonyeza Anzisha Instance.
3. Chagua Mfumo wa Uendeshaji, kwa mfano Seva ya Ubuntu 22.04 LTS.
4. Chagua aina ya mfano: kwa Kiwango cha Bure tumia `t2.micro` au `t3.micro` (kulingana na upatikanaji).
5. Unda au uchague Jozi ya Funguo (k.m., `aws-key.pem`). Weka faili ya `.pem` salama kwani itatumika kwa SSH.
b) Usanidi wa Mtandao na Ngome
- Hakikisha mfano uko katika VPC chaguo-msingi (kwa ajili ya mazoezi tu).
- Kundi la Usalama la Seti:
– Lango 22 (SSH) kutoka kwa IP yako pekee (km `IP yangu`)
– Lango 80 (HTTP) la `0.0.0.0/0` (umma)
– Lango 443 (HTTPS) kutoka `0.0.0.0/0` ikiwa unatumia SSL baadaye
Kumbuka: Kufungua SSH kwa umma ni hatari. Zuia anwani za IP kila wakati.
Bonyeza Anzisha na subiri mfano uendelee.
-
5. Ingia kwenye Seva kupitia SSH
Kwenye Windows, unaweza kutumia WSL au PuTTY. Kwenye macOS/Linux, unaweza kuifanya moja kwa moja kutoka kwa terminal.
1. Badilisha ufunguo wa ruhusa:
"bash"
chmod 400 aws-key.pem
""
2. SSH kwenye seva (tumia IPv4 ya Umma kutoka EC2):
"bash"
ssh -i aws-key.pem ubuntu@PUBLIC_IP
""
Ukifanikiwa, uko kwenye seva ya AWS Ubuntu.
-
6. Sakinisha Seva ya Wavuti na Muda wa Kuendesha Programu
Hapa kuna mfano wa programu ya Node.js, kwani inatumika sana kwa wavuti ya kisasa.
a) Sasisha na usakinishe utegemezi
"bash"
sasisho la apt apt && sudo apt kuboresha -y
sudo apt kufunga -y curl git
""
b) Sakinisha Node.js (toleo la LTS)
"bash"
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
sudo apt kufunga -y nodejs
node -v
npm -v
""
-
7. Unda Programu Rahisi
Unda folda ya mradi:
"bash"
mkdir myapp && cd myapp
npm init -y
npm install express
""
Unda faili ya `index.js`:
"`js
const express = hitaji ("express");
const app = express();
app.get(“/”, (inahitajika, res) => {
res.send(“Habari! Programu yako inafanya kazi kwenye AWS EC2.”);
});
app.listen(3000, () => console.log(“Seva inayoendesha kwenye lango 3000”);
""
Endesha programu:
"bash"
faharasa ya nodi.js
""
Jaribu kufikia kutoka kwa kivinjari:
– `http://PUBLIC_IP:3000`
Hata hivyo, lango 3000 halijafunguliwa kwa sasa katika Kikundi cha Usalama. Unaweza:
1) mlango wazi 3000 katika Kundi la Usalama, au
2) tumia proksi ya kinyume (inapendekezwa zaidi) ili programu ibaki kwenye mlango wa ndani lakini iweze kufikiwa kupitia mlango 80/443.
-
8. Kutumia Nginx kama Proksi ya Kubadilisha (Ufikiaji kupitia Lango 80)
Sakinisha Nginx:
"bash"
sudo apt kufunga -y nginx
sudo systemctl kuwezesha nginx
sudo systemctl anza nginx
""
Sanidi usanidi wa Nginx:
"bash"
sudo nano /etc/nginx/sites-available/myapp
""
Maudhui ya usanidi:
"`nginx
seva {
kusikiliza 80;
jina_ la seva _;
eneo / {
proksi_pass http://127.0.0.1:3000;
proksi_http_toleo 1.1;
proxy_set_header Boresha $http_upgrade;
Kichwa_cha_seti_ya_proksi 'sasisha' muunganisho;
proxy_set_header Host $host;
kupitisha_kashe_ya_proksi $http_upgrade;
}
}
""
Wezesha usanidi:
"bash"
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl pakia upya nginx
""
Sasa fikia:
– `http://PUBLIC_IP/`
Programu hii inaendeshwa kwenye lango 3000 lakini umma huifikia kupitia lango 80.
-
9. Kuendesha Programu Daima na PM2
Ili kuzuia programu isifanye kazi wakati SSH imekatika, tumia PM2:
"bash"
sudo npm kufunga -g pm2
pm2 start index.js –jina la programu yangu
pm2 hifadhi
kampuni inayoanza pm2
""
Amri ya `pm2 startup` itatoa maelekezo ya ziada. Endesha amri inayoonyeshwa ili programu iendeshe kiotomatiki wakati seva inapowashwa upya.
-
10. (Si lazima) Kuongeza Hifadhidata kwa kutumia RDS
Ikiwa programu yako inahitaji hifadhidata, RDS hurahisisha kwa sababu AWS hudhibiti nakala rudufu, viraka, na upimaji.
Hatua fupi:
1. Fungua huduma ya RDS → Unda hifadhidata.
2. Chagua MySQL au PostgreSQL (Sheria za Kiwango Huria zinapatikana kwenye usanidi fulani).
3. Weka jina la mtumiaji/nenosiri.
4. Hakikisha mfano wa RDS uko katika VPC sawa na EC2.
5. Weka Kikundi cha Usalama cha RDS kikubali miunganisho kutoka kwa Kikundi cha Usalama cha EC2 pekee (sio kutoka kwa umma).
Mara tu hifadhidata itakapokuwa hai, chukua sehemu ya mwisho ya RDS na uunganishe nayo kutoka kwa programu yako kwa kutumia kiendeshi cha hifadhidata.
-
11. (Si lazima) Washa HTTPS ukitumia Cheti cha SSL
Kwa uzalishaji, HTTPS ni lazima. Njia ya kawaida:
– Tumia kikoa (k.m. kutoka Njia ya 53 au msajili mwingine).
- Sakinisha SSL kupitia Let's Encrypt (Certbot) kwenye EC2.
Kwa kifupi:
"bash"
sudo apt kufunga -y certbot python3-certbot-nginx
sudo certbot –nginx
""
Fuata mchawi ili kuchagua kikoa na uwashe uelekezaji wa HTTPS.
-
12. Ufuatiliaji na Gharama
AWS hutoa CloudWatch ili kuona vipimo kama vile CPU, mtandao, na kumbukumbu maalum. Pia utahitaji kufuatilia gharama zako ili kuepuka kukosa.
Vidokezo muhimu:
- Washa Kengele ya Bili katika CloudWatch (k.m. kengele ikiwa gharama zinazidi $5).
- Zima kifaa hicho wakati hakitumiki.
– Ondoa rasilimali ambazo hazijatumika (visawazishi vya mzigo, EBS, IP za elastic, picha za haraka) kwani bado zinaweza kusababisha gharama.
-
Kufunga
Hongera! Umejifunza misingi ya kujenga programu kwenye AWS kwa kutumia EC2, kuendesha programu ya wavuti, kusanidi proksi ya Nginx ya kinyume, na kuifanya iweze kuwashwa kila wakati na PM2. Pia umepata muhtasari wa huduma za ziada kama vile RDS kwa hifadhidata, S3 kwa ajili ya kuhifadhi, na vyeti vya HTTPS kwa ajili ya usalama.
Ukitaka kupanda ngazi, hatua zifuatazo kwa kawaida huwa:
- Utekelezaji otomatiki kwa kutumia CI/CD (Vitendo vya GitHub + SSH, au AWS CodeDeploy),
- Kutumia vyombo vyenye Docker na okestrasheni kama vile ECS au EKS,
- Kutumia usanifu usiotumia seva ukitumia Lambda + API Gateway.
Ukitaka, tafadhali taja aina ya programu unayoijenga (Node.js, Laravel, Django, React, n.k.) na madhumuni yake yaliyokusudiwa (onyesho, uzalishaji, kwa kiwango kikubwa). Ninaweza kubinafsisha mafunzo kwa hatua maalum zaidi.