Node.js Projelerini PM2 ile Production'da Çalıştırmak: Panel Rehberi
Node.js ve Express projelerinizi VPS'te production'a almak için PM2 cluster mode, otomatik restart, memory limit ve log rotation ayarlarını panel üzerinden yapın.
#node.js
#pm2
#deploy
#express
#nestjs
VDS Panel Ekibi
Ürünü geliştiren ekip
~8 dk
okuma
Deploy
kategori
Node.js, tek thread üzerinde event loop ile çalışan bir runtime. Bu mimari API sunucuları için muazzam performanslıdır ama iki sınırı vardır: crash olursa süreç ölür, CPU çekirdek sayısı kadar paralel çalışmaz. PM2, bu iki sınırı aşmak için tasarlanmış bir process manager. Production Node.js deploy’ı için kullanılan araçların başında gelir.
Bu rehberde PM2’nin production’da ne yaptığını, hangi ayarlarını neden önemsediğinizi ve VDS Panel ile bu ayarları nasıl arayüzden yönetebildiğinizi anlatacağız.
Bir bakışta
99.9%
Uptime hedefi
4-8×
Cluster ile throughput
<1sn
Otomatik restart
0
Downtime reload
PM2 ne işe yarıyor?
PM2, Node.js süreçlerinizi “daemonize” eder. Yani:
Süreç çöktüğünde yeniden başlatır
Birden fazla süreç açıp yük dağıtır (cluster mode)
Log’ları dosyaya yazar ve rotate eder
Restart’lar arasında kesintisiz trafik yönetir
Memory/CPU izler, limitleri aşan süreci yeniden başlatır
systemd ile Node.js çalıştırmak da mümkün, ancak yukarıdaki özellikleri tek tek kurmanız gerekir.
Cluster mode neden önemli?
Node.js varsayılanda tek thread çalışır. 4 çekirdekli bir VPS’te bir Node sürecini çalıştırıyorsanız, %75 CPU kapasiteniz atıl durumda kalır. PM2 cluster mode, CPU çekirdek sayısı kadar worker süreci açar ve aralarında yük dağıtımı yapar:
pm2 start app.js -i max # max = CPU sayısı kadar instancepm2 start app.js -i 4 # 4 worker
4-8×
daha fazla throughput
4 çekirdekli VPS'te cluster mode ile tek instance moduna kıyasla.
Klasik kurulum vs panel üzerinden
Klasik
Terminal ile manuel PM2
npm install pm2 -g (global kurulum)
ecosystem.config.js yaz
pm2 start/stop/reload komutlarını öğren
pm2 logs ile log takibi
pm2 save + pm2 startup ile boot'ta başlatma
Güncelleme için SSH + manuel reload
Arayüz
VDS Panel ile
Proje ekle, Node.js seç
Cluster instance sayısını slider ile ayarla
Memory limit, auto-restart, log rotation otomatik
Canlı log stream panelde
Boot'ta otomatik başlat (zaten kurulu)
Git push → otomatik zero-downtime reload
Panel ile adım adım kurulum
01
Node.js projesini ekleyin
GitHub deposunu bağlayın ya da ZIP olarak yükleyin. Panel package.json'ı algılar, 'scripts.start' ya da belirttiğiniz entry point'i kullanır.
02
Cluster ayarını yapın
Instance sayısı için slider: 1 (fork mode) ile VPS'inizin CPU sayısı arasında. Çoğu API için 2-4 arası ideal.
03
Memory limit belirleyin
256MB, 512MB, 1GB gibi. Bu sınırı aşan worker otomatik restart olur. Memory leak tolere edilir, app çalışmaya devam eder.
04
Env değişkenleri girin
NODE_ENV=production, DATABASE_URL, API anahtarları. Git'e yazılmaz, panel secret vault'unda saklanır, runtime'da inject edilir.
05
Domain bağlayın
Özel alan adı veya subdomain. Panel Let's Encrypt sertifikasını otomatik alır, nginx reverse proxy'i 3000 portunuza yönlendirir.
PM2’nin en güçlü özelliklerinden biri graceful reload. Yeni kod deploy ettiğinizde:
PM2 yeni worker’ları başlatır
Yeni worker’lar dinlemeye başlar
Eski worker’ların mevcut istekleri bitmesini bekler (graceful shutdown)
Eski worker’lar kapanır
Kullanıcı hiçbir kesinti hissetmez. VDS Panel her deploy’u bu stratejiyle yapar.
Graceful shutdown sinyali
Node.js uygulamanız SIGINT veya SIGTERM sinyalini dinliyorsa, PM2 kapanırken uygulamanıza açık DB bağlantılarını kapatma, cache flush etme gibi temizlik işleri için 10 saniye süre verir. Panel bu süreyi varsayılan olarak ayarlar.
Memory sızıntılarına karşı savunma
Node.js memory leak’leri yaygındır; özellikle event listener unutulduğunda, global cache büyüdüğünde. PM2’nin max_memory_restart ayarı çözüm sunar:
Panel arayüzünde bu değer bir slider. 512M belirttiyseniz, bir worker 512MB’ı geçince PM2 onu sessizce yeniden başlatır. Diğer worker’lar trafiği karşılamaya devam eder.
Production'da DEV bağımlılıkları
Panel npm ci --production ile kurulum yapar, dev dependencies yüklenmez. devDependencies içindeki bir paketi runtime’da import ediyorsanız production build başarısız olur. Panel build log’unda bu hataları görürsünüz.
Log yönetimi
PM2 her worker için ~/.pm2/logs/<app>-out.log ve ~/.pm2/logs/<app>-error.log yazar. Zamanla bu dosyalar dolar. Panel, log rotation’ı otomatik aktif eder:
Dosya boyutu 100 MB’a ulaşınca rotate
5 eski dosya tutulur
Log’lar panel UI’ından canlı stream edilir (terminal açmadan)
Monitoring ve alertler
Panel her PM2 süreci için:
CPU ve memory grafiği canlı akar
Restart sayısı izlenir (çok restart = bug sinyali)
Response time telemetrisi (eğer express-status-monitor veya benzeri ekliyse)
CPU limit aşımında otomatik cpulimit daemon başlatma (komşu projeleri koruma)
Node.js framework’leri
VDS Panel şu framework’lerle test edilmiştir ve otomatik algılar:
Express, yaygın, hızlı, sade
NestJS, enterprise-grade, TypeScript odaklı
Fastify, ultra-hızlı, JSON-schema validation yerleşik
Koa.js, Express yaratıcılarının modern halefi
Hapi, konfigürasyon odaklı, plugin ekosistemi geniş
AdonisJS, Laravel benzeri MVC
Panel package.json’ınızı okuyup doğru framework’ü algılar, uygun start script’ini seçer.
Sonuç
PM2, Node.js production’ının olmazsa olmazı. Cluster mode, otomatik restart, memory limit, log rotation, zero-downtime reload, hepsi tek bir daemonla gelir. VDS Panel bu ayarları terminal komutu ezberlemeden arayüzden yönetmenizi sağlar.
Node.js projenizi canlıya almak için panel kurulumunu 8 dakikada tamamlayabilir, ilk projenizi iletişim formumuzdan demo talep ederek görebilirsiniz.