Next.js Kurulumu ve Yayına Alma
create-next-app ile Next.js projesi kurmayı, App Router klasör yapısını ve projeyi Vercel ya da kendi sunucunuzda yayına almayı adım adım anlatıyoruz.

Next.js kurulumu için Node.js'in güncel LTS sürümünü kurduktan sonra terminalde npx create-next-app@latest komutunu çalıştırırsınız. Sihirbaz TypeScript, ESLint, Tailwind CSS ve App Router seçeneklerini sorar. Proje klasörüne girip npm run dev ile geliştirme sunucusunu başlatırsınız; site localhost:3000 adresinde açılır, yayın için npm run build kullanılır.
Next.js Nedir, Kimler Kullanmalı?
Next.js, React üzerine kurulu bir web uygulama çatısıdır. React yalnızca arayüz bileşenlerini çizerken Next.js yönlendirme, sunucu tarafı sayfa üretimi, statik sayfa çıktısı, görsel optimizasyonu ve API uçları gibi ihtiyaçları hazır getirir.
En büyük farkı, sayfaları sunucuda HTML olarak üretebilmesidir. Arama motorları ve sosyal medya önizlemeleri içeriği doğrudan görür, ilk açılış hızlanır. Bu yüzden içerik ağırlıklı kurumsal siteler, katalog ve blog sayfaları için tek sayfa uygulamalara göre daha uygundur.
Yalnızca giriş gerektiren bir yönetim paneli geliştiriyorsanız daha sade bir yapı yeterli olabilir; bu senaryo için Vite ile React kurulumu rehberimize bakın.
Önkoşullar
Next.js, desteklediği Node.js sürümleri konusunda seçicidir ve yeni ana sürümlerde eski Node desteğini bırakır. Bu yüzden nodejs.org üzerindeki güncel LTS sürümünü kurmak en sorunsuz yoldur.
- Node.js güncel LTS sürümü ve npm (Node ile gelir); pnpm, yarn ya da bun da kullanılabilir.
- Bir kod editörü; önerilen eklentilerle kurulum için VS Code kurulumu yazısına bakabilirsiniz.
- Git ve bir uzak depo (GitHub, GitLab): yayına alma süreçleri genellikle depodan beslenir.
- Kendi sunucunuza kuracaksanız SSH erişimi olan bir Linux sunucu.
Node.js'i Kurun ve Doğrulayın
Node.js kurulumu işletim sistemine göre küçük farklar gösterir; Next.js komutları ise kurulumdan sonra her yerde aynıdır.
Windows
nodejs.org'dan LTS kurulum dosyasını indirin ya da winget kullanın; sonra terminali yeniden açın.
winget install OpenJS.NodeJS.LTS
node -vmacOS
Resmi paket ya da Homebrew ile kurabilirsiniz.
brew install node
node -vLinux
Dağıtım depolarındaki sürüm eski kalabilir; nvm ile kurmak daha güvenlidir.
nvm install --lts
nvm use --lts
node -vcreate-next-app ile Proje Kurma
create next app sihirbazı resmi başlangıç aracıdır ve gerekli tüm paketleri tek seferde kurar. Komutu çalıştırdığınızda proje adı ve birkaç seçenek sorulur; kararsızsanız önerilen varsayılanları kabul etmek iyi bir başlangıçtır.
| Soru | Öneri |
|---|---|
| TypeScript | Evet; hataları yazarken yakalar |
| ESLint | Evet; kod kalitesi için |
| Tailwind CSS | Tercihe bağlı; tasarım sisteminize göre seçin |
| src/ klasörü | Tercihe bağlı; yapılandırma dosyalarını koddan ayırır |
| App Router | Evet; yeni projeler için önerilen yapı |
| Import alias | Varsayılan @/* yeterli |
npx create-next-app@latest benim-sitem
cd benim-sitem
npm run devApp Router Yapısını Anlamak
Next.js App Router, yönlendirmeyi klasör yapısından üretir. app klasörü altındaki her klasör bir adres parçasıdır; o klasördeki page.tsx dosyası sayfayı, layout.tsx ise o bölümün ortak iskeletini tanımlar.
App Router'da bileşenler varsayılan olarak sunucu bileşenidir: sunucuda çalışır, veriyi doğrudan çekebilir ve tarayıcıya JavaScript göndermez. Tıklama, form durumu gibi etkileşim gereken bileşenlerin en üstüne use client yönergesini yazarak onları istemci bileşeni yaparsınız.
| Dosya | Adres / görev |
|---|---|
| app/layout.tsx | Tüm sitenin kök iskeleti: html, body, ortak başlık ve alt bilgi |
| app/page.tsx | Ana sayfa (/) |
| app/hakkimizda/page.tsx | /hakkimizda adresi |
| app/blog/[slug]/page.tsx | Dinamik adres: /blog/herhangi-bir-yazi |
| app/not-found.tsx | 404 sayfası |
| app/api/iletisim/route.ts | API ucu (POST, GET işleyicileri) |
SEO İçin Metadata
Her sayfa ya da layout dosyası metadata nesnesi dışa aktararak başlık, açıklama ve Open Graph etiketlerini tanımlayabilir. Dinamik sayfalarda generateMetadata fonksiyonu kullanılır. Bu yapı, SEO uyumlu web tasarımı için gereken etiketleri sayfa düzeyinde yönetmeyi kolaylaştırır.
Build Alma ve Ortam Değişkenleri
Yayına çıkmadan önce npm run build ile üretim derlemesi alın. Build çıktısı her sayfanın statik mi, dinamik mi üretildiğini listeler; beklemediğiniz bir sayfanın dinamik çıkması, gereksiz sunucu yükünün erken işaretidir.
Ortam değişkenleri .env.local dosyasında tutulur. Yalnızca NEXT_PUBLIC_ önekli değişkenler tarayıcıya gönderilir; veritabanı parolası ve API gizli anahtarları öneksiz kalmalı ve yalnızca sunucu kodunda kullanılmalıdır.
npm run build
npm run startHangi Sayfa Nasıl Üretilmeli?
Next.js'in gücü, her sayfa için farklı bir render stratejisi seçebilmenizden gelir. Yanlış seçim ya gereksiz sunucu maliyeti ya da bayat içerik demektir; bu yüzden kuruluştan hemen sonra sayfalarınızı türlerine göre sınıflandırın.
Hakkımızda, hizmet ve iletişim gibi nadiren değişen sayfalar statik üretim için idealdir: derleme sırasında bir kez üretilir ve CDN'den saniyenin altında sunulur. Bir kurumsal web sitesi sayfalarının neredeyse tamamı bu gruptadır.
Blog ve ürün listeleri gibi ara sıra güncellenen sayfalarda belirli aralıklarla yeniden üretme (revalidate) iyi bir dengedir. Kullanıcıya özel panel, sepet ya da anlık müsaitlik gösteren rezervasyon ekranları ise her istekte sunucuda üretilmelidir. Bu son grup, otel ve acente gibi sektörel yazılımlarda sıkça karşılaşılan senaryodur ve veritabanı, önbellek ve yetkilendirme tasarımını birlikte düşünmeyi gerektirir.
Next.js Deploy Seçenekleri
Next.js deploy için üç yaygın yol vardır. Hangisini seçeceğiniz trafik, bütçe, veri konumu ve ekibinizin sunucu yönetme deneyimine bağlıdır.
- Vercel: Next.js'in geliştiricisi olan şirketin platformu. Depoyu bağlarsınız, her gönderimde otomatik derleme ve önizleme adresi oluşur.
- Kendi Node.js sunucunuz: npm run start ile çalışan uygulamayı PM2 gibi bir süreç yöneticisi ayakta tutar, önüne Nginx konur. Tam kontrol sağlar ama bakım sorumluluğu sizdedir.
- Statik dışa aktarma: next.config dosyasında output: 'export' ayarıyla site düz HTML dosyalarına dönüşür. Sunucu bileşeni gerektiren dinamik özellikler bu modda çalışmaz.
PM2 ve Nginx ile Yayın
Ubuntu tabanlı bir sunucuda Node.js'i kurduktan sonra projeyi depodan çekip derleyin ve PM2 ile başlatın. PM2'nin startup komutu, ekrana yazdırdığı satırı sudo ile çalıştırmanızı ister; bu satır uygulamanın sunucu yeniden başladığında otomatik açılmasını sağlar.
git clone https://github.com/kullanici/benim-sitem.git
cd benim-sitem
npm ci
npm run build
sudo npm install -g pm2
pm2 start npm --name benim-sitem -- start
pm2 save
pm2 startupserver {
listen 80;
server_name ornek.com www.ornek.com;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Sık Hatalar ve Çözümleri
Next.js projelerinde karşılaşılan hataların çoğu sürüm uyumsuzluğundan ya da sunucu ile istemci kodunun karıştırılmasından doğar. Paket yönetimiyle ilgili sorunlarda npm komutları rehberi de yardımcı olur.
| Belirti | Çözüm |
|---|---|
| Node sürümü desteklenmiyor uyarısı | Güncel LTS sürümüne geçin, nvm kullanıyorsanız nvm use --lts |
| Port 3000 kullanımda | npm run dev -- -p 3001 ile farklı port seçin |
| Hydration failed hatası | Sunucu ve tarayıcıda farklı çıktı üreten kodu (tarih, rastgele sayı, window kullanımı) istemci bileşenine ya da useEffect içine taşıyın |
| useState sunucu bileşeninde kullanılamaz | Dosyanın en üstüne use client yönergesini ekleyin |
| Yayında ortam değişkeni boş | Değişkeni sunucuda da tanımlayın; tarayıcıda gerekiyorsa NEXT_PUBLIC_ önekini kullanın ve yeniden derleyin |
Sık Sorulan Sorular
01Pages Router mı App Router mı kullanmalıyım?
Yeni projeler için resmi öneri App Router'dır; sunucu bileşenleri, iç içe layout'lar ve akışlı çizim gibi özellikler yalnız bu yapıda vardır. Pages Router hâlâ desteklenir, bu yüzden eski bir projeyi acele taşımak zorunda değilsiniz.
02Next.js için Vercel şart mı?
Hayır. Next.js açık kaynaklıdır ve Node.js çalıştırabilen her sunucuda ya da Docker konteynerinde çalışır. Vercel kurulumu kolaylaştırır; kendi sunucunuz ise maliyet, veri konumu ve kontrol açısından avantaj sağlayabilir.
03Next.js projesi paylaşımlı hostingde çalışır mı?
Sunucu özellikleri gerektiren bir proje, Node.js süreci çalıştırılamayan klasik paylaşımlı hostingde çalışmaz. Siteniz tamamen statikse output: export ile üretilen dosyaları yükleyebilirsiniz; aksi halde VPS ya da Node destekli bir ortam gerekir.
Next.js kurulumu birkaç komutla biter; doğru render stratejisi ve sağlam bir yayın ortamı ise projenin uzun ömürlü olmasını sağlar. Rezervasyon, ilan ya da yönetim paneli gibi işinize özel bir uygulama planlıyorsanız yazılım çözümlerimizi inceleyin; içerik odaklı, hızlı bir site için de web tasarımı ekibimizle tanışın.


