Asosiy kontentga o‘tish
Innovialabs

Veb-ilovani Azure App Service’ga qanday joylashtirish mumkin

Amaliyot4 daq

Qisqacha

Avval App Service plan yarating (u region, OT va tarifni belgilaydi), unda kerakli runtime bilan veb-ilova oching, kodni GitHub Actions yoki zip deploy orqali joylang, maxfiy ma’lumotlarni app settings’ga chiqaring va relizlarni staging-slot hamda swap orqali to‘xtovsiz o‘tkazing.

Qisqa javob: bu qanday ishlaydi

Azure App Service — veb-ilovalar uchun boshqariladigan hosting: siz kodni yuklaysiz, serverlar, operatsion tizim, yuklamani taqsimlash va platforma yangilanishlari esa Azure zimmasida qoladi. Ish ikki asosiy resursga tayanadi:

  • App Service plan — hisoblash quvvati: region, operatsion tizim (Linux yoki Windows), tarif va instanslar soni. To‘lov aynan plan uchun olinadi.
  • Web App — plan ichidagi ilovaning o‘zi: runtime, kod, sozlamalar, domenlar. Bitta planda bir nechta ilova bo‘lishi mumkin va ular uning resurslarini bo‘lishadi.

Tartib shunday: resurs guruhi → plan → ilova → deploy → sozlamalar → domen va SSL → relizlar uchun slotlar.

1-qadam. Plan va ilovani yarating

Eng qulayi — Azure CLI: buyruqlarni saqlab, qayta ishlatish mumkin.

az group create --name shop-rg --location westeurope
az appservice plan create --name shop-plan --resource-group shop-rg --sku B1 --is-linux
az webapp create --name shop-app --resource-group shop-rg --plan shop-plan --runtime "NODE:20-lts"

Ilova nomi noyob bo‘lishi shart, chunki u shop-app.azurewebsites.net manziliga aylanadi. Node.js, .NET va boshqa stack’lar uchun mavjud runtime’lar ro‘yxatini az webapp list-runtimes ko‘rsatadi — versiyalar vaqt o‘tishi bilan o‘zgaradi, shuning uchun unga tayaning.

2-qadam. Kodni joylang

Zip deploy — birinchi ishga tushirish yoki qo‘lda reliz uchun eng tez yo‘l. Loyihani yig‘ing, arxivlang va yuboring:

az webapp deploy --resource-group shop-rg --name shop-app --src-path app.zip --type zip

Agar arxivda node_modules’siz manba kodi bo‘lsa, platforma tomonida yig‘ishni SCM_DO_BUILD_DURING_DEPLOYMENT=true sozlamasi bilan yoqing. .NET uchun odatda dotnet publish natijasi arxivlanadi.

GitHub Actions — doimiy ish uchun to‘g‘ri tanlov. Deployment Center bo‘limidagi master workflow faylini va hisob ma’lumotlari bilan secret’ni o‘zi yaratadi. Asosiy qadam quyidagicha:

- uses: azure/webapps-deploy@v3
  with:
    app-name: shop-app
    slot-name: staging
    publish-profile: ${{ secrets.AZURE_WEBAPP_PUBLISH_PROFILE }}
    package: .

Production-loyihalar uchun publish profile o‘rniga OpenID Connect orqali kirishni sozlagan ma’qul: shunda repozitoriyda uzoq muddatli secret saqlanmaydi.

3-qadam. App settings’ni sozlang

Ulanish satrlari, API kalitlari va ish rejimini kodga yozmang. App Service’da ular app settings sifatida beriladi va ilovaga muhit o‘zgaruvchilari bo‘lib keladi:

az webapp config appsettings set --resource-group shop-rg --name shop-app --settings NODE_ENV=production API_URL=https://api.example.com

Darhol yoqish kerak bo‘lgan yana bir nechta narsa:

  • HTTPS Only — HTTPS’ga majburiy yo‘naltirish;
  • Always On (pullik tariflarda) — trafik bo‘lmaganda ilova «uxlab» qolmasligi uchun;
  • Health check — /health kabi yo‘l, u orqali platforma instans tirikligini biladi;
  • ilova loglari — ularsiz deploy’dan keyingi xatolarni taxmin qilishga to‘g‘ri keladi.

4-qadam. Slotlar orqali to‘xtovsiz relizlar

Deployment slot — ilovaning alohida nusxasi, o‘z manzili bilan, masalan shop-app-staging.azurewebsites.net. Reliz sxemasi:

  1. Slot yarating: az webapp deployment slot create --name shop-app --resource-group shop-rg --slot staging.
  2. Yangi versiyani staging’ga joylang va tekshiring.
  3. Swap bajaring: az webapp deployment slot swap --name shop-app --resource-group shop-rg --slot staging --target-slot production.

Almashtirishdan oldin platforma instanslarni qizdiradi, shuning uchun foydalanuvchilar sovuq startni sezmaydi. Muammo chiqsa, qayta swap eski versiyani qaytaradi.

Muhim jihat: kod bilan birga ko‘chmasligi kerak bo‘lgan sozlamalarni (masalan, test bazasiga ulanish satrini) deployment slot setting deb belgilang — ular o‘z slotiga bog‘langan holda qoladi.

5-qadam. O‘z domeningiz va bepul SSL

  1. Custom domains bo‘limida domenni qo‘shing. www uchun registratorda shop-app.azurewebsites.net’ga CNAME, asosiy domen uchun esa ilova IP’siga A-yozuv yarating.
  2. Portaldagi verification ID bilan asuid.<subdomen> TXT-yozuvini qo‘shing — shunda Azure domen sizniki ekanini tasdiqlaydi.
  3. App Service Managed Certificate yarating va uni domenga SNI SSL turi bilan bog‘lang. Sertifikat bepul va avtomatik yangilanadi, lekin wildcard-domenlarni qo‘llab-quvvatlamaydi.

Tarifni qanday tanlash kerak

DarajaQachon mos keladi
Free / SharedTajriba va demo: umumiy resurslar, SLA va ko‘p funksiyalar yo‘q
BasicSlot va avtomasshtablashsiz kichik production
StandardSlotlar, avtomasshtablash, zaxira nusxalar kerak
PremiumYuqori yuklama, ko‘proq xotira va slotlar, xususiy tarmoqlar

Faqat narxga emas, funksiyalarga qarang: agar to‘xtovsiz relizlar kerak bo‘lsa, Basic yetmaydi. Mos keladigan eng kichik darajadan boshlang — planni ilovani qayta o‘rnatmasdan ko‘tarish yoki tushirish mumkin. Joriy narxlar region va OT’ga bog‘liq, ularni Azure’ning rasmiy kalkulyatorida hisoblash qulay.

Ko‘p uchraydigan xatolar

  • Ilova qat’iy portni tinglaydi. Node.js-ilova portni process.env.PORT’dan olishi kerak.
  • Maxfiy ma’lumotlar repozitoriyda, app settings’da emas.
  • To‘g‘ridan-to‘g‘ri production’ga deploy slotsiz — har qanday xato foydalanuvchilarga ko‘rinadi.
  • Bitta planda juda ko‘p ilova — ular xotira va CPU uchun raqobatlashadi.

Ko‘p beriladigan savollar

Virtual mashinada OT’ni yangilash, veb-serverni sozlash va yuklamani taqsimlashni o‘zingiz qilasiz. App Service buni o‘z zimmasiga oladi, siz esa faqat kod va sozlamalar uchun javob berasiz. Evaziga muhit ustidan nazorat kamroq bo‘ladi.

Bunda yordam beramiz

O‘zingiz shug‘ullanmasdan natija olishni istasangiz — biz har kuni shu bilan shug‘ullanamiz.

Loyihani muhokama qilish

Yana o‘qing

G‘oya yoki vazifangiz bormi? Bizga aytib bering

Ish kuni davomida javob beramiz va yechim taklif qilamiz. Konsultatsiya bepul.