Ana içeriğe geç

PM2 ile Ubuntu VPS Üzerinde Node.js Ortamı Kurulumu

PM2 ile Ubuntu VPS Üzerinde Node.js Ortamı Kurulumu

Bu rehberde ne öğreneceksiniz?

Bu rehber, Ubuntu tabanlı bir VPS üzerinde Node.js uygulamalarını PM2 ile üretime hazır hale getirmeyi anlatır.
Amaç, uygulamaların çökmeden çalışması, yeniden başlatılması ve çok çekirdeği verimli kullanmasıdır.


Teknik Özet

Bu rehber, Ubuntu VPS üzerinde PM2 kurulumu, Node.js uygulaması çalıştırma, cluster modu, otomatik başlatma, güvenlik ve izleme adımlarını kapsar.


PM2 Nedir?

PM2, Node.js uygulamaları için geliştirilmiş bir süreç yöneticisidir.
Uygulamaları arka planda çalıştırır ve sürekli çevrimiçi tutar.

Öne çıkan özellikler

  • Çökme sonrası otomatik yeniden başlatma
  • Sunucu açılışında otomatik çalışma
  • Çok çekirdekli cluster desteği
  • Log toplama ve izleme
  • Kesintisiz yeniden yükleme (reload)

Ön Gereksinimler

  1. Güncel Ubuntu sürümü yüklü bir VPS
  2. Sudo yetkisine sahip root olmayan kullanıcı
  3. Node.js ve npm (nvm önerilir)
  4. Basit bir Node.js uygulaması
  5. Aktif bir firewall (UFW)

1. PM2 Kurulumu

  1. PM2, npm üzerinden global olarak kurulur.
    Bu komut PM2’yi kullanıcı dizinine yükler.
npm install pm2 -g

  • Kurulumu doğrulamak için:

pm2 --version

2. Örnek Node.js Uygulaması Oluşturma

  1. Bu adımda basit bir Express uygulaması kurulur.

mkdir my-app
cd my-app
npm init -y
npm install express
  • Bu komutlar proje dizinini ve Express bağımlılığını oluşturur.

app.js Dosyası

  1. Bu kod basit bir HTTP sunucusu başlatır.

const express = require('express');
const app = express();
const PORT = 3000;

app.get('/', (req, res) => {
res.send('Hello from PM2!');
});

process.on('SIGINT', () => {
console.log('SIGINT alındı, uygulama kapatılıyor.');
process.exit(0);
});

app.listen(PORT, () => {
console.log(`Sunucu ${PORT} portunda çalışıyor`);
});

3. Uygulamayı PM2 ile Çalıştırma

  1. Bu komut uygulamayı arka planda başlatır.

pm2 start app.js
  • Uygulama artık terminal kapansa bile çalışır.

4. Temel PM2 Komutları

1. En sık kullanılan PM2 komutları aşağıdadır:

2. pm2 list → Çalışan uygulamaları listeler

3. pm2 logs app → Canlı logları gösterir

4. pm2 restart app → Uygulamayı yeniden başlatır

5. pm2 stop app → Uygulamayı durdurur

6. pm2 delete app → Uygulamayı siler


5. Cluster Modu ile Performans Artışı

  1. Tek process tek çekirdek kullanır. Cluster modu tüm CPU çekirdeklerini kullanır.

pm2 start app.js -i max
  • Bu komut her çekirdek için bir worker başlatır.

6. Kesintisiz Güncelleme (Zero Downtime)

  1. Kod güncellerken servis kesilmesini önler.

pm2 reload app
  • PM2 worker’ları tek tek yeniler.

7. Sunucu Yeniden Başlatıldığında Otomatik Çalıştırma

  1. Bu adım üretim için kritiktir.

pm2 startup

  • PM2’nin verdiği sudo komutunu çalıştırın. Ardından process listesini kaydedin:

pm2 save

8. ecosystem.config.js Kullanımı

  1. Komut satırı yerine yapılandırma dosyası önerilir.

module.exports = {
apps: [{
name: "my-app",
script: "./app.js",
instances: "max",
exec_mode: "cluster",
watch: false,
env_production: {
NODE_ENV: "production",
PORT: 3000
}
}]
};

Başlatmak için:


pm2 start ecosystem.config.js --env production

9. Log Yönetimi

  1. Loglar zamanla diski doldurur. Otomatik log döndürme önerilir.

pm2 install pm2-logrotate
  • Bu modül logları otomatik sınırlar.

10. Güvenlik İçin Öneriler

  1. Root kullanıcı ile çalıştırmayın

  2. UFW firewall aktif olsun

  3. Node.js portunu dış dünyaya açmayın

  4. Nginx ile reverse proxy kullanın

  5. Gizli anahtarları .env ile yönetin


11. Yaygın Sorunlar

  1. Uygulama sürekli çöküyor

pm2 logs app
  1. Logları inceleyin.

  2. Sunucu sonrası uygulama başlamıyor

  • pm2 startup çalıştırıldı mı

  • pm2 save yapıldı mı kontrol edin


Sıkça Sorulan Sorular (SSS)

1. PM2 ne işe yarar? Node.js uygulamalarını üretim ortamında güvenle çalıştırır.

2. PM2 Docker’ın yerini tutar mı? Hayır. PM2 süreç yönetir, Docker ortam izole eder.

3. Cluster modu şart mı? Çok çekirdekli sunucularda kesinlikle önerilir.

4. pm2 restart yerine neden reload? Reload kesintisiz güncelleme sağlar.


Sonuç

PM2, Ubuntu üzerinde Node.js uygulamalarını üretime hazır hale getirir. Cluster, otomatik başlatma ve log yönetimi büyük avantaj sağlar.

Yüksek performanslı Node.js projelerinizi Rabisu Bulut altyapısında güvenle çalıştırabilirsiniz.