Deploy nima?
Siz ilovani yozdingiz, u o'z kompyuteringizda mukammal ishlaydi. Lekin sizdan boshqa hech kim uni ochib ko'ra olmaydi. Deploy โ bu ilovani o'z kompyuteringizdan olib, internetdagi doimo ishlab turadigan serverga joylashtirish jarayoni. Shundan so'ng har kim brauzerda manzilni yozib, ilovangizga kira oladi. Ushbu darsda deploy nima ekanligini, u qanday muhitlarda amalga oshirilishini va jarayonning umumiy bosqichlarini o'rganamiz.
Deploy so'zining ma'nosi
Deploy (deployment, o'zbekcha "joylashtirish", "yetkazib berish") โ bu tayyor dasturiy ta'minotni foydalanuvchilar foydalana oladigan muhitga o'rnatish va ishga tushirish jarayoni. Ya'ni kod endi faqat sizning kompyuteringizda emas, balki haqiqiy, internetga ulangan mashinada ishlaydi.
Deploy โ bu bir martalik hodisa emas. Odatda siz kodni ko'p marta yangilaysiz: yangi imkoniyat qo'shasiz, xatoni tuzatasiz. Har safar bu o'zgarishni serverga yetkazish ham deploy deb ataladi. Shuning uchun deploy jarayonini iloji boricha oddiy va takrorlanadigan qilish muhim.
Lokalxost va server farqi
Lokalxost (localhost) โ bu sizning o'z kompyuteringiz. Node.js serverini ishga tushirganingizda u odatda http://localhost:3000 manzilida ochiladi. Bu manzil faqat shu kompyuterda ishlaydi โ internetning boshqa qismidan unga kirib bo'lmaydi.
Server (yoki ishlab chiqarish serveri) โ bu internetga doimo ulangan, o'chirilmaydigan mashina. Uning ommaviy IP manzili (masalan, 203.0.113.10) yoki domeni (masalan, mening-saytim.uz) bo'ladi, va dunyoning istalgan nuqtasidan unga kirish mumkin.
- Lokalxost โ sizning kompyuteringiz; ilova siz uni ishga tushirganingizda ishlaydi; faqat siz ko'rasiz;
- Server โ masofadagi mashina; ilova 24/7 ishlaydi; har kim ko'radi.
Ular orasidagi farqlar shunchaki manzil bilan cheklanmaydi. Serverda muhit boshqacha bo'ladi: operatsion tizim (odatda Linux), o'zgaruvchilar, fayllar joylashuvi, ruxsatlar. Kod lokalxostda ishlab, serverda ishlamasligi mumkin โ masalan, portlar band bo'lsa, kutubxona o'rnatilmagan bo'lsa yoki fayl yo'llari boshqacha bo'lsa.
.env orqali berish โ juda muhim. Bu haqida VPS darsida batafsil to'xtalamiz.Ishlab chiqarish (production) muhiti
Dasturchilar odatda bir necha muhit (environment) bilan ishlashadi. Muhit โ bu ilova ishlaydigan alohida sozlangan makon. Uchta eng ko'p uchraydigani:
- Development (ishlab chiqish, dev) โ sizning lokalxostingiz. Bu yerda kod tez-tez o'zgaradi, xatolar to'liq ko'rsatiladi, tez qayta yuklanadi;
- Staging (sinov, oldingi bosqich) โ productionga o'xshash, lekin foydalanuvchilar uchun emas. Bu yerda oxirgi sinov o'tkaziladi;
- Production (ishlab chiqarish, prod) โ haqiqiy foydalanuvchilar ishlatadigan muhit. Bu yerda barqarorlik, tezlik va xavfsizlik eng muhim.
Production muhitida ilova developmentdan farqli sozlanadi. Masalan, xato xabarlari foydalanuvchiga to'liq ko'rsatilmaydi (xavfsizlik uchun), kodlar kichraytiriladi (minify), keshlash yoqiladi. Node.js'da bu ko'pincha NODE_ENV=production o'zgaruvchisi orqali boshqariladi.
# Development rejimida ishga tushirish:
NODE_ENV=development node server.js
# Production rejimida ishga tushirish:
NODE_ENV=production node server.js
NODE_ENV=production bo'lganda avtomatik ravishda ba'zi optimizatsiyalarni yoqadi (masalan, shablonlarni keshlaydi, batafsil xato izlarini yashiradi). Shu sababli productionda bu o'zgaruvchini o'rnatishni unutmang.Server turlari: VPS va PaaS
Ilovani joylashtirish uchun serverga ega bo'lish kerak. Buning ikki asosiy yondashuvi bor va ular bir-biridan tubdan farq qiladi.
VPS (virtual xususiy server)
VPS (Virtual Private Server) โ bu sizga to'liq nazorat beriladigan virtual Linux mashinasi. Siz unga SSH orqali ulanasiz, kerakli dasturlarni o'zingiz o'rnatasiz (Node.js, Nginx, ma'lumotlar bazasi), va hamma narsani o'zingiz sozlaysiz.
- Ustunligi: to'liq erkinlik va nazorat โ istalgan dasturni o'rnatishingiz mumkin; ko'pincha arzonroq;
- Kamchiligi: hamma narsani o'zingiz sozlashingiz kerak โ xavfsizlik, yangilanishlar, monitoring sizning zimmangizda.
Mashhur VPS provayderlar: DigitalOcean, Hetzner, Linode, Vultr, AWS EC2. Ularda oyiga bir necha dollardan boshlanadigan tariflar bor. VPS'ga deploy qilishni keyingi darsda amalda ko'ramiz.
PaaS (platforma xizmat sifatida)
PaaS (Platform as a Service) โ bu server boshqaruvining ko'p qismini o'z zimmasiga oladigan bulut xizmati. Siz faqat kodni beryapsiz, qolganini (server, tarmoq, masshtablash) platforma o'zi bajaradi.
- Ustunligi: juda oson โ ko'pincha git push qilib deploy qilasiz; server boshqaruvi bilan ovora bo'lmaysiz;
- Kamchiligi: kamroq nazorat; katta hajmda qimmatroq bo'lishi mumkin.
Backend uchun mashhur PaaS platformalar: Render, Railway, Fly.io, Heroku. Frontend/statik saytlar uchun esa Netlify, Vercel, GitHub Pages โ bularni frontend darsida ko'ramiz.
Domen va DNS haqida umumiy tushuncha
Server IP manzilga ega bo'ladi, masalan 203.0.113.10. Lekin foydalanuvchilar raqamlarni emas, domen nomini (masalan, mening-saytim.uz) yodda tutadi. Domen โ bu insonlarga qulay, o'qiladigan manzil.
DNS (Domain Name System) โ bu domen nomlarini IP manzillarga o'giradigan internetning "telefon kitobi". Foydalanuvchi brauzerda mening-saytim.uz yozganda, brauzer avval DNS'dan so'raydi: "bu domen qaysi IP'ga tegishli?" โ javob olgach, o'sha IP'ga ulanadi.
# Domen qaysi IP'ga ko'rsatayotganini ko'rish (statik misol):
$ nslookup mening-saytim.uz
Name: mening-saytim.uz
Address: 203.0.113.10
Ya'ni deploy zanjiri quyidagicha ishlaydi: domen โ DNS โ server IP โ Nginx โ ilovangiz. Domenni sotib olish, DNS yozuvlarini sozlash va uni serverga ulash โ bularni oxirgi (domen va HTTPS) darsida batafsil ko'ramiz.
http://203.0.113.10) orqali kirishadi. Lekin bu chiroyli emas va HTTPS'ni to'g'ri sozlash uchun ham domen kerak bo'ladi. Jiddiy loyiha uchun domen deyarli har doim olinadi.Deploy jarayonining bosqichlari
Har xil platforma va texnologiyada tafsilotlar farq qilsa-da, deploy jarayoni umumiy bosqichlarga ega. Backend ilovasini VPS'ga joylashtirishning tipik bosqichlari:
- Server tayyorlash โ VPS olish, unga SSH orqali ulanish, kerakli dasturlarni o'rnatish (Node.js, Git, Nginx);
- Kodni yetkazish โ kodni serverga olib borish, odatda
git cloneorqali; - Bog'liqliklarni o'rnatish โ
npm installbilan kutubxonalarni o'rnatish; - Muhitni sozlash โ
.envfaylida maxfiy ma'lumotlar (parollar, kalitlar) va sozlamalarni berish; - Ilovani ishga tushirish โ uni doimo ishlab turadigan qilish (PM2 kabi vosita bilan);
- Reverse proxy sozlash โ Nginx orqali 80/443 portidan ilovaga trafikni yo'naltirish;
- Domen va HTTPS โ domenni ulash, SSL sertifikat o'rnatish.
Frontend/statik sayt uchun jarayon soddaroq: kodni build qilasiz (npm run build), natijadagi statik fayllarni hosting platformasiga yuklaysiz โ tamom. Bu bosqichlar frontend darsida ko'riladi.
Docker bilan bog'liqlik
Agar siz Docker darsidan o'tgan bo'lsangiz, deploy jarayonini yanada ishonchli qilishning yana bir yo'lini bilasiz: ilovani konteynerga joylash. Docker ilovani barcha bog'liqliklari bilan bir "qutiga" o'raydi, shu tufayli u lokalxostda ham, serverda ham bir xil ishlaydi.
Bu aynan "menda ishlayapti-ku" muammosini hal qiladi: konteyner ichidagi muhit hamma joyda bir xil. Ko'p zamonaviy deploy quvurlari (pipeline) Docker image yaratib, uni serverda ishga tushiradi. Bu bobda biz Docker'siz, klassik yondashuvni ko'ramiz โ lekin ikkala yo'lni ham bilish foydali.
Xulosa
- Deploy โ ilovani lokalxostdan internetdagi serverga joylashtirib, foydalanuvchilarga ochish jarayoni;
- Lokalxost faqat sizda ishlaydi, server esa 24/7 internetda; muhitlar farqi "menda ishlayapti-ku" muammosini keltirib chiqaradi;
- Uchta muhit bor: development, staging, production; productionda
NODE_ENV=productiono'rnatiladi; - VPS โ to'liq nazorat, hamma narsani o'zingiz sozlaysiz; PaaS โ oson, platforma serverni boshqaradi;
- Domen โ DNS โ IP โ server zanjiri foydalanuvchini ilovaga ulaydi;
- Deploy bosqichlari: server tayyorlash, kod, bog'liqliklar, muhit, ishga tushirish, reverse proxy, domen/HTTPS.