Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

Node.js uygulamasını production'da process manager (PM2) ile nasıl deploy eder ve monitor ederim?

devnix

Üye
Katılım
14 Mart 2026
Mesajlar
2
Merhaba arkadaşlar, bugün sizlere Node.js uygulamalarını canlı (production) ortama nasıl sağlam bir şekilde taşıdığımı ve uyurken bile nasıl huzur içinde monitor ettiğimi anlatacağım. Birkaç yıl önce, basit bir `node server.js` ile başlattığım uygulamam bir hata alıp durduğunda ve ben fark etmediğimde kullanıcılar siteye ulaşamıyordu. O gün, bir process manager'ın ne kadar hayati olduğunu anladım ve PM2 ile tanıştım. İşte benim kullandığım en temiz çözüm.

🔥 Neden Sadece "node app.js" Yetmez?

Eğer uygulamanızda beklenmedik bir hata oluşursa, process çöker ve uygulamanız durur. Kullanıcılar "Connection Refused" hatası alır. Ayrıca, multi-core bir sunucunuz varsa, tek bir process tüm CPU gücünü kullanamaz. İşte PM2 tam da bu noktada devreye giriyor: otomatik restart, log yönetimi, cluster modu ve daha nicesi.

📦 PM2 Kurulumu ve Temel Komutlar

İlk adım, PM2'yi global olarak kurmak. Sunucunuza SSH ile bağlandıktan sonra aşağıdaki komutu çalıştırın.

Bash:
npm install -g pm2

Kurulum tamamlandığında, artık uygulamanızı başlatabilirsiniz. Diyelim ki giriş dosyanız `server.js` olsun.

Bash:
pm2 start server.js

Bu kadar! Uygulamanız artarken çalışıyor. Process'leri listelemek, durdurmak veya yeniden başlatmak için şu komutları kullanıyorum:

Bash:
# Çalışan tüm uygulamaları listele
pm2 list

# Belirli bir uygulamayı durdur (id veya isim ile)
pm2 stop server

# Uygulamayı yeniden başlat
pm2 restart server

# Uygulamanın loglarını gerçek zamanlı takip et
pm2 logs server

⚙️ Production Ayarları için PM2 Ecosystem Dosyası

`pm2 start server.js` komutu temel ihtiyaçları karşılar ama production için daha fazla kontrol gerekir. Ben her projemin kök dizininde bir `ecosystem.config.js` dosyası oluşturuyorum. Bu dosya, tüm ayarlarımın tek kaynağı oluyor.

JavaScript:
module.exports = {
  apps: [{
    name: "benim-muhtesem-api", // Uygulamanın PM2'de görünecek ismi
    script: "./server.js", // Giriş noktası
    instances: "max", // Cluster modu: CPU çekirdek sayısı kadar process oluşturur.
    exec_mode: "cluster", // Yükü process'ler arasında dağıtır.
    autorestart: true, // Hata durumunda otomatik yeniden başlasın mı?
    watch: false, // Production'da dosya değişikliklerini izleme (false yapın!)
    max_memory_restart: "1G", // Process 1GB RAM'i geçerse restart at.
    env: {
      NODE_ENV: "development",
      PORT: 3000
    },
    env_production: {
      NODE_ENV: "production",
      PORT: 8080 // Production'da farklı port kullanabilirsiniz.
    }
  }]
};

Bu dosyayı oluşturduktan sonra, production ortamında start komutunu şu şekilde veriyorum:

Bash:
pm2 start ecosystem.config.js --env production

📊 Monitor Etme ve Log Yönetimi

PM2'nin en sevdiğim özelliklerinden biri de log yönetimi. Tüm console.log ve hata mesajlarınız otomatik olarak `~/.pm2/logs/` dizininde kaydedilir. `pm2 logs` komutu ile canlı takip edebilirsiniz.

Ayrıca, daha detaylı bir monitor paneli kurmak isterseniz, PM2'nin ücretsiz modülü `pm2-monit` ile basit bir arayüz kullanabilir veya daha gelişmiş bir çözüm için `pm2` ile birlikte `keymetrics.io`'yu entegre edebilirsiniz. Ben genelde loglara bakmak yetiyor.

🚀 Sunucu Başlangıcında PM2'yi Otomatik Başlatma

En kritik noktalardan biri! Sunucunuz restart yerse, PM2 process'leri de otomatik olarak başlasın istersiniz. Bunun için `startup` komutunu kullanıyoruz. PM2, mevcut init sisteminizi (systemd, upstart vb.) otomatik tespit edip gerekli script'i oluşturacaktır.

Bash:
# Startup script'ini oluştur
pm2 startup

# Şu anki process listesini kaydet (ki sunucu restartında aynı şekilde başlasın)
pm2 save

Artık sunucunuz her başladığında, PM2 ve kaydettiğiniz tüm uygulamalar otomatik olarak hayata dönecek.

Sonuç olarak, PM2 sayesinde Node.js uygulamalarımı deploy etmek ve izlemek artık çocuk oyuncağı. Cluster modu ile performansı maksimuma çıkarıyor, logları merkezi bir yerden takip ediyor ve uygulamamın sürekli ayakta kalmasını sağlıyorum.

Peki ya siz? Production'da Node.js uygulamalarınızı yönetmek için PM2 dışında farklı bir araç veya kendi geliştirdiğiniz bir yöntem kullanıyor musunuz? Yaşadığınız ilginç deployment hikayelerinizi yorumlarda paylaşın, beraber öğrenelim!
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri