Ìdánilẹ́kọ́ lórí ṣíṣẹ̀dá àwọn ohun èlò lórí Amazon Web Services (AWS)

Ìdánilẹ́kọ́ lórí Ṣíṣẹ̀dá Àwọn Ohun Èlò lórí Àwọn Iṣẹ́ Wẹ́ẹ̀bù Amazon (AWS)

Amazon Web Services (AWS) jẹ́ ọ̀kan lára ​​àwọn ìpèsè ìṣiṣẹ́ ìkùukùu tó gbajúmọ̀ jùlọ lágbàáyé. Pẹ̀lú AWS, o lè kọ́ àti ṣiṣẹ́ àwọn ìṣiṣẹ́ láìsí ríra àwọn olupin ti ara, ṣíṣètò ààyè olupin, tàbí títọ́jú àwọn ètò ìṣiṣẹ́ tirẹ. Àpilẹ̀kọ yìí yóò tọ́ ọ sọ́nà nípa ṣíṣẹ̀dá ohun èlò tó rọrùn lórí AWS nípa lílo ọ̀nà tó wọ́pọ̀: ṣíṣẹ̀dá ohun èlò wẹ́ẹ̀bù nípa lílo àwọn iṣẹ́ ìṣiṣẹ́ ìṣiṣẹ́ (EC2), ibi ìpamọ́ data tí a ń ṣàkóso (RDS) gẹ́gẹ́ bí àṣàyàn, àti ibi ìpamọ́ àti domain kan tí ó bá pọndandan. Bó tilẹ̀ jẹ́ pé àpẹẹrẹ tó tẹ̀lé yìí jẹ́ gbogbogbòò, o lè lò ó fún ọ̀pọ̀lọpọ̀ irú àwọn ìṣiṣẹ́.

-

1. Ìmúrasílẹ̀ Àkọ́kọ́: Àwọn Àkọọ́lẹ̀ àti Àwọn Ẹ̀kọ́ Pàtàkì

Kí o tó bẹ̀rẹ̀, rí i dájú pé o ní àkọọ́lẹ̀ AWS. Ọ̀pọ̀lọpọ̀ iṣẹ́ AWS ní Ipele Ọ̀fẹ́ (ọ̀fẹ́ láàrín àwọn ààlà kan) tí ó dára fún ìdánrawò.

Àwọn kókó pàtàkì kan tó o ní láti lóye:

– Agbègbè: Ipò ibi tí a ń pè ní AWS data center (àpẹẹrẹ: Singapore/ap-southeast-1). Yan agbègbè tí ó sún mọ́ jùlọ fún ìfàsẹ́yìn díẹ̀.
– IAM (Ìṣàkóso Ìdámọ̀ àti Ìṣàkóso Wíwọlé): ètò ìṣàkóso ìwọlé. Ìlànà tó dára jùlọ: má ṣe lo àkọọ́lẹ̀ gbòǹgbò fún iṣẹ́ ojoojúmọ́.
– VPC (Virtual Private Cloud): nẹ́tíwọ́ọ̀kì foju kan níbi tí àwọn iṣẹ́ rẹ ti ń ṣiṣẹ́.
– Ẹgbẹ́ Ààbò: “Firewall” láti ṣe àkóso wíwọlé tí ń wọlé/tí ń jáde láti ọ̀dọ̀ olupin náà.

Nípa lílóye àwọn nǹkan mẹ́rin wọ̀nyí, yóò rọrùn fún ọ láti lo àwọn ìpìlẹ̀ AWS.

-

2. Ṣẹ̀dá àwọn olùlò IAM àti Ṣàbòbò àwọn àkọọ́lẹ̀

Ààbò ni ohun pàtàkì jùlọ fún wa nígbà gbogbo. Wọlé sí AWS Console gẹ́gẹ́ bí root, lẹ́yìn náà:

1. Ṣí iṣẹ́ IAM.
2. Ṣẹ̀dá Olùlò tuntun kan (fún àpẹẹrẹ `admin-dev`) kí o sì ṣàyẹ̀wò Pèsè àǹfààní sí olùlò láti wọ inú AWS Management Console.
3. Fúnni ní àṣẹ: fún ìdánrawò o le lo AdministratorAccess (bó tilẹ̀ jẹ́ pé nínú àwọn iṣẹ́ gidi ó yẹ kí ó ní ààlà síi).
4. Mu MFA (Ìjẹ́rìísí Onírúurú) ṣiṣẹ́ láti mú ààbò pọ̀ sí i.

Nígbà tí o bá ti ṣe tán, jáde kúrò nínú gbòǹgbò náà kí o sì wọlé nípa lílo olùlò IAM tuntun tí a ṣẹ̀dá.

-

3. Pinnu Eto Ohun elo naa

Fun ikẹkọ yii, a yoo kọ faaji ti o rọrun:

– EC2: nṣiṣẹ awọn ohun elo wẹẹbu (fun apẹẹrẹ Node.js/Express, Python Flask, tabi PHP).
– RDS àṣàyàn: ibi ipamọ data MySQL/PostgreSQL ti a ṣakoso, nitorinaa a tọju data naa ni pipe.
– S3 (àṣàyàn): ó ń tọ́jú àwọn fáìlì àìdúró bíi àwòrán, ìwé, tàbí àwọn àfikún.
– Ipa ọna 53 (aṣayan): ṣakoso awọn ibugbe.
– CloudWatch: ibojuwo ipilẹ.

Tí o bá ṣẹ̀ṣẹ̀ bẹ̀rẹ̀, dojúkọ EC2 láti kọ́kọ́ ṣiṣẹ́ àwọn ohun èlò rẹ.

-

4. Ṣẹ̀dá olupin EC2 kan

a) Ṣẹ̀dá àpẹẹrẹ kan
1. Wọlé sí iṣẹ́ EC2.
2. Tẹ Ifihan Ifilọlẹ.
3. Yan OS, fun apẹẹrẹ Ubuntu Server 22.04 LTS.
4. Yan irú àpẹẹrẹ: fún Ọ̀fẹ́ Tier lo `t2.micro` tàbí `t3.micro` (ó sinmi lórí wíwà).
5. Ṣẹ̀dá tàbí yan Key Pair kan (fún àpẹẹrẹ, `aws-key.pem`). Pa fáìlì `.pem` mọ́ ní ààbò nítorí pé a ó lò ó fún SSH.

b) Iṣeto Nẹtiwọọki ati ogiriina
– Rí i dájú pé àpẹẹrẹ náà wà nínú VPC àìṣeédá (fún ìdánrawò nìkan).
– Ṣeto Ẹgbẹ Aabo:
– Ibudo 22 (SSH) lati IP rẹ nikan (fun apẹẹrẹ `IP mi`)
– Ibudo 80 (HTTP) ti `0.0.0.0/0` (gbogbogbo)
– Ibudo 443 (HTTPS) lati `0.0.0.0/0` ti o ba lo SSL nigbamii

Àkíyèsí: Ṣíṣí SSH sí gbogbo ènìyàn jẹ́ ewu. Máa dín àdírẹ́sì IP kù nígbà gbogbo.

Tẹ Launch ki o si duro de igba ti apẹẹrẹ naa yoo ṣiṣẹ.

-

5. Wọle si olupin nipasẹ SSH

Lórí Windows, o lè lo WSL tàbí PuTTY. Lórí macOS/Linux, o lè ṣe é tààrà láti inú ẹ̀rọ ìbánisọ̀rọ̀ náà.

1. Yi bọtini igbanilaaye pada:
"' bash
chmod 400 aws-key.pem
““
2. SSH sí olupin naa (lo Public IPv4 lati EC2):
"' bash
ssh -i aws-key.pem ubuntu@PUBLIC_IP
““

Tí ó bá ṣe àṣeyọrí, o wà lórí olupin Ubuntu AWS.

-

6. Fi sori ẹrọ olupin wẹẹbu ati akoko ṣiṣe ohun elo

Àpẹẹrẹ kan nìyí fún ohun èlò Node.js, nítorí pé wọ́n ń lò ó fún ìkànnì ayélujára òde òní.

a) Ṣe imudojuiwọn ati fi awọn igbẹkẹle sori ẹrọ
"' bash
imudojuiwọn sudo apt && sudo apt igbesoke -y
sudo apt fi sori ẹrọ -y curl git
““

b) Fi Node.js (ẹ̀yà LTS) sori ẹrọ
"' bash
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
sudo apt fi -y nodejs
ipade -v
npm -v
““

-

7. Ṣẹ̀dá Ohun elo Rọrùn kan

Ṣẹ̀dá fódà iṣẹ́ àgbékalẹ̀ kan:

"' bash
mkdir myapp && cd myapp
npm init -y
npm fi sori ẹrọ kiakia
““

Ṣẹ̀dá fáìlì `index.js` kan:

“`js
const express = nílò(“express”);
const app = kiakia ();

app.get(“/”, (req, res) => {
res.send(“Ẹ n lẹ o! Ohun elo rẹ n ṣiṣẹ lori AWS EC2.”);
});

app.listen(3000, () => console.log(“Server ń ṣiṣẹ́ lórí ibudo 3000”);
““

Ṣiṣẹ́ ohun èlò náà:

"' bash
nọ́mbà index.js
““

Gbiyanju lati wọle si lati ẹrọ aṣawakiri kan:
– `http://PUBLIC_IP:3000`

Sibẹsibẹ, ibudo 3000 ko ṣii ni Ẹgbẹ Aabo lọwọlọwọ. O le:
1) ibudo ṣiṣi 3000 ninu Ẹgbẹ Aabo, tabi
2) lo aṣoju iyipada (a gbani ni imọran diẹ sii) ki ohun elo naa le wa lori ibudo inu ṣugbọn a le wọle si nipasẹ ibudo 80/443.

-

8. Lilo Nginx gege bi Aṣoju Ayipada (Wọle nipasẹ Ibudo 80)

Fi Nginx sori ẹrọ:
"' bash
sudo apt fi sori ẹrọ -y nginx
sudo systemctl enable nginx
sudo systemctl bẹrẹ nginx
““

Ṣeto iṣeto Nginx:
"' bash
sudo nano /etc/nginx/sites-wa/myapp
““

Àkóónú ìṣètò:
“`nginx
olupin {
gbọ 80;
orukọ olupin _;

ipo / {
proxy_pass http://127.0.0.1:3000;
aṣoju_http_version 1.1;
Proxy_set_header Igbesoke $ http_upgrade;
'Ìgbéga' Ìsopọ̀ proxy_set_header;
proxy_set_header Gbalejo $ ogun;
àgbékalẹ̀_àfikún_àfikún $http_upgrade;
}
}
““

Mu iṣeto ṣiṣẹ:
"' bash
sudo ln -s /etc/nginx/sites-wa/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl tun ṣe nginx
““

Wọlé sí i báyìí:
– `http://PUBLIC_IP/`

Ohun èlò náà ń ṣiṣẹ́ lórí ibudo 3000 ṣùgbọ́n gbogbo ènìyàn lè wọlé sí i nípasẹ̀ ibudo 80.

-

9. Ṣiṣe Awọn Ohun elo Nigbagbogbo pẹlu PM2

Láti dènà ohun èlò náà kí ó má ​​baà bàjẹ́ nígbà tí a bá ti ge SSH kúrò, lo PM2:

"' bash
sudo npm fi sori ẹrọ -g pm2
pm2 start index.js –name myapp
fipamọ́ pm2
ibẹrẹ pm2
““

Àṣẹ `pm2 startup` yóò fúnni ní àwọn ìtọ́ni afikún. Ṣíṣẹ́ àṣẹ tí a fi hàn láti jẹ́ kí ohun èlò náà ṣiṣẹ́ láìfọwọ́kàn nígbà tí olupin náà bá tún bẹ̀rẹ̀ iṣẹ́.

-

10. (Àṣàyàn) Ṣíṣe àfikún ibi ìpamọ́ dátà pẹ̀lú RDS

Tí ohun èlò rẹ bá nílò ibi ìkópamọ́ dátà, RDS mú kí ó rọrùn nítorí pé AWS ń ṣàkóso àwọn àfikún, pípèsè, àti fífẹ̀ sí i.

Awọn igbesẹ kukuru:
1. Ṣí iṣẹ́ RDS → Ṣẹ̀dá ibi ìpamọ́ dátà.
2. Yan MySQL tabi PostgreSQL (Awọn ofin Ipele ọfẹ wa lori awọn iṣeto kan).
3. Ṣeto orukọ olumulo/ọrọ igbaniwọle.
4. Rí i dájú pé àpẹẹrẹ RDS wà nínú VPC kan náà gẹ́gẹ́ bí EC2.
5. Ṣeto Ẹgbẹ Aabo RDS lati gba awọn asopọ lati ọdọ Ẹgbẹ Aabo EC2 nikan (kii ṣe lati ọdọ gbogbo eniyan).

Ni kete ti ibi ipamọ data ba wa laaye, gba opin RDS ki o sopọ mọ rẹ lati inu ohun elo rẹ nipa lilo awakọ ibi ipamọ data.

-

11. (Àṣàyàn) Mu HTTPS ṣiṣẹ́ pẹ̀lú Ìwé-ẹ̀rí SSL

Fún ìṣelọ́pọ́, HTTPS jẹ́ dandan. Ọ̀nà tí a sábà máa ń lò:
– Lo domain kan (fun apẹẹrẹ lati Route 53 tabi iforukọsilẹ miiran).
– Fi SSL sori ẹrọ nipasẹ Jẹ ki a fi Encrypt (Certbot) sori EC2.

Ni ṣoki:
"' bash
sudo apt fi sori ẹrọ -y certbot python3-certbot-nginx
sudo certbot –nginx
““

Tẹ̀lé olùṣe náà láti yan agbègbè kan kí o sì mú kí HTTPS darí rẹ̀.

-

12. Àbójútó àti Owó

AWS n pese CloudWatch lati wo awọn iwọn bi CPU, netiwọki, ati awọn akọọlẹ kan pato. O tun fẹ lati ṣe abojuto awọn idiyele rẹ lati yago fun pipadanu.

Awọn imọran pataki:
– Mu Itaniji Isanwo ṣiṣẹ ni CloudWatch (fun apẹẹrẹ itaniji ti awọn idiyele ba kọja $5).
– Pa apẹẹrẹ naa nigbati ko ba si ni lilo.
– Yọ awọn orisun ti a ko lo kuro (awọn ohun elo iwọntunwọnsi fifuye, EBS, awọn IP rirọ, awọn fọto) nitori wọn le tun fa awọn idiyele.

-

Penutup

Oriire! O ti kọ ẹkọ awọn ipilẹ ti kikọ ohun elo kan lori AWS nipa lilo EC2, ṣiṣe ohun elo wẹẹbu kan , ṣiṣeto aṣoju iyipada Nginx, ati ṣiṣe ni ṣiṣe nigbagbogbo pẹlu PM2. O tun ti ni alaye lori awọn iṣẹ afikun bii RDS fun awọn ibi ipamọ data, S3 fun ibi ipamọ, ati awọn iwe-ẹri HTTPS fun aabo.

Ti o ba fẹ lati ni ipele soke, awọn igbesẹ atẹle nigbagbogbo ni:
– Ìmúṣiṣẹ́ aládàáṣe pẹ̀lú CI/CD (GitHub Actions + SSH, tàbí AWS CodeDeploy),
– Lilo awọn apoti pẹlu Docker ati awọn iṣẹ akanṣe bii ECS tabi EKS,
- Lilo faaji ti ko ni olupin pẹlu ẹnu-ọna Lambda + API.

Tí o bá fẹ́, jọ̀wọ́ sọ irú ohun èlò tí o ń kọ́ (Node.js, Laravel, Django, React, àti bẹ́ẹ̀ bẹ́ẹ̀ lọ) àti ète tí a fẹ́ lò ó (àfihàn, ìṣelọ́pọ́, ìwọ̀n ńlá). Mo lè ṣe àtúnṣe ẹ̀kọ́ náà pẹ̀lú àwọn ìgbésẹ̀ pàtó.

Fi ọ̀rọ̀ sílẹ̀