Vercel — deploy qilish, environment, domain sozlash
Muammodan boshlaylik
Next.js ilovasi tayyor. Uni internetga chiqarish uchun: server, Node.js, SSL sertifikat, CDN statik fayllar uchun, rasm optimizatsiyasi, ISR keshi, serverless funksiyalar, har bir Pull Request uchun sinov manzili...
O'z serverda bularning hammasini sozlash — kunlar (68-dars). Vercel — Next.js yaratuvchilarining platformasi: bularning hammasi git push bilan.
Hayotiy o'xshatma
Kitob chop etish. O'zingiz bosmaxona sotib olib, qog'oz, bo'yoq va muqova masalasini hal qilishingiz mumkin. Yoki tayyor nashriyotga qo'lyozmani topshirasiz — ular chop etadi, do'konlarga tarqatadi, qayta nashr qiladi. Nashriyot sizning kitob janringizni eng yaxshi biladi, chunki u shu janrni yaratgan.
Birinchi deploy
- Kodni GitHub (yoki GitLab, Bitbucket) ga yuklang
- vercel.com — GitHub bilan kiring
- Add New → Project → repozitoriyni tanlang (Import)
- Vercel Next.js ni avtomatik taniydi — build sozlamalari tayyor
- Environment Variables —
.env.localdagi o'zgaruvchilarni qo'shing (65-dars) - Deploy
Bir-ikki daqiqada: https://dokon-xyz.vercel.app — HTTPS, CDN, hammasi tayyor.
CLI orqali
npm i -g vercel
vercel # preview deploy
vercel --prod # production
Avtomatik deploy
| Harakat | Natija |
|---|---|
main ga push |
Production yangilanadi |
| Boshqa branch ga push / Pull Request | Preview — alohida manzil: dokon-git-yangi-dizayn-jamoa.vercel.app |
| Build xatosi | Production o'zgarmaydi, eski versiya ishlayveradi |
Preview manzillar — jamoa uchun ajoyib: dizayner, menejer yoki mijoz o'zgarishni production dan oldin haqiqiy havolada ko'radi va izoh qoldiradi.
Rollback
Deployments → oldingi muvaffaqiyatli deploy → Promote to Production (yoki Instant Rollback) — bir necha soniyada eski versiyaga qaytish, qayta build siz.
Environment Variables
Project → Settings → Environment Variables
| Muhit | Qachon ishlatiladi |
|---|---|
| Production | main deploy lari |
| Preview | Pull Request va boshqa branch lar |
| Development | vercel dev va vercel env pull |
vercel env pull .env.local # lokalga tortib olish
- Preview uchun test kalitlari (Stripe test, test bazasi) — production ma'lumotlari preview larda buzilmasin
- Maxfiy o'zgaruvchilarni Sensitive deb belgilash — ular keyin panelda ko'rinmaydi
NEXT_PUBLIC_o'zgaruvchisini o'zgartirgandan keyin — qayta deploy (build da yoziladi)
[!WARNING] Preview deploy lar standart holatda ochiq manzilda — ularga production bazasini ulasangiz, tasodifiy odam (yoki qidiruv boti) preview orqali haqiqiy ma'lumotlarni o'zgartirishi mumkin. Preview uchun alohida baza (Neon branching — 48-dars) va Deployment Protection (parol yoki Vercel login) ni yoqing.
Domain
Project → Settings → Domains → Add → dokon.uz
DNS sozlamalari (domen registratoringizda):
| Yozuv | Nom | Qiymat |
|---|---|---|
A |
@ |
Vercel ko'rsatgan IP |
CNAME |
www |
Vercel ko'rsatgan manzil (masalan, cname.vercel-dns.com) |
- SSL sertifikat — avtomatik
www.dokon.uz→dokon.uzyo'naltirishni panelda tanlash mumkin- DNS o'zgarishlari tarqalishi — bir necha daqiqadan bir necha soatgacha
Vercel ning Next.js uchun imkoniyatlari
| Imkoniyat | Nima |
|---|---|
| CDN | Statik sahifalar va fayllar butun dunyo bo'ylab |
| Serverless / Fluid functions | Dinamik sahifalar, Route Handler, Server Action |
| ISR | revalidate va revalidateTag — global kesh bilan (59-dars) |
| Image Optimization | next/image — avtomatik |
| Analytics, Speed Insights | Tashriflar va Core Web Vitals (54-dars) |
| Cron Jobs | vercel.json da jadval bo'yicha Route Handler chaqirish |
| Storage / Marketplace | Neon, Upstash Redis, Blob — bir bosishda |
Funksiya regioni
Settings → Functions → Function Region — bazangizga yaqin region (masalan, Frankfurt fra1). Baza Frankfurtda, funksiya AQSh da bo'lsa — har bir so'rov sekin (48-dars).
Cron
// vercel.json
{
"crons": [{ "path": "/api/cron/eski-savatlar", "schedule": "0 22 * * *" }]
}
// app/api/cron/eski-savatlar/route.ts
export async function GET(request: Request) {
if (request.headers.get('authorization') !== `Bearer ${process.env.CRON_SECRET}`) {
return new Response('Ruxsat yo\'q', { status: 401 })
}
await prisma.savat.deleteMany({ where: { yangilangan: { lt: new Date(Date.now() - 30 * 864e5) } } })
return Response.json({ ok: true })
}
Cheklovlar va narx
- Bepul Hobby tarif — shaxsiy, notijorat loyihalar uchun; tijorat uchun Pro
- Funksiyalar bajarilish vaqti, so'rovlar, rasm optimizatsiyasi, trafik — limitlar bor
- Katta trafikda xarajat tez o'sishi mumkin — Spend Management da chegara qo'ying
[!INFO] Tarif shartlari va limitlar vaqti-vaqti bilan o'zgaradi — joriy qiymatlarni vercel.com/pricing dan tekshiring. Muqobillar: Netlify, Cloudflare (OpenNext orqali), Railway, Render yoki o'z serveringiz (67–68-darslar).
Tez-tez uchraydigan xatolar
1. Environment o'zgaruvchilarini qo'shmaslik
Lokal ishlaydi, Vercel da undefined — build yoki runtime xatosi.
2. Build da baza migratsiyasi
prisma migrate deploy ni build ga qo'shsangiz — har bir preview ham production bazasini migratsiya qiladi. Migratsiyani faqat production uchun yoki alohida qadamda (69-dars).
3. Katta fayllarni public/ ga yuklash
Foydalanuvchi yuklagan fayllar — deploy ichida emas, Blob/S3 da. Har deploy da public/ qayta yaratiladi.
Xulosa
GitHub → Vercel → Import → Environment Variables → Deploy
main → Production; branch / PR → Preview manzil; Instant Rollback
Env: Production / Preview / Development; vercel env pull
Preview — test kalitlari, alohida baza, Deployment Protection
Domain: A va CNAME yozuvlari, SSL avtomatik
Funksiya regioni — bazaga yaqin; Cron — vercel.json + CRON_SECRET
Limitlar va narxlarni kuzating
Keyingi dars
67-dars: Docker — Next.js ni containerlashtirish
Next.js ni istalgan serverda bir xil ishlaydigan container ga qadoqlash.