Node.js Uygulaması PM2 ile Nasıl Çalıştırılır? PM2 Kurulum ve Kullanım Rehberi
Node.js uygulamasını sunucuda sürekli çalışır durumda tutmak için PM2 process manager kullanılabilir. PM2 ile uygulama arka planda çalıştırılabilir, yeniden başlatılabilir, logları görüntülenebilir ve sunucu yeniden açıldığında uygulamanın otomatik başlaması yapılandırılabilir.
Özellikle VPS üzerinde çalışan Node.js web siteleri ve API servislerinde PM2 sık kullanılan çözümlerden biridir.
1. Node.js ve npm kurulumunu kontrol edin
Öncelikle sunucuda Node.js ve npm'in çalıştığını doğrulayın:
node -vnpm -vSürüm bilgileri görüntüleniyorsa sonraki adıma geçebilirsiniz.
2. PM2 kurulumu
PM2 npm üzerinden global olarak kurulabilir:
npm install pm2 -gKurulum tamamlandıktan sonra:
pm2 -vkomutuyla PM2'nin çalıştığını kontrol edin.
Yetki hatası alırsanız doğrudan rastgele izin değişiklikleri yapmak yerine Node.js ve npm'in sunucuda nasıl kurulduğunu kontrol edin.
3. Proje klasörüne geçin
Node.js uygulamanızın bulunduğu dizine gidin:
cd /proje/klasoruUygulamanın normalde hangi dosyayla başlatıldığını belirleyin.
Örneğin:
app.jsserver.jsindex.jsgibi bir başlangıç dosyası olabilir.
4. Node.js uygulamasını PM2 ile başlatın
Başlangıç dosyanız
server.js ise:pm2 start server.jskomutunu kullanabilirsiniz.
Uygulamaya özel bir isim vermek isterseniz:
pm2 start server.js --name uygulamamşeklinde başlatabilirsiniz.
İsim vermek, aynı sunucuda birden fazla Node.js uygulaması çalıştırıldığında yönetimi kolaylaştırır.
5. npm script ile çalışan uygulamayı PM2 ile başlatma
Bazı projeler doğrudan
node server.js yerine package.json içerisindeki bir script ile başlatılır.Örneğin:
npm startkullanılıyorsa PM2 üzerinden:
pm2 start npm --name uygulamam -- startşeklinde çalıştırılabilir.
Projede hangi komutun kullanılması gerektiğini
package.json içerisindeki scripts bölümünden kontrol edin.6. Çalışan uygulamaları görüntüleyin
PM2 tarafından yönetilen işlemleri görmek için:
pm2 listveya:
pm2 statuskullanabilirsiniz.
Burada uygulamanın:
- Adı
- Durumu
- Process ID
- Restart sayısı
- CPU kullanımı
- RAM kullanımı
gibi bilgiler görülebilir.
7. PM2 uygulamasını yeniden başlatma
Kod değişikliğinden sonra uygulamanızı yeniden başlatmanız gerekebilir.
İsme göre:
pm2 restart uygulamamveya process ID ile:
pm2 restart 0kullanılabilir.
Birden fazla uygulamanız varsa doğru işlemi yeniden başlattığınızdan emin olun.
8. Uygulamayı durdurma
PM2 işlemini geçici olarak durdurmak için:
pm2 stop uygulamamkullanabilirsiniz.
Bu işlem uygulamayı PM2 listesinden silmez.
Tekrar çalıştırmak için:
pm2 restart uygulamamkullanılabilir.
9. Uygulamayı PM2 listesinden silme
Bir uygulamayı PM2 yönetiminden tamamen kaldırmak için:
pm2 delete uygulamamkomutunu kullanabilirsiniz.
Bu işlem proje dosyalarınızı silmez. Yalnızca PM2 tarafından yönetilen process kaydını kaldırır.
10. PM2 loglarını görüntüleme
Uygulama çalışmıyorsa veya hata veriyorsa ilk bakılması gereken yerlerden biri loglardır.
Tüm PM2 loglarını görmek için:
pm2 logsBelirli bir uygulama için:
pm2 logs uygulamamkullanabilirsiniz.
Loglarda:
- Node.js hataları
- Veritabanı bağlantı sorunları
- Eksik environment değişkenleri
- Port problemleri
- Uygulama çökmeleri
gibi önemli bilgiler bulunabilir.
11. Son log satırlarını kontrol etme
Çok büyük bir log çıktısı yerine belirli sayıda son satırı görmek isterseniz:
pm2 logs uygulamam --lines 100gibi bir kullanım tercih edilebilir.
Bu özellikle hata teşhisinde daha okunabilir bir çıktı sağlar.
12. Sunucu yeniden başladığında uygulama otomatik açılsın
PM2 ile uygulamanın VPS yeniden başlatıldığında otomatik olarak çalışması sağlanabilir.
Öncelikle:
pm2 startupkomutunu çalıştırın.
PM2 size işletim sisteminize uygun ek bir komut gösterebilir. Terminalde verilen talimatı uygulayın.
Ardından mevcut process listesini kaydetmek için:
pm2 savekomutunu çalıştırın.
Böylece kaydedilmiş uygulamaların sistem açılışında tekrar başlatılması yapılandırılabilir.
13. pm2 save neden önemlidir?
PM2 ile yeni bir uygulama başlattıktan veya process listesini değiştirdikten sonra:
pm2 savekullanılması kayıtlı process listesini günceller.
Örneğin uygulamayı PM2 ile çalıştırmış ancak process listesini kaydetmemişseniz sunucu yeniden başlatıldığında beklediğiniz uygulama listesi geri gelmeyebilir.
14. Environment değişkenlerine dikkat edin
Node.js uygulamanız:
- Veritabanı adresi
- API anahtarı
- Port
- Secret key
- Uygulama ortamı
gibi environment değişkenleri kullanabilir.
PM2 altında çalışan uygulamanın gerekli değişkenlere erişebildiğinden emin olun.
.env dosyasında şifre veya API anahtarı bulunuyorsa bu dosyayı public GitHub repository'sine yüklemeyin.15. Kod güncelledikten sonra PM2
Sunucuda Git üzerinden yeni kod aldıysanız temel süreç projeye göre şu şekilde olabilir:
git pullnpm installpm2 restart uygulamamAncak her güncellemede
npm install çalıştırmak zorunlu değildir. package.json veya bağımlılıklar değişmişse gerekebilir.Veritabanı migration'ı kullanan projelerde gerekli migration adımları da ayrıca uygulanmalıdır.
16. PM2 sürekli restart atıyorsa
pm2 status ekranında restart sayısı sürekli yükseliyorsa uygulama açıldıktan hemen sonra çöküyor olabilir.Bu durumda:
pm2 logs uygulamamkomutuyla gerçek uygulama hatasını kontrol edin.
Yaygın nedenler:
- Eksik npm paketi
- Yanlış environment değişkeni
- Veritabanı bağlantı hatası
- Portun kullanımda olması
- Kod hatası
- Dosya yolu problemi
olabilir.
Sürekli restart yaşandığında PM2'yi tekrar tekrar yeniden kurmak yerine uygulamanın loglarına bakmak daha doğru yaklaşımdır.
17. PM2 ile Nginx aynı şey değildir
PM2 ve Nginx farklı görevler üstlenebilir.
PM2 Node.js uygulama process'ini yönetirken Nginx genellikle gelen HTTP/HTTPS trafiğini uygulamanın çalıştığı yerel porta yönlendiren reverse proxy olarak kullanılabilir.
Örneğin Node.js uygulaması:
127.0.0.1:3000üzerinde çalışırken Nginx alan adından gelen trafiği bu porta yönlendirebilir.
Bu yapı sayesinde SSL, alan adı ve web trafiği yönetimi Nginx tarafında gerçekleştirilebilir.
Temel PM2 komutları
En sık kullanılan komutlar:
pm2 start server.js --name uygulamampm2 statuspm2 logs uygulamampm2 restart uygulamampm2 stop uygulamampm2 delete uygulamampm2 startuppm2 savePM2 ile ilgili sorun yaşarsanız forumda yardım isterken Node.js sürümünüzü, PM2 sürümünüzü, kullandığınız başlangıç komutunu,
pm2 status durumunu ve pm2 logs içerisinde görünen hata mesajını paylaşmanız sorunun daha hızlı bulunmasını sağlar.