એમેઝોન વેબ સર્વિસીસ (AWS) પર એપ્લિકેશન બનાવવાનું ટ્યુટોરીયલ
એમેઝોન વેબ સર્વિસીસ (AWS) એ વિશ્વના સૌથી લોકપ્રિય ક્લાઉડ કમ્પ્યુટિંગ પ્લેટફોર્મ પૈકીનું એક છે. AWS સાથે, તમે ભૌતિક સર્વર્સ ખરીદ્યા વિના, સર્વર સ્પેસ સેટ કર્યા વિના અથવા તમારા પોતાના ઇન્ફ્રાસ્ટ્રક્ચરને જાળવી રાખ્યા વિના એપ્લિકેશનો બનાવી અને ચલાવી શકો છો. આ લેખ તમને AWS પર એક સામાન્ય અભિગમનો ઉપયોગ કરીને એક સરળ એપ્લિકેશન બનાવવા તરફ દોરી જશે: કમ્પ્યુટ સર્વિસીસ (EC2), મેનેજ્ડ ડેટાબેઝ (RDS) નો ઉપયોગ કરીને વેબ એપ્લિકેશનનો ઉપયોગ કરવો, જો જરૂરી હોય તો સ્ટોરેજ અને ડોમેન. જ્યારે નીચેનું ઉદાહરણ સામાન્ય છે, તમે તેને ઘણા પ્રકારની એપ્લિકેશનો પર લાગુ કરી શકો છો.
-
૧. પ્રારંભિક તૈયારી: હિસાબો અને મૂળભૂત ખ્યાલો
શરૂ કરતા પહેલા, ખાતરી કરો કે તમારી પાસે AWS એકાઉન્ટ છે. ઘણી AWS સેવાઓ ફ્રી ટાયર (ચોક્કસ મર્યાદામાં મફત) ઓફર કરે છે જે પ્રેક્ટિસ માટે યોગ્ય છે.
કેટલાક મહત્વપૂર્ણ ખ્યાલો જે તમારે સમજવાની જરૂર છે:
– પ્રદેશ: AWS ડેટા સેન્ટર સ્થાન (ઉદાહરણ: સિંગાપોર/ap-southeast-1). ઓછી લેટન્સી માટે સૌથી નજીકનો પ્રદેશ પસંદ કરો.
– IAM (ઓળખ અને ઍક્સેસ મેનેજમેન્ટ): એક ઍક્સેસ મેનેજમેન્ટ સિસ્ટમ. શ્રેષ્ઠ પ્રથા: રોજિંદા કામ માટે રૂટ એકાઉન્ટનો ઉપયોગ કરશો નહીં.
– VPC (વર્ચ્યુઅલ પ્રાઇવેટ ક્લાઉડ): એક વર્ચ્યુઅલ નેટવર્ક જ્યાં તમારી સેવાઓ ચાલે છે.
- સુરક્ષા જૂથ: સર્વરમાંથી ઇનકમિંગ/આઉટગોઇંગ એક્સેસને નિયંત્રિત કરવા માટે "ફાયરવોલ".
આ ચાર બાબતોને સમજીને, તમારા માટે AWS ની મૂળભૂત બાબતોને નેવિગેટ કરવાનું ખૂબ સરળ બનશે.
-
2. IAM વપરાશકર્તાઓ અને સુરક્ષિત એકાઉન્ટ્સ બનાવો
સુરક્ષા હંમેશા અમારી પ્રથમ પ્રાથમિકતા છે. AWS કન્સોલ પર રૂટ તરીકે લોગ ઇન કરો, પછી:
1. IAM સેવા ખોલો.
2. એક નવો વપરાશકર્તા બનાવો (દા.ત. `admin-dev`) અને AWS મેનેજમેન્ટ કન્સોલ પર વપરાશકર્તા ઍક્સેસ પ્રદાન કરો ચેક કરો.
૩. પરવાનગી આપો: પ્રેક્ટિસ માટે તમે AdministratorAccess નો ઉપયોગ કરી શકો છો (જોકે વાસ્તવિક પ્રોજેક્ટ્સમાં તે વધુ મર્યાદિત હોવું જોઈએ).
4. સુરક્ષા વધારવા માટે MFA (મલ્ટિ-ફેક્ટર ઓથેન્ટિકેશન) સક્ષમ કરો.
એકવાર થઈ ગયા પછી, રૂટમાંથી લોગ આઉટ કરો અને નવા બનાવેલા IAM વપરાશકર્તાનો ઉપયોગ કરીને લોગ ઇન કરો.
-
3. એપ્લિકેશન આર્કિટેક્ચર નક્કી કરો
આ ટ્યુટોરીયલ માટે, આપણે એક સરળ આર્કિટેક્ચર બનાવીશું:
– EC2 : વેબ એપ્લિકેશનો ચલાવવી (દા.ત. Node.js/Express, Python Flask, અથવા PHP).
- વૈકલ્પિક RDS: મેનેજ્ડ MySQL/PostgreSQL ડેટાબેઝ, જેથી ડેટા સરસ રીતે સંગ્રહિત થાય.
– S3 (વૈકલ્પિક): છબીઓ, દસ્તાવેજો અથવા બેકઅપ જેવી સ્થિર ફાઇલો સંગ્રહિત કરે છે.
– રૂટ 53 (વૈકલ્પિક): ડોમેન્સ મેનેજ કરો.
- ક્લાઉડવોચ: મૂળભૂત દેખરેખ.
જો તમે હમણાં જ શરૂઆત કરી રહ્યા છો, તો પહેલા તમારી એપ્લિકેશનો ચલાવવા માટે EC2 પર ધ્યાન કેન્દ્રિત કરો.
-
4. EC2 સર્વર બનાવો
a) એક ઉદાહરણ બનાવો
1. EC2 સેવામાં લોગ ઇન કરો.
2. લોન્ચ ઇન્સ્ટન્સ પર ક્લિક કરો.
3. OS પસંદ કરો, ઉદાહરણ તરીકે Ubuntu Server 22.04 LTS.
4. ઇન્સ્ટન્સ પ્રકાર પસંદ કરો: ફ્રી ટાયર માટે `t2.micro` અથવા `t3.micro` (ઉપલબ્ધતાને આધીન) નો ઉપયોગ કરો.
૫. કી જોડી બનાવો અથવા પસંદ કરો (દા.ત., `aws-key.pem`). `.pem` ફાઇલને સુરક્ષિત રાખો કારણ કે તેનો ઉપયોગ SSH માટે થશે.
b) નેટવર્ક અને ફાયરવોલ રૂપરેખાંકન
– ખાતરી કરો કે દાખલો ડિફોલ્ટ VPC માં છે (ફક્ત પ્રેક્ટિસ માટે).
- સુરક્ષા જૂથ સેટ કરો:
- ફક્ત તમારા IP માંથી પોર્ટ 22 (SSH) (દા.ત. `My IP`)
- `0.0.0.0/0` (જાહેર) નું પોર્ટ 80 (HTTP)
- જો પછીથી SSL નો ઉપયોગ કરવામાં આવે તો `0.0.0.0/0` થી પોર્ટ 443 (HTTPS)
નોંધ: SSH ને જાહેર જનતા માટે ખોલવું જોખમી છે. હંમેશા IP સરનામાંઓને પ્રતિબંધિત કરો.
લોન્ચ પર ક્લિક કરો અને ઇન્સ્ટન્સ ચાલે ત્યાં સુધી રાહ જુઓ.
-
5. SSH દ્વારા સર્વર પર લોગિન કરો
વિન્ડોઝ પર, તમે WSL અથવા PuTTY નો ઉપયોગ કરી શકો છો. macOS/Linux પર, તમે તે સીધા ટર્મિનલથી કરી શકો છો.
1. પરવાનગી કી બદલો:
"'બાશ
chmod 400 aws-key.pem
"`
2. સર્વર પર SSH (EC2 માંથી પબ્લિક IPv4 નો ઉપયોગ કરો):
"'બાશ
ssh -i aws-key.pem ubuntu@PUBLIC_IP
"`
જો સફળ થાઓ, તો તમે AWS ઉબુન્ટુ સર્વર પર છો.
-
6. વેબ સર્વર અને એપ્લિકેશન રનટાઇમ ઇન્સ્ટોલ કરો
અહીં Node.js એપ્લિકેશનનું ઉદાહરણ છે, કારણ કે તે આધુનિક વેબ માટે વ્યાપકપણે ઉપયોગમાં લેવાય છે.
a) ડિપેન્ડન્સી અપડેટ અને ઇન્સ્ટોલ કરો
"'બાશ
સુડો એપિટ અપડેટ && સુડો એપિટ અપગ્રેડ -y
sudo apt install -y curl git
"`
b) Node.js (LTS વર્ઝન) ઇન્સ્ટોલ કરો
"'બાશ
કર્લ -fsSL https://deb.nodesource.com/setup_lts.x | સુડો -E બેશ -
sudo apt ઇન્સ્ટોલ -y નોડજેએસ
નોડ-વી
એનપીએમપી-વી
"`
-
7. એક સરળ એપ્લિકેશન બનાવો
પ્રોજેક્ટ ફોલ્ડર બનાવો:
"'બાશ
mkdir myapp && cd myapp
npm init -y
npm ઇન્સ્ટોલ એક્સપ્રેસ
"`
`index.js` ફાઇલ બનાવો:
"`જેએસ
કોન્સ્ટ એક્સપ્રેસ = જરૂર("એક્સપ્રેસ");
const app = express();
app.get(“/”, (req, res) => {
res.send(“નમસ્તે! તમારી એપ્લિકેશન AWS EC2 પર ચાલી રહી છે.”);
});
app.listen(3000, () => console.log("સર્વર પોર્ટ 3000 પર ચાલી રહ્યું છે"));
"`
એપ્લિકેશન ચલાવો:
"'બાશ
નોડ ઇન્ડેક્સ.જેએસ
"`
બ્રાઉઝરથી ઍક્સેસ કરવાનો પ્રયાસ કરો:
– `http://PUBLIC_IP:3000`
જોકે, સુરક્ષા જૂથમાં પોર્ટ 3000 હાલમાં ખુલ્લું નથી. તમે આ કરી શકો છો:
૧) સુરક્ષા જૂથમાં પોર્ટ ૩૦૦૦ ખોલો, અથવા
૨) રિવર્સ પ્રોક્સીનો ઉપયોગ કરો (વધુ ભલામણ કરેલ) જેથી એપ્લિકેશન આંતરિક પોર્ટ પર રહે પરંતુ પોર્ટ ૮૦/૪૪૩ દ્વારા એક્સેસ કરી શકાય.
-
8. Nginx નો રિવર્સ પ્રોક્સી તરીકે ઉપયોગ (પોર્ટ 80 દ્વારા ઍક્સેસ)
Nginx ઇન્સ્ટોલ કરો:
"'બાશ
sudo apt install -y nginx
sudo systemctl nginx ને સક્રિય કરે છે
sudo systemctl nginx શરૂ કરો
"`
Nginx રૂપરેખાંકન સેટ કરો:
"'બાશ
સુડો નેનો / વગેરે / nginx / સાઇટ્સ-ઉપલબ્ધ / માયએપ
"`
રૂપરેખાંકન સામગ્રી:
"`nginx"
સર્વર {
સાંભળો 80;
સર્વર_નામ _;
સ્થાન / {
પ્રોક્સી_પાસ http://127.0.0.1:3000;
proxy_http_version 1.1;
proxy_set_header અપગ્રેડ $http_upgrade;
proxy_set_header કનેક્શન 'અપગ્રેડ';
proxy_set_header હોસ્ટ $host;
પ્રોક્સી_કેશ_બાયપાસ $http_અપગ્રેડ;
}
}
"`
ગોઠવણી સક્ષમ કરો:
"'બાશ
સુડો ln -s / વગેરે / nginx / સાઇટ્સ-ઉપલબ્ધ / માયએપ / વગેરે / nginx / સાઇટ્સ-સક્ષમ /
સુડો nginx -t
sudo systemctl nginx ફરીથી લોડ કરો
"`
હવે ઍક્સેસ કરો:
– `http://PUBLIC_IP/`
આ એપ્લિકેશન પોર્ટ 3000 પર ચાલે છે પરંતુ જાહેર જનતા તેને પોર્ટ 80 દ્વારા ઍક્સેસ કરે છે.
-
9. PM2 સાથે સતત એપ્લિકેશનો ચલાવવી
SSH ડિસ્કનેક્ટ થાય ત્યારે એપ્લિકેશન ક્રેશ થતી અટકાવવા માટે, PM2 નો ઉપયોગ કરો:
"'બાશ
સુડો એનપીએમ ઇન્સ્ટોલ -જી પીએમ 2
pm2 સ્ટાર્ટ index.js –name myapp
pm2 સેવ
pm2 સ્ટાર્ટઅપ
"`
`pm2 startup` આદેશ વધારાની સૂચનાઓ પ્રદાન કરશે. સર્વર પુનઃપ્રારંભ થાય ત્યારે એપ્લિકેશન આપમેળે ચાલુ થાય તે માટે પ્રદર્શિત આદેશ ચલાવો.
-
૧૦. (વૈકલ્પિક) RDS સાથે ડેટાબેઝ ઉમેરવું
જો તમારી એપ્લિકેશનને ડેટાબેઝની જરૂર હોય, તો RDS તેને સરળ બનાવે છે કારણ કે AWS બેકઅપ, પેચિંગ અને સ્કેલિંગનું સંચાલન કરે છે.
ટૂંકા પગલાં:
1. RDS સેવા ખોલો → ડેટાબેઝ બનાવો.
2. MySQL અથવા PostgreSQL પસંદ કરો (ચોક્કસ રૂપરેખાંકનો પર મફત ટાયર નિયમો ઉપલબ્ધ છે).
3. વપરાશકર્તા નામ/પાસવર્ડ સેટ કરો.
4. ખાતરી કરો કે RDS ઇન્સ્ટન્સ EC2 જેવા જ VPC માં છે.
5. RDS સુરક્ષા જૂથને ફક્ત EC2 સુરક્ષા જૂથમાંથી જ જોડાણો સ્વીકારવા માટે સેટ કરો (જાહેર લોકોમાંથી નહીં).
એકવાર ડેટાબેઝ લાઇવ થઈ જાય, પછી RDS એન્ડપોઇન્ટ મેળવો અને ડેટાબેઝ ડ્રાઇવરનો ઉપયોગ કરીને તમારી એપ્લિકેશનમાંથી તેની સાથે કનેક્ટ કરો.
-
૧૧. (વૈકલ્પિક) SSL પ્રમાણપત્ર સાથે HTTPS સક્ષમ કરો
ઉત્પાદન માટે, HTTPS ફરજિયાત છે. લાક્ષણિક પદ્ધતિ:
– ડોમેનનો ઉપયોગ કરો (દા.ત. રૂટ 53 અથવા અન્ય રજિસ્ટ્રારમાંથી).
– EC2 પર Let's Encrypt (Certbot) દ્વારા SSL ઇન્સ્ટોલ કરો.
ટૂંકમાં:
"'બાશ
sudo apt ઇન્સ્ટોલ -y certbot python3-certbot-nginx
સુડો સર્ટબોટ -nginx
"`
ડોમેન પસંદ કરવા માટે વિઝાર્ડને અનુસરો અને HTTPS રીડાયરેક્ટ સક્ષમ કરો.
-
૧૨. દેખરેખ અને ખર્ચ
AWS CPU, નેટવર્ક અને ચોક્કસ લોગ જેવા મેટ્રિક્સ જોવા માટે CloudWatch પૂરું પાડે છે. ચૂકી ન જવા માટે તમારે તમારા ખર્ચનું પણ નિરીક્ષણ કરવું પડશે.
મહત્વપૂર્ણ ટિપ્સ:
- ક્લાઉડવોચમાં બિલિંગ એલાર્મ સક્ષમ કરો (દા.ત. જો ચાર્જ $5 થી વધુ હોય તો એલાર્મ).
- ઉપયોગમાં ન હોય ત્યારે ઇન્સ્ટન્સ બંધ કરો.
- ન વપરાયેલ સંસાધનો (લોડ બેલેન્સર, EBS, સ્થિતિસ્થાપક IP, સ્નેપશોટ) દૂર કરો કારણ કે તે હજુ પણ ખર્ચ કરી શકે છે.
-
પેનટઅપ
અભિનંદન! તમે EC2 નો ઉપયોગ કરીને AWS પર એપ્લિકેશન બનાવવાની, વેબ એપ્લિકેશન ચલાવવાની, Nginx રિવર્સ પ્રોક્સી સેટ કરવાની અને PM2 સાથે તેને હંમેશા ચાલુ રાખવાની મૂળભૂત બાબતો શીખી લીધી છે. તમે ડેટાબેઝ માટે RDS, સ્ટોરેજ માટે S3 અને સુરક્ષા માટે HTTPS પ્રમાણપત્રો જેવી વધારાની સેવાઓનો પણ ખ્યાલ મેળવ્યો છે.
જો તમે સ્તર ઉપર જવા માંગતા હો, તો આગળના પગલાં સામાન્ય રીતે આ પ્રમાણે છે:
- CI/CD (GitHub Actions + SSH, અથવા AWS CodeDeploy) સાથે ઓટોમેટેડ ડિપ્લોય,
- ડોકર અને ECS અથવા EKS જેવા ઓર્કેસ્ટ્રેશનવાળા કન્ટેનરનો ઉપયોગ કરીને,
- લેમ્બડા + API ગેટવે સાથે સર્વરલેસ આર્કિટેક્ચરનો ઉપયોગ.
જો તમે ઇચ્છો તો, કૃપા કરીને તમે જે પ્રકારની એપ્લિકેશન બનાવી રહ્યા છો (Node.js, Laravel, Django, React, વગેરે) અને તેનો હેતુ (ડેમો, ઉત્પાદન, મોટા પાયે) તે સ્પષ્ટ કરો. હું વધુ ચોક્કસ પગલાંઓ સાથે ટ્યુટોરીયલને કસ્ટમાઇઝ કરી શકું છું.