Tutorja dwar il-Ħolqien ta' Applikazzjonijiet fuq Amazon Web Services (AWS)
Amazon Web Services (AWS) hija waħda mill-aktar pjattaformi popolari tal-cloud computing fid-dinja. Bl-AWS, tista' tibni u tħaddem applikazzjonijiet mingħajr ma tixtri servers fiżiċi, twaqqaf spazju għas-server, jew iżżomm l-infrastruttura tiegħek stess. Dan l-artiklu ser jiggwidak fil-ħolqien ta' applikazzjoni sempliċi fuq l-AWS bl-użu ta' approċċ komuni: l-iskjerament ta' applikazzjoni tal-web bl-użu ta' servizzi tal-kompjuter (EC2), database ġestita (RDS) bħala għażla, u ħażna u dominju jekk meħtieġ. Filwaqt li l-eżempju li ġej huwa ġenerali, tista' tapplikah għal ħafna tipi ta' applikazzjonijiet.
-
1. Tħejjija Inizjali: Kontijiet u Kunċetti Bażiċi
Qabel ma tibda, kun żgur li għandek kont tal-AWS. Ħafna servizzi tal-AWS joffru Livell B'Xejn (bla ħlas sa ċerti limiti) li huwa perfett għall-prattika.
Xi kunċetti importanti li trid tifhem:
– Reġjun: Il-post taċ-ċentru tad-dejta tal-AWS (eżempju: Singapor/ap-southeast-1). Agħżel l-eqreb reġjun għal latency baxxa.
– IAM (Identity and Access Management): sistema ta' ġestjoni tal-aċċess. L-aħjar prattika: tużax il-kont tal-għerq għax-xogħol ta' kuljum.
– VPC (Virtual Private Cloud): netwerk virtwali fejn jaħdmu s-servizzi tiegħek.
– Grupp tas-Sigurtà: “firewall” biex jirregola l-aċċess li jkun dieħel/ħiereġ mis-server.
Billi tifhem dawn l-erba' affarijiet, ikun ħafna aktar faċli għalik li tinnaviga l-bażiċi tal-AWS.
-
2. Oħloq Utenti tal-IAM u Żgura l-Kontijiet
Is-sigurtà hija dejjem il-prijorità numru wieħed tagħna. Idħol fil-Konsola tal-AWS bħala root, imbagħad:
1. Iftaħ is-servizz IAM.
2. Oħloq Utent ġdid (eż. `admin-dev`) u agħżel l-għażla Ipprovdi aċċess lill-utent għall-AWS Management Console.
3. Agħti permess: għall-prattika tista' tuża AdministratorAccess (għalkemm fi proġetti reali għandu jkun aktar limitat).
4. Ippermetti l-MFA (Awtentikazzjoni b'ħafna Fatturi) biex iżżid is-sigurtà.
Ladarba tkun lest, oħroġ mir-root u idħol billi tuża l-utent IAM li għadek kif ħloqt.
-
3. Iddetermina l-Arkitettura tal-Applikazzjoni
Għal dan it-tutorja, se nibnu arkitettura sempliċi:
– EC2: tħaddim ta' applikazzjonijiet tal-web (eż. Node.js/Express, Python Flask, jew PHP).
– RDS fakultattiva: database MySQL/PostgreSQL immaniġġjata, sabiex id-dejta tinħażen b'mod pulit.
– S3 (mhux obbligatorju): jaħżen fajls statiċi bħal immaġnijiet, dokumenti, jew backups.
– Rotta 53 (mhux obbligatorja): immaniġġja d-dominji.
– CloudWatch: monitoraġġ bażiku.
Jekk għadek kif bdejt, iffoka fuq l-EC2 biex tħaddem l-applikazzjonijiet tiegħek l-ewwel.
-
4. Oħloq Server EC2
a) Oħloq Istanza
1. Idħol fis-servizz EC2.
2. Ikklikkja Niedi l-Istanza.
3. Agħżel OS, pereżempju Ubuntu Server 22.04 LTS.
4. Agħżel it-tip ta' istanza: għal Free Tier uża `t2.micro` jew `t3.micro` (skont id-disponibbiltà).
5. Oħloq jew agħżel Par ta' Ċwievet (eż., `aws-key.pem`). Żomm il-fajl `.pem` sigur għax se jintuża għall-SSH.
b) Konfigurazzjoni tan-Netwerk u l-Firewall
– Kun żgur li l-istanza tinsab fil-VPC default (biss għall-prattika).
– Issettja l-Grupp tas-Sigurtà:
– Port 22 (SSH) biss mill-IP tiegħek (eż. `L-IP tiegħi`)
– Port 80 (HTTP) ta' `0.0.0.0/0` (pubbliku)
– Port 443 (HTTPS) minn `0.0.0.0/0` jekk aktar tard tuża SSL
Nota: Il-ftuħ tal-SSH għall-pubbliku huwa riskjuż. Dejjem irrestrinġi l-indirizzi IP.
Ikklikkja Tnedija u stenna li l-istanza taħdem.
-
5. Idħol fis-Server permezz ta' SSH
Fuq Windows, tista' tuża WSL jew PuTTY. Fuq macOS/Linux, tista' tagħmel dan direttament mit-terminal.
1. Ibdel iċ-ċavetta tal-permess:
"`bash
chmod 400 aws-key.pem
""
2. SSH mas-server (uża Public IPv4 minn EC2):
"`bash
ssh -i aws-key.pem ubuntu@IP_PUBLIKU
""
Jekk tirnexxi, int fuq is-server tal-AWS Ubuntu.
-
6. Installa s-Server tal-Web u r-Runtime tal-Applikazzjoni
Hawn eżempju għal applikazzjoni Node.js, peress li tintuża ħafna għall-web modern.
a) Aġġorna u installa d-dipendenzi
"`bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git
""
b) Installa Node.js (verżjoni LTS)
"`bash
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash –
sudo apt install -y nodejs
node -v
npm -v
""
-
7. Oħloq Applikazzjoni Sempliċi
Oħloq fowlder tal-proġett:
"`bash
mkdir myapp && cd myapp
npm init -y
npm install express
""
Oħloq fajl `index.js`:
"`js
const express = require("express");
const app = express();
app.get("/", (req, res) => {
res.send("Bongu! L-applikazzjoni tiegħek qed taħdem fuq AWS EC2.");
});
app.listen(3000, () => console.log("Is-server qed jaħdem fuq il-port 3000"));
""
Mexxi l-applikazzjoni:
"`bash
node index.js
""
Ipprova aċċess minn browser:
– `http://PUBLIC_IP:3000`
Madankollu, il-port 3000 bħalissa mhux miftuħ fil-Grupp tas-Sigurtà. Tista':
1) iftaħ il-port 3000 fil-Grupp tas-Sigurtà, jew
2) uża reverse proxy (aktar rakkomandat) sabiex l-applikazzjoni tibqa' fuq il-port intern iżda tkun tista' tiġi aċċessata permezz tal-port 80/443.
-
8. L-Użu ta' Nginx bħala Reverse Proxy (Aċċess permezz tal-Port 80)
Installa Nginx:
"`bash
sudo apt install -y nginx
sudo systemctl jippermettu nginx
sudo systemctl start nginx
""
Issettja l-konfigurazzjoni ta' Nginx:
"`bash
sudo nano /etc/nginx/sites-available/myapp
""
Kontenut tal-konfigurazzjoni:
"`nginx
server {
isma '80;
isem_server _;
post / {
proxy_pass http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header Aġġorna $http_upgrade;
proxy_set_header Konnessjoni 'upgrade';
proxy_set_header Ospitanti $ ospitanti;
proxy_cache_bypass $http_upgrade;
}
}
""
Ippermetti l-konfigurazzjoni:
"`bash
sudo ln -s /etc/nginx/sites-available/myapp /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
""
Issa aċċessa:
– `http://IP_PUBLIKU/`
L-applikazzjoni taħdem fuq il-port 3000 iżda l-pubbliku jaċċessaha permezz tal-port 80.
-
9. Tħaddim ta' Applikazzjonijiet b'mod Persistenti bil-PM2
Biex tevita li l-applikazzjoni tiġġarraf meta l-SSH ikun skonnettjat, uża PM2:
"`bash
sudo npm install -g pm2
pm2 start index.js –isem myapp
pm2 ħlief
istartjar pm2
""
Il-kmand `pm2 startup` se jipprovdi struzzjonijiet addizzjonali. Mexxi l-kmand muri biex l-applikazzjoni taħdem awtomatikament meta s-server jerġa' jibda.
-
10. (Mhux obbligatorju) Żieda ta' Database b'RDS
Jekk l-applikazzjoni tiegħek teħtieġ database, RDS tagħmilha faċli għax AWS timmaniġġja l-backups, il-patching, u l-iskalar.
Passi qosra:
1. Iftaħ is-servizz RDS → Oħloq database.
2. Agħżel MySQL jew PostgreSQL (ir-regoli tal-Free Tier huma disponibbli fuq ċerti konfigurazzjonijiet).
3. Issettja l-isem tal-utent/il-password.
4. Kun żgur li l-istanza RDS tinsab fl-istess VPC bħall-EC2.
5. Issettja l-Grupp tas-Sigurtà RDS biex jaċċetta biss konnessjonijiet mill-Grupp tas-Sigurtà EC2 (mhux mill-pubbliku).
Ladarba d-database tkun attiva, aqbad l-endpoint tal-RDS u qabbad miegħu mill-applikazzjoni tiegħek billi tuża d-drajver tad-database.
-
11. (Mhux obbligatorju) Ippermetti l-HTTPS b'Ċertifikat SSL
Għall-produzzjoni, l-HTTPS huwa obbligatorju. Metodu tipiku:
– Uża dominju (eż. minn Route 53 jew minn reġistratur ieħor).
– Installa SSL permezz ta' Let's Encrypt (Certbot) fuq EC2.
Fil-qosor:
"`bash
sudo apt install -y certbot python3-certbot-nginx
sudo certbot –nginx
""
Segwi l-wizard biex tagħżel dominju u tippermetti r-ridirezzjoni HTTPS.
-
12. Monitoraġġ u Spejjeż
AWS jipprovdi CloudWatch biex tara metriċi bħas-CPU, in-netwerk, u logs speċifiċi. Ikollok bżonn ukoll timmonitorja l-ispejjeż tiegħek biex tevita li titlef xi ħaġa.
Pariri importanti:
– Ippermetti l-Allarm tal-Kontijiet f'CloudWatch (eż. allarm jekk il-ħlasijiet jaqbżu l-$5).
– Itfi l-istanza meta ma tkunx qed tintuża.
– Neħħi r-riżorsi mhux użati (load balancers, EBS, IPs elastiċi, snapshots) għax xorta jistgħu jġarrbu spejjeż.
-
Għeluq
Prosit! Tgħallimt il-bażiċi tal-bini ta' applikazzjoni fuq AWS bl-użu tal-EC2, it-tħaddim ta' applikazzjoni tal-web, it-twaqqif ta' reverse proxy Nginx, u kif tagħmilha dejjem mixgħula bil-PM2. Ksibt ukoll ħarsa ġenerali lejn servizzi addizzjonali bħal RDS għal databases, S3 għall-ħażna, u ċertifikati HTTPS għas-sigurtà.
Jekk trid titla' livell 'il fuq, il-passi li jmiss ġeneralment ikunu:
– Implimentazzjoni awtomatizzata b'CI/CD (GitHub Actions + SSH, jew AWS CodeDeploy),
– L-użu ta' kontejners b'Docker u orkestrazzjonijiet bħal ECS jew EKS,
– L-użu ta' arkitettura mingħajr server b'Lambda + API Gateway.
Jekk tixtieq, jekk jogħġbok speċifika t-tip ta' applikazzjoni li qed tibni (Node.js, Laravel, Django, React, eċċ.) u l-iskop maħsub tagħha (demo, produzzjoni, fuq skala kbira). Nista' nippersonalizza t-tutorja b'passi aktar speċifiċi.