next js projesi yayınlama: 2026 İçin VDS Üzerinde 7 Kritik Adım
- next js projesi yayınlama: 2026 İçin VDS Üzerinde 7 Kritik Adım
- 📋 Önemli Noktalar
- İçindekiler
- Next.js Projesi Yayınlamadan Önce Bilmeniz Gerekenler
- Node.js Sürümü ve Sistem Gereksinimleri
- Üretim Modu ile Geliştirme Modu Arasındaki Fark
- Statik Export mu, SSR mı?
- VDS Sunucu Hazırlığı: Node.js ve PM2 Kurulumu
- Adım 1: Node.js Kurulumu
- Adım 2: PM2 Kurulumu
- Adım 3: Git ve Temel Araçlar
- Next.js Projesini Build Etme ve Optimize Etme
- Standalone Mod ile Build Almak
- Build Komutunu Çalıştırma
- Çevre Değişkenleri (Environment Variables)
- Nginx Ters Proxy Yapılandırması
- Nginx Kurulumu
- Next.js İçin Nginx Yapılandırması
- Neden Nginx Kullanmalıyız?
- PM2 ile Next.js Uygulamasını Yönetme
- PM2 ile Uygulamayı Başlatma
- PM2 Ekosistem Dosyası Oluşturma
- PM2 Alternatifleri: systemd vs nohup
- SSL Sertifikası ve Domain Bağlama
- Certbot ile SSL Kurulumu
- SSL Yapılandırması Sonrası Nginx Kontrolü
- Statik IP ve DNS Ayarları
- Yaygın Hatalar ve Kesin Çözümleri
- 502 Bad Gateway Hatası
- 504 Gateway Timeout Hatası
- JavaScript Heap Out of Memory
- Statik Dosyalar Yüklenmiyor
- Port Çakışması
- Performans Optimizasyonu İpuçları
- Sonuç: Next.js Projeniz Artık Canlıda
- Sıkça Sorulan Sorular
- Next.js projesi paylaşımlı hostingde yayınlanır mı?
- Next.js uygulaması hangi portta çalışır?
- Next.js build sonrası .next klasörü sunucuya yüklenmeli mi?
- PM2 olmadan Next.js uygulaması çalışır mı?
- Next.js projesi için ne kadar RAM gerekir?
- SSL sertifikasını nasıl yenilerim?
- Next.js uygulaması neden 502 hatası veriyor?
- 🔗 İlgili İçerikler
Geçen hafta bir müşterimizin next js projesi yayınlama sürecinde yaşadığı bir sorunu çözdük. React tabanlı yönetim panelini paylaşımlı hostinge yüklemeye çalışıyordu ancak Node.js desteği olmadığı için sürekli 500 hatası alıyordu. Oysa proje VDS üzerinde doğru yapılandırıldığında 2 saat içinde yayına alınabiliyordu. Bu rehberde, 2026 yılında bir Next.js uygulamasını sıfırdan canlı sunucuya nasıl taşıyacağınızı adım adım anlatıyorum.
Next.js, React ekosisteminin en güçlü frameworklerinden biri. Ancak üretim ortamına (production) almak, basit bir FTP yüklemesinden çok daha fazlasını gerektiriyor. Yanlış yapılandırılmış bir sunucu, uygulamanızın çökmesine veya güvenlik açıklarına neden olabilir. Neyse ki doğru adımları izlerseniz süreç tahmin ettiğinizden daha yönetilebilir. Biz de Saviorhost olarak yıllardır Node.js tabanlı projeleri VDS altyapımızda barındırıyoruz. Bu deneyimi sizinle paylaşacağım.
📋 Önemli Noktalar
- Next.js projeleri Node.js çalışma ortamı gerektirir; paylaşımlı hosting çoğu zaman yetersiz kalır.
- VDS üzerinde PM2 + Nginx + SSL üçlüsü en stabil üretim mimarisini oluşturur.
next buildkomutu ile aldığınız çıktı, sunucu kaynak kullanımını doğrudan etkiler.- Standalone mod kullanmak, gereksiz Node.js bağımlılıklarını azaltarak performansı artırır.
- Bu rehberdeki tüm komutlar Ubuntu 22.04/24.04 üzerinde test edilmiştir.

Next.js Projesi Yayınlamadan Önce Bilmeniz Gerekenler
Next.js uygulamasını canlıya almadan önce sunucunun teknik gereksinimlerini netleştirmek, ileride yaşanacak sorunların %70’ini ortadan kaldırır. 2026 yılı itibarıyla çoğu VDS sağlayıcısı varsayılan olarak Node.js desteği sunar ancak sürüm uyumluluğu ve kaynak yönetimi kritik öneme sahiptir.
Node.js Sürümü ve Sistem Gereksinimleri
Next.js 15 ve sonrası, Node.js 18.18 veya üzeri sürümleri zorunlu kılar. Ancak üretim ortamında Node.js 20 LTS veya 22 LTS kullanmanızı öneriyoruz. Çünkü LTS sürümleri uzun süreli güvenlik yamaları alır ve paket uyumluluk sorunları minimuma iner. VDS kaynakları açısından ise en az 2 GB RAM ve 2 vCPU ideal başlangıç noktasıdır. Eğer SSR (Server-Side Rendering) yoğun bir uygulamanız varsa 4 GB RAM öneriyoruz.
Önemli Not: Paylaşımlı hosting paketleri genellikle Node.js çalıştırmaz. Bu yüzden blank” rel=”noopener”>n8n & Node.js Hosting veya doğrudan bir VDS hizmeti gerekir. Eğer projeniz küçük ve statik ağırlıklıysa, blank” rel=”noopener”>linux hosting paketleri de statik export için kullanılabilir.
Üretim Modu ile Geliştirme Modu Arasındaki Fark
Geliştirme sırasında next dev komutu hızlı yeniden derleme için tasarlanmıştır. Ancak bu mod, sunucu kaynaklarını aşırı tüketir. Üretimde mutlaka next build ve next start komutlarını kullanmalısınız. Build sonrası oluşan .next klasörü optimize edilmiş dosyaları içerir. Bu sayede sayfa yükleme süreleri belirgin şekilde düşer.
İşin sırrı şurada: Build işlemini geliştirme makinenizde değil, her zaman sunucu üzerinde gerçekleştirin. Çünkü farklı işletim sistemlerinde derlenen native modüller uyumsuzluk yaratabilir.
Statik Export mu, SSR mı?
Next.js iki farklı yayınlama modu sunar. output: 'export' ile statik HTML dosyaları üretirsiniz. Bu dosyalar herhangi bir web sunucusunda (Nginx, Apache) çalışır. Ancak dinamik route’lar, API route’lar ve middleware gibi özellikler çalışmaz. SSR modunda ise bir Node.js sunucusu sürekli çalışır ve istekleri dinamik olarak işler.
| Özellik | Statik Export | SSR (Node.js Sunucu) |
|---|---|---|
| Barındırma | Herhangi bir web sunucusu | VDS / Node.js destekli hosting |
| API Routes | ❌ Desteklenmez | ✅ Tam destek |
| Dinamik Route | ❌ Sınırlı | ✅ Tam destek |
| Sunucu Kaynak Kullanımı | Düşük | Orta-Yüksek |
| Güncelleme Kolaylığı | Yeniden build + upload | PM2 reload |
Hangi modu seçeceğiniz projenizin ihtiyacına bağlı. Eğer sadece blog veya tanıtım sitesi yayınlayacaksanız statik export yeterli. Ancak kullanıcı girişi, canlı veri veya API entegrasyonu varsa SSR şart.
Önemli Not: Bu rehberin devamında SSR odaklı bir kurulum anlatacağız. Çünkü gerçek dünyada next js projesi yayınlama ihtiyacı duyanların büyük bölümü dinamik uygulamalar geliştiriyor.
Peki sunucu tarafına geçmeden önce nelere dikkat etmeliyiz? Bir sonraki bölümde VDS kurulumunu sıfırdan yapacağız.

VDS Sunucu Hazırlığı: Node.js ve PM2 Kurulumu
VDS sunucunuza SSH ile bağlandıktan sonra ilk iş Node.js ortamını kurmaktır. Ubuntu 22.04 veya 24.04 kullandığınızı varsayıyorum. Bu adımları birebir uygulayarak temiz bir kurulum yapabilirsiniz.
Adım 1: Node.js Kurulumu
NodeSource deposunu ekleyerek güncel LTS sürümünü yükleyelim. Aşağıdaki komutlar Node.js 20.x sürümünü kurar:
# NodeSource deposunu ekle
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
Node.js ve npm'i yükle
sudo apt install -y nodejs
Kurulumu doğrula
node -v
npm -v
Dikkat et: curl komutu çalışmazsa önce sudo apt install curl -y ile curl’ı yükleyin.
Adım 2: PM2 Kurulumu
PM2, Node.js uygulamalarını arka planda çalıştıran, otomatik yeniden başlatan ve log yönetimi sağlayan bir süreç yöneticisidir. Sunucu yeniden başladığında uygulamanızın otomatik ayağa kalkmasını istiyorsanız PM2 vazgeçilmezdir.
# PM2'yi global olarak yükle
sudo npm install -g pm2
PM2'nin sistem başlangıcında otomatik çalışmasını sağla
pm2 startup systemd
Çıkan komutu kopyalayıp çalıştır (sudo env PATH=... şeklinde olacak)
sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ubuntu --hp /home/ubuntu
PM2'yi kaydet
pm2 save
Bu adım tamamlandığında sunucunuz yeniden başlasa bile PM2 otomatik olarak devreye girecek ve kayıtlı uygulamalarınızı başlatacaktır. Sunucu uptime değerleri açısından bu kritik bir avantajdır.
Adım 3: Git ve Temel Araçlar
Projenizi sunucuya aktarmak için Git kullanabilirsiniz. Ayrıca build sürecinde bazı sistem kütüphaneleri gerekebilir. Aşağıdaki paketleri kurun:
sudo apt install -y git build-essential
Node.js native modüller için Python ve make gerekebilir
sudo apt install -y python3 make g++
Alternatif olarak dosyaları FTP ile sunucuya yükleyebilirsiniz. Ancak Git kullanmak hem hızlı hem de sürüm kontrolü sağlar.
Özetle: Node.js 20 LTS, PM2 ve Git kurulumu tamamlandı. Artık projenizi sunucuya taşıyabilir ve build edebilirsiniz. Sıradaki adım, Next.js projesini üretim için hazırlamak.
Ancak asıl kritik nokta bir sonraki adımda: Build optimizasyonu olmadan sunucu kaynakları boşa harcanır.

Next.js Projesini Build Etme ve Optimize Etme
Build işlemi, Next.js projesinin üretim ortamına hazır hale getirilmesidir. Bu aşamada yapılan hatalar, sunucuda bellek şişmesi ve yavaş yanıt süreleri olarak geri döner. Doğru yapılandırma ile bu sorunları kökten çözebilirsiniz.
Standalone Mod ile Build Almak
Next.js 13.4 ve sonrasında gelen output: 'standalone' özelliği, üretim dağıtımını inanılmaz kolaylaştırdı. Bu mod, uygulamanızı çalıştırmak için gereken minimum dosyaları ayrı bir klasöre kopyalar. Böylece sunucuya gereksiz node_modules dosyaları taşınmaz.
next.config.js dosyanızı şu şekilde güncelleyin:
/** @type {import('next').NextConfig} */
const nextConfig = {
output: 'standalone',
experimental: {
// Gerekirse buraya ek ayarlar
},
env: {
APIURL: process.env.APIURL,
},
};
module.exports = nextConfig;
Bu yapılandırma sonrası npm run build komutu, .next/standalone klasörünü oluşturur. Bu klasör, server.js dosyası ile birlikte bağımsız çalışabilir.
Build Komutunu Çalıştırma
Proje dizininize gidin ve aşağıdaki komutları sırasıyla çalıştırın:
# Proje dizinine git
cd /var/www/nextjs-uygulamaniz
Bağımlılıkları yükle (eğer ilk kez kuruluyorsa)
npm install
Build al
npm run build
Build tamamlandığında ekranda her route için boyut bilgilerini görürsünüz. Bu bilgiler, hangi sayfaların optimize edilmesi gerektiğini anlamanıza yardımcı olur. Örneğin, bir sayfanın First Load JS değeri 200 kB üzerindeyse, o sayfada code splitting yapmanız gerekebilir.
Çevre Değişkenleri (Environment Variables)
API anahtarları ve veritabanı bağlantı bilgileri asla kod içine gömülmemelidir. Bunun yerine .env.production dosyası kullanın. Bu dosyayı sunucuda oluşturun ve değerleri ekleyin:
# .env.production dosyası oluştur
nano .env.production
# Dosya içeriği örneği
API_URL=https://api.siteniz.com
DATABASE_URL=postgresql://user:password@localhost:5432/veritabani
NEXTPUBLICANALYTICS_ID=UA-12345678
Dikkat et: NEXTPUBLIC öneki taşıyan değişkenler tarayıcıya açılır. Hassas bilgileri bu önekle tanımlamayın.
Önemli Not: Standalone mod kullanmıyorsanız, sunucuya node_modules klasörünün tamamını kopyalamanız gerekir. Bu hem disk alanı israfına hem de güvenlik risklerine yol açar. Standalone modu mutlaka tercih edin.
Build hazır. Peki bu uygulamayı dış dünyaya nasıl açacağız? İşte tam burada Nginx devreye giriyor.
Nginx Ters Proxy Yapılandırması
Next.js uygulamanız belirli bir port üzerinde (örneğin 3000) çalışır. Ancak kullanıcıların bu porta doğrudan erişmesini istemeyiz. Nginx, gelen HTTP/HTTPS isteklerini 80 veya 443 portundan alıp 3000 portuna yönlendirir. Buna ters proxy (reverse proxy) denir.
Nginx Kurulumu
Ubuntu üzerinde Nginx kurmak oldukça basittir:
sudo apt update
sudo apt install -y nginx
Nginx durumunu kontrol et
sudo systemctl status nginx
Next.js İçin Nginx Yapılandırması
Yeni bir yapılandırma dosyası oluşturun:
sudo nano /etc/nginx/sites-available/nextjs-uygulamaniz
Aşağıdaki yapılandırmayı yapıştırın ve domain adınızı kendinize göre değiştirin:
server {
listen 80;
server_name sizin-domain.com www.sizin-domain.com;
# Gelen istekleri Next.js uygulamasına yönlendir
location / {
proxy_pass http://127.0.0.1:3000;
proxyhttpversion 1.1;
proxysetheader Upgrade $http_upgrade;
proxysetheader Connection 'upgrade';
proxysetheader Host $host;
proxycachebypass $http_upgrade;
proxysetheader X-Real-IP $remote_addr;
proxysetheader X-Forwarded-For $proxyaddxforwardedfor;
proxysetheader X-Forwarded-Proto $scheme;
# Zaman aşımı süreleri (uzun süren istekler için)
proxyconnecttimeout 60s;
proxysendtimeout 60s;
proxyreadtimeout 60s;
}
# Statik dosyalar için özel yapılandırma
location /_next/static/ {
proxy_pass http://127.0.0.1:3000;
proxysetheader Host $host;
expires 365d;
add_header Cache-Control "public, immutable";
}
# Büyük dosya yüklemeleri için limit
clientmaxbody_size 10M;
# Loglar
access_log /var/log/nginx/nextjs-access.log;
error_log /var/log/nginx/nextjs-error.log;
}
Bu yapılandırmayı kaydettikten sonra siteyi etkinleştirin:
# Siteyi etkinleştir
sudo ln -s /etc/nginx/sites-available/nextjs-uygulamaniz /etc/nginx/sites-enabled/
Yapılandırmayı test et
sudo nginx -t
Nginx'i yeniden yükle
sudo systemctl reload nginx
nginx -t komutu “syntax is ok” mesajı verirse yapılandırma hatasız demektir. Eğer hata alırsanız, hata mesajını dikkatlice okuyun. Çoğu zaman eksik noktalı virgül veya dosya yolu hatasıdır.
Neden Nginx Kullanmalıyız?
Bazı geliştiriciler doğrudan 80 portuna Node.js uygulamasını bağlamayı deniyor. Bu yaklaşım hem çalışır hem de yanlıştır. Nginx, SSL terminasyonu, statik dosya önbellekleme, istek sınırlama ve DDoS koruması gibi kritik görevleri üstlenir. Ayrıca NVMe SSD disk performansı ile birleştiğinde, statik dosyaların sunucudan inanılmaz hızlı gönderilmesini sağlar.
Özetle: Nginx, 80 portundan gelen istekleri Next.js uygulamanıza yönlendirir. Ayrıca statik dosyaları önbellekleyerek sunucu yükünü azaltır. Artık uygulamanız Nginx üzerinden erişilebilir durumda.
Ancak uygulamanın sürekli çalışmasını sağlamak için PM2 yapılandırmasına ihtiyacımız var. Bir sonraki bölümde bunu ele alacağız.
PM2 ile Next.js Uygulamasını Yönetme
Next.js uygulamanızı manuel olarak node server.js komutuyla başlatabilirsiniz. Ancak SSH oturumunu kapattığınızda uygulama kapanır. Ayrıca sunucu yeniden başlarsa uygulamanız otomatik ayağa kalkmaz. PM2 bu sorunların tamamını çözer.
PM2 ile Uygulamayı Başlatma
Standalone build sonrası oluşan .next/standalone klasörü içindeki server.js dosyasını PM2 ile başlatın:
# Proje dizinine git
cd /var/www/nextjs-uygulamaniz
PM2 ile başlat
pm2 start .next/standalone/server.js --name "nextjs-uygulamaniz" --node-args="--max-old-space-size=1024"
Durumu kontrol et
pm2 status
Logları görüntüle
pm2 logs nextjs-uygulamaniz
Not: --max-old-space-size=1024 değeri, Node.js’in kullanabileceği maksimum heap belleğini 1 GB ile sınırlar. Sunucunuzun RAM miktarına göre bu değeri ayarlayın. Örneğin 4 GB RAM için 2048 veya 3072 kullanabilirsiniz.
PM2 Ekosistem Dosyası Oluşturma
Daha yönetilebilir bir yapı için ecosystem.config.js dosyası oluşturmanızı öneriyorum. Bu dosya, tüm PM2 ayarlarını tek bir yerde toplar:
module.exports = {
apps: [
{
name: 'nextjs-uygulamaniz',
script: '.next/standalone/server.js',
instances: 1,
exec_mode: 'fork',
autorestart: true,
watch: false,
maxmemoryrestart: '1G',
env: {
NODE_ENV: 'production',
PORT: 3000,
HOSTNAME: '0.0.0.0',
},
error_file: '/var/log/pm2/nextjs-error.log',
out_file: '/var/log/pm2/nextjs-out.log',
merge_logs: true,
time: true,
},
],
};
Bu dosyayı proje dizinine kaydedin ve uygulamayı şu komutla başlatın:
pm2 start ecosystem.config.js
pm2 save
PM2 Alternatifleri: systemd vs nohup
PM2 en popüler seçenek olsa da, bazı ekipler systemd servislerini tercih eder. Hangi yöntemin size uygun olduğunu anlamak için aşağıdaki tabloyu inceleyin:
| Özellik | PM2 | systemd | nohup |
|---|---|---|---|
| Otomatik yeniden başlatma | ✅ Var | ✅ Var | ❌ Yok |
| Log yönetimi | ✅ Güçlü | ✅ journald | ❌ Manuel |
| Kolay kurulum | ✅ Çok kolay | ⚠️ Orta | ✅ Basit |
| Çoklu uygulama yönetimi | ✅ Mükemmel | ❌ Zayıf | ❌ Yok |
| Kaynak tüketimi | Düşük | Düşük | En düşük |
PM2, özellikle birden fazla Node.js uygulaması yönetenler için en pratik çözümdür. Saviorhost olarak biz de tüm Node.js projelerimizde PM2 kullanıyoruz. Eğer n8n & Node.js Hosting hizmetimizde olduğu gibi birden fazla otomasyon çalıştırıyorsanız, PM2’nin çoklu uygulama desteği hayat kurtarıcıdır.
Önemli Not: PM2’yi asla root kullanıcısıyla çalıştırmayın. Ayrı bir sistem kullanıcısı oluşturun ve uygulamanızı o kullanıcıyla çalıştırın. Bu, olası bir güvenlik ihlalinde sunucunun tamamının ele geçirilmesini önler.
Uygulamanız artık sağlam bir şekilde çalışıyor. Peki kullanıcıların güvenli bağlantı kurmasını nasıl sağlayacağız? İşte sıradaki adım SSL.
SSL Sertifikası ve Domain Bağlama
2026 yılında SSL sertifikası olmayan bir site, hem Google sıralamasında düşer hem de ziyaretçiler tarafından güvenilmez bulunur. Neyse ki Let’s Encrypt ile ücretsiz SSL sertifikası almak artık dakikalar sürüyor.
Certbot ile SSL Kurulumu
Certbot, Let’s Encrypt sertifikalarını otomatik olarak alıp yenileyen bir araçtır. Kurulumu için:
# Certbot ve Nginx eklentisini yükle
sudo apt install -y certbot python3-certbot-nginx
SSL sertifikası al ve Nginx yapılandırmasını otomatik güncelle
sudo certbot --nginx -d sizin-domain.com -d www.sizin-domain.com
Yenileme testini çalıştır
sudo certbot renew --dry-run
Certbot kurulum sırasında size e-posta adresi sorar ve yönlendirme tercihini sunar. HTTP’den HTTPS’e otomatik yönlendirme yapmasını seçin. Bu, SEO açısından da doğru bir tercihtir.
SSL Yapılandırması Sonrası Nginx Kontrolü
Certbot, Nginx yapılandırma dosyanıza otomatik olarak SSL satırları ekler. Dosyanın son hali şuna benzer:
server {
listen 443 ssl http2;
server_name sizin-domain.com www.sizin-domain.com;
ssl_certificate /etc/letsencrypt/live/sizin-domain.com/fullchain.pem;
sslcertificatekey /etc/letsencrypt/live/sizin-domain.com/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
location / {
proxy_pass http://127.0.0.1:3000;
proxyhttpversion 1.1;
proxysetheader Upgrade $http_upgrade;
proxysetheader Connection 'upgrade';
proxysetheader Host $host;
proxycachebypass $http_upgrade;
proxysetheader X-Real-IP $remote_addr;
proxysetheader X-Forwarded-For $proxyaddxforwardedfor;
proxysetheader X-Forwarded-Proto $scheme;
}
}
server {
listen 80;
server_name sizin-domain.com www.sizin-domain.com;
return 301 https://$host$request_uri;
}
Yapılandırmayı test edip Nginx’i yeniden yükleyin:
sudo nginx -t
sudo systemctl reload nginx
Statik IP ve DNS Ayarları
Domaininizin sunucunuza doğru yönlendiğinden emin olun. DNS yönetim panelinizden A kaydınızı sunucunuzun IP adresine yönlendirin. Eğer statik IP kullanıyorsanız, bu adres değişmeyeceği için SSL sertifikası ve DNS yapılandırması sorunsuz çalışır.
Özetle: SSL sertifikanız aktif ve HTTP’den HTTPS’e yönlendirme çalışıyor. Artık uygulamanız güvenli bir şekilde erişilebilir durumda. Ancak her şey yolunda gitmeyebilir; bir sonraki bölümde olası hataları ele alacağız.
Ama hepsi bu kadar değil. Gerçek dünyada karşılaşacağınız sorunlar, kurulumdan çok daha fazlasını içerir.
Yaygın Hatalar ve Kesin Çözümleri
Next js projesi yayınlama sürecinde en çok karşılaşılan hataları ve çözümlerini bu bölümde topladım. Bu hataları yıllar içinde defalarca gördük ve her birinin kesin çözümünü belgeledik.
502 Bad Gateway Hatası
Bu hata, Nginx’in Next.js uygulamasına bağlanamadığı anlamına gelir. En yaygın nedenler:
- Next.js uygulaması çalışmıyor (PM2’de durdurulmuş olabilir)
- Yanlış port numarası (örneğin uygulama 3001’de çalışıyor ama Nginx 3000’e yönlendiriyor)
- Uygulama başlatılırken hata oluştu
Çözüm için önce PM2 durumunu kontrol edin:
pm2 status
pm2 logs nextjs-uygulamaniz --lines 50
Eğer uygulama “errored” durumundaysa, loglarda hatanın nedenini görebilirsiniz. Çoğu zaman eksik çevre değişkeni veya yanlış dosya yolu sorunudur.
504 Gateway Timeout Hatası
Next.js uygulamanız isteğe zamanında yanıt veremediğinde bu hata oluşur. Özellikle uzun süren API istekleri veya veritabanı sorguları buna neden olur. Nginx yapılandırmanızdaki proxyreadtimeout değerini artırarak çözebilirsiniz:
location / {
proxy_pass http://127.0.0.1:3000;
proxyreadtimeout 120s;
proxysendtimeout 120s;
proxyconnecttimeout 60s;
}
JavaScript Heap Out of Memory
Node.js uygulamalarında en sık görülen hatalardan biridir. Varsayılan heap bellek sınırı 512 MB’dir. Büyük JSON işlemleri veya yoğun hesaplamalar bu sınırı aşabilir. Çözümü --max-old-space-size parametresini artırmaktır:
pm2 start .next/standalone/server.js --name "nextjs-uygulamaniz" --node-args="--max-old-space-size=2048"
Ancak bu sadece geçici bir çözümdür. Asıl sorun, uygulamanızın neden bu kadar bellek tükettiğini anlamaktır. Kod içinde bellek sızıntısı olabilir.
Statik Dosyalar Yüklenmiyor
Sayfa açılıyor ancak CSS ve JavaScript dosyaları yüklenmiyorsa, genellikle _next/static yolu yanlış yapılandırılmıştır. Standalone modda, statik dosyaların bulunduğu klasörü uygulama dizinine kopyalamanız gerekir:
# .next/static klasörünü standalone dizinine kopyala
cp -r .next/static .next/standalone/.next/static
public klasörünü de kopyala
cp -r public .next/standalone/public
Bu adımı atlarsanız, sayfalarınız stilsiz görünür ve konsolda 404 hataları alırsınız.
Port Çakışması
Sunucuda başka bir uygulama aynı portu kullanıyorsa, Next.js başlatılamaz. Port değiştirmek için PM2 ekosistem dosyasında PORT değerini değiştirin ve Nginx yapılandırmanızı buna göre güncelleyin.
Kritik Uyarı: Hata loglarını okumadan çözüm aramayın. /var/log/nginx/error.log ve pm2 logs çıktıları, sorunun kök nedenini %90 oranında net şekilde gösterir.
Bu hataların çoğunu önlemek için Express.js projelerini yayınlama rehberimizde anlattığımız sistemli yaklaşımı benimseyin. Ayrıca sunucu kaynaklarınızı düzenli izlemek, olası sorunları erkenden fark etmenizi sağlar.
Performans Optimizasyonu İpuçları
Yayınlama sonrası performans, kullanıcı deneyimini doğrudan etkiler. İşte birkaç pratik öneri:
- Statik dosyaları CDN’e taşıyın:
_next/staticdosyaları Cloudflare gibi bir CDN üzerinden sunulabilir. - Gzip/Brotli sıkıştırma: Nginx’te
gzip on;satırını ekleyerek yanıt boyutlarını küçültün. - Redis cache: Sık kullanılan veritabanı sorgularını Redis ile önbellekleyin.
- PM2 cluster mode: Çok çekirdekli sunucularda
instances: 'max'ile uygulamayı ölçeklendirin.
Peki tüm bu adımları uyguladıktan sonra ne yapmalısınız? İşte şimdi sonuca bağlıyoruz.
Sonuç: Next.js Projeniz Artık Canlıda
Bu rehberde next js projesi yayınlama sürecini adım adım inceledik. VDS sunucu hazırlığından SSL kurulumuna kadar tüm kritik aşamaları ele aldık. Unutmayın, doğru yapılandırılmış bir sunucu yalnızca uygulamanızı çalıştırmaz; aynı zamanda güvenliği, performansı ve sürdürülebilirliği de garanti eder.
Eğer bu adımları kendiniz uygulamak istemiyorsanız veya daha hızlı bir çözüm arıyorsanız, n8n & Node.js Hosting paketlerimiz tam size göre. AMD Ryzen 9 işlemciler ve NVMe SSD disklerle donatılmış altyapımızda Next.js uygulamalarınız dakikalar içinde yayına alınabilir. Üstelik KeyHelp paneli sayesinde tüm süreçleri görsel arayüzden yönetebilirsiniz.
Projenizi canlıya aldıktan sonra karşılaştığınız sorunları yorumlarda paylaşın. Deneyimlerinizi birlikte değerlendirelim.
Sıkça Sorulan Sorular
Next.js projesi paylaşımlı hostingde yayınlanır mı?
Çoğu paylaşımlı hosting paketi Node.js çalıştırmaz. Statik export kullanıyorsanız herhangi bir hostinge yükleyebilirsiniz. Ancak SSR, API route veya middleware kullanıyorsanız VDS veya Node.js destekli özel hosting gerekir. n8n & Node.js Hosting paketimiz bu ihtiyaca yönelik hazırlanmıştır.
Next.js uygulaması hangi portta çalışır?
Varsayılan olarak 3000 portunda çalışır. Ancak bu portu PM2 ekosistem dosyasında PORT değişkeniyle değiştirebilirsiniz. Nginx yapılandırmanızdaki proxy_pass adresini de aynı portla güncellemeniz gerekir.
Next.js build sonrası .next klasörü sunucuya yüklenmeli mi?
Evet, build işlemi sonucu oluşan .next klasörü üretim için gereklidir. Standalone mod kullanıyorsanız yalnızca .next/standalone klasörünü yüklemeniz yeterlidir. Ayrıca statik dosyalar için .next/static ve public klasörlerini de kopyalamanız gerekir.
PM2 olmadan Next.js uygulaması çalışır mı?
Çalışır ancak SSH oturumunu kapattığınızda uygulama kapanır. Ayrıca sunucu yeniden başladığında otomatik başlamaz. PM2, bu sorunları çözen en popüler araçtır. Alternatif olarak systemd servisi de kullanabilirsiniz.
Next.js projesi için ne kadar RAM gerekir?
Minimum 2 GB RAM öneriyoruz. SSR yoğun uygulamalar için 4 GB veya üzeri daha sağlıklıdır. Node.js heap belleğini --max-old-space-size parametresiyle sınırlayarak kaynak kullanımını kontrol edebilirsiniz.
SSL sertifikasını nasıl yenilerim?
Certbot, sertifikaları otomatik olarak yeniler. sudo certbot renew --dry-run komutuyla yenileme sürecini test edebilirsiniz. Çoğu sistemde bu işlem cron job ile günlük olarak çalışır.
Next.js uygulaması neden 502 hatası veriyor?
502 hatası, Nginx’in uygulamaya bağlanamadığı anlamına gelir. Önce pm2 status ile uygulamanın çalışıp çalışmadığını kontrol edin. Ardından Nginx yapılandırmasındaki port numarasının doğru olduğundan emin olun. Loglar sorunun kaynağını gösterecektir.






