Node.js ve PM2 ile Proje Yönetimi
Selamlar! Node.js projelerinde ve bot sistemlerinde uygulamaların çökmesini önlemek, bellek kullanımını sınırlandırmak ve sunucu yeniden başladığında servisleri otomatik ayağa kaldırmak için PM2 Process Manager en pratik çözümdür.
Bu rehberde, ecosystem.config.js yapılandırma dosyası kullanarak projelerinizi küme (cluster) modunda nasıl yöneteceğinizi ve sık kullanılan PM2 komutlarını inceleyeceğiz.
1. PM2 Kurulumu
PM2'yi sisteminize küresel (global) olarak kurmak için terminal veya CMD üzerinde şu komutu çalıştırın:
bashnpm install pm2 -g
İpucu (Windows): Klasör içindeyken
SHIFT + Sağ Tıkyapıp Komut İstemi (CMD) veya PowerShell açarak kurulum yapabilirsiniz.
2. Yapılandırma: ecosystem.config.js
Projenizin kök dizininde ecosystem.config.js adında bir dosya oluşturun ve aşağıdaki şablon kodu yapıştırın:
javascriptlet servers = "lulu"; module.exports = { apps: [ { name: servers + "-Mainframe", namespace: "Supervisor_Bots", script: 'index.js', watch: false, exec_mode: "cluster", max_memory_restart: "2G", cwd: "./Bots/Main" }, ] };
Parametre Detayları:
script: Uygulamanızın ana başlangıç dosyasının adını girin (örneğinindex.js).cwd: Uygulamanızın main dosyasının dosya yolunu girin (./Bots/Maingibi).exec_mode:"cluster"seçeneği ile uygulamanızı CPU çekirdeklerine bölerek yüksek performans sağlarsınız.max_memory_restart: Bellek kullanımı belirlediğiniz sınırı (ör.2G) aştığında sürecin otomatik yeniden başlatılmasını sağlar.
3. Temel PM2 Komutları
Gerekli düzenlemeleri yaptıktan sonra ecosystem.config.js ile işimiz tamamlanmış olur. Aşağıdaki komutlar ile süreçleri yönetebilirsiniz:
Sistemi Çalıştırma
bashpm2 start ecosystem.config.js
Log ve Çıktıları İzleme
bashpm2 log
Tüm Süreçleri Durdurma
bashpm2 kill
4. İpucu: .bat Dosyası İle Kullanım
Bunları .bat uzantılı şekilde tıkladığınızda otomatik çalışır hale getirmek isterseniz, proje klasörünüze start.bat dosyası oluşturup içerisine pm2 start ecosystem.config.js yazabilirsiniz. Sunucu açıldığında bat dosyasına tıklayarak tüm servislerinizi tek hamlede başlatabilirsiniz.
İyi kodlamalar! 🚀
