Node.js uygulamanızı konsoldan node app.js yazıp çalıştırdınız, her şey harika. Akşam oldu, bilgisayarınızı kapattınız, ssh oturumu koptu ve uygulamanız gümledi! Ya da RAM yetmediği için kodunuz bir hatayla durdu ve öylece kaldı. PM2 (Process Manager) ile node motorlarını nasıl sonsuz bir döngüde tutacağımızı işliyoruz.
PM2 Nedir? Neden İhtiyacımız Var?
NodeJs doğası gereği Single Threaded (Tek Çekirdekli) çalışan ve SSH açık olduğu sürece "ayakta kalan" bir script dilidir.
PM2 (Gelişmiş İşlem Yöneticisi), bu scripti alıp Arkaplanda (Daemon) sonsuza kadar yaşatan, program kod hatasından dolayı (Örn: Veritabanı parse hatası) çökse bile saniyenin onda biri hızında kendi kendini yeniden başlatan (Auto-Restart) ve log tutan bir mucizedir.
VDS (Ubuntu) Sunucuda PM2 Kurulumu
NPM kütüphanesini kullanarak PM2'yi global (-g) olarak sunucumuza kazandıralım:
npm install pm2 -g
PM2 tüm sunucuya saniyeler içinde mal olur, artık sihir başlıyor.
Uygulamayı Doğru Başlatmak
Eskiden terminalde node server.js diyorsanız artık bunu silin ve sitenizin klasörüne girip şunu yapın:
pm2 start server.js --name "Arayuz-API"
Artık karşınıza şık renkli bir tablo gelecek. Uygulamanızın ID, memory kullanımı (RAM), işlemci harcamasını tek sütunda görebilirsiniz.
Kapanıp Açılan Sunucuda Otomatik İşe Başlama
Sunucunuza bir Reboot (yeniden başlatma) attınız. PM2 uygulamanızı saklar ancak sunucu açıldığında kendiliğinden başlamazsa uygulamanız yine ölü doğar. İşletim sistemine PM2'yi "Başlangıçta çalışacaklar" listesine ekletmelisiniz:
- Konsola
pm2 startupyazın. - PM2 size oldukça uzun bir komut kopyalayıp ekranda sunar.
- Bu komutu (Örn. sudo env PATH=$PATH...) kopyalayıp terminale yapıştırın ve Enter'a basın.
- Ardından her şey hazır olunca durumu kaydetmek için kilit tetiğini çekin:
pm2 save
İşte bu kadar! Artık VDS'inizin fişini çekip taksanız bile PM2 açılışla beraber "Arayuz-API" projenizi geri canlandıracaktır.
🚀 Node.js Cluster Kurmak İçin Canavar VDS'ler
PM2'in cluster (Salkım) modülünü tetiklediğinizde `pm2 start app.js -i max` komutu ile NodelJs sunucudaki TÜM çekirdekleri kopyalayarak sömürür. HazalHost Performans Serisi (Ryzen 9) Çok çekirdekli VDS sunucularında Express.js / Socket.io projeleriniz milyonluk hitlerde bile çökmez.
Günlük Hayat Kurtaran PM2 Komutları
Uygulamalarınız yayındayken ezbere bilmeniz gereken listeye göz atın:
pm2 logs: Uygulamalarınızın "console.log" ile bastırdığı her şeyi anlık olarak terminalden radar gibi izlemenizi sağlar.pm2 monit: Terminali bırakıp harika bir "Grafikli İki Pencere" arayüzü açar (Htop benzeri).pm2 restart Arayuz-API: Proje kodlarınızda güncelleme yaptınız diyelim, sitenin kodu sıfırdan okuması için resetler.pm2 stop all: Her şeyi kapatır ama silmez. İstediğiniz zaman start all yapabilirsiniz.
Sonuç
Screen açarak işleri background'a alma devri Linux sunucularda tamamen bitti. Eğer profesyonel NodeJs, Python (Gunicorn bile çalıştırır) veya PHP script tetikleyecekseniz sunucunuzun ilk paketini PM2 ile indirmelisiniz.