PM2 Süreç Yönetimi Hızlı Başlangıç
PM2, uygulamanızı yönetmenize ve çevrimiçi tutmanıza yardımcı olacak bir daemon süreç yöneticisidir. PM2 ile başlamak oldukça basittir, NPM aracılığıyla yüklenebilen basit ve sezgisel bir CLI olarak sunulmaktadır.
Kurulum
En son PM2 sürümünü NPM veya Yarn ile yükleyebilirsiniz:
$ npm install pm2@latest -g
# veya
$ yarn global add pm2
Node.js ve NPM yüklemek için NVM kullanabilirsiniz.
Uygulama Başlatma
Uygulamanızı başlatmanın, daemonize etmenin ve izlemenin en basit yolu şu komutu kullanmaktır:
$ pm2 start app.js
Ya da başka bir uygulamayı kolayca başlatabilirsiniz:
$ pm2 start bashscript.sh
$ pm2 start python-app.py --watch
$ pm2 start binary-file -- --port 1520
CLI'ye geçirebileceğiniz bazı seçenekler:
# Uygulama adını belirt
--name <app_name>
# Dosyalar değiştiğinde uygulamayı izleme ve yeniden başlatma
--watch
# Uygulama yeniden yüklemesi için bellek eşiğini belirleme
--max-memory-restart <200MB>
# Günlük dosyasını belirt
--log <log_path>
# Script'e ekstra argümanlar geç
-- arg1 arg2 arg3
# Otomatik yeniden başlatmalar arasındaki gecikme
--restart-delay <delay in ms>
# Günlükleri zamana göre önekleme
--time
# Uygulamayı otomatik olarak yeniden başlatma
--no-autorestart
# Zorunlu yeniden başlatma için cron belirt
--cron <cron_pattern>
# Uygulama günlüğüne bağlan
--no-daemon
Gördüğünüz gibi, PM2 ile uygulamanızı yönetmek için birçok seçenek mevcut. Kullanım durumunuza bağlı olarak bunları keşfedeceksiniz.
Süreçleri Yönetme
Uygulama durumunu yönetmek basittir; işte komutlar:
$ pm2 restart app_name
$ pm2 reload app_name
$ pm2 stop app_name
$ pm2 delete app_name
app_name
yerine şunları geçebilirsiniz:
all
tüm süreçler üzerinde işlem yapmak içinid
belirli bir süreç kimliği üzerinde işlem yapmak için
Uygulama durumunu kontrol etmek için yukarıdaki komutları kullanmak uygulamanızın güvenilirliğini artırır.
Durumu, günlükleri, metrikleri kontrol etme
Artık bu uygulamayı başlattığınıza göre, durumunu, günlüklerini, metriklerini kontrol edebilir ve hatta çevrimiçi gösterge panosunu pm2.io ile alabilirsiniz.
Yönetilen Uygulamaların Listesi
PM2 tarafından yönetilen tüm uygulamaların durumunu listeleyin:
$ pm2 [list|ls|status]
Günlükleri Görüntüleme
Gerçek zamanlı olarak günlükleri görüntülemek için:
$ pm2 logs
Eski günlüklere bakmak için:
$ pm2 logs --lines 200
Terminal Tabanlı Gösterge Paneli
İşte terminalinize tam olarak uyan bir gerçek zamanlı gösterge paneli:
$ pm2 monit
pm2.io: İzleme ve Tanı Web Arayüzü
Web tabanlı gösterge paneli, çapraz sunucularla tanı sistemi:
$ pm2 plus
Küme Modu
Node.js uygulamaları için PM2, her bir başlatılan süreç arasında tüm HTTP[s]/Websocket/TCP/UDP bağlantılarını paylaşacak otomatik bir yük dengeleyici içerir.
Küme modunda bir uygulamayı başlatmak için:
$ pm2 start app.js -i max
Küme moduyla ilgili daha fazla bilgi için buradan
okuyun.
Ekosistem Dosyası
Birden fazla uygulamayı yönetmek için "Ekosistem Dosyası" adı verilen bir yapılandırma dosyası da oluşturabilirsiniz. Ekosistem dosyası oluşturmak için:
$ pm2 ecosystem
Bu, bir ecosystem.config.js dosyası oluşturacaktır:
module.exports = {
apps : [{
name: "app",
script: "./app.js",
env: {
NODE_ENV: "development",
},
env_production: {
NODE_ENV: "production",
}
}, {
name: 'worker',
script: 'worker.js'
}]
}
Ve bunu kolayca başlatabilirsiniz:
$ pm2 start ecosystem.config.js
Uygulama bildirimi hakkında daha fazla bilgi için buradan
okuyun.
Başlangıç betiği ayarlama
Sunucu yeniden başlatıldığında yönettiğiniz süreçlerle birlikte PM2'nin yeniden başlaması kritik öneme sahiptir. Bunu çözmek için aktif bir başlangıç betiği oluşturmak için şu komutu çalıştırın:
$ pm2 startup
Ve otomatik yeniden doğuş için bir süreç listesini dondurmak için:
$ pm2 save
Başlangıç betiği oluşturucu hakkında daha fazla bilgi için buradan
okuyun.
Değişikliklerde uygulamayı yeniden başlatma
--watch
seçeneği ile oldukça kolaydır:
$ cd /path/to/my/app
$ pm2 start env.js --watch --ignore-watch="node_modules"
Bu, mevcut dizindeki + tüm alt klasörlerde herhangi bir dosya değişikliğini izleyecek ve uygulamayı yeniden başlatacak ve node_modules
klasöründeki herhangi bir değişikliği göz ardı edecektir --ignore-watch="node_modules"
.
Yeniden başlatılan uygulama günlüklerini kontrol etmek için pm2 logs
komutunu kullanabilirsiniz.
Uygulama otomatik olarak yeniden başlatıldığında, geçmiş günlükleri analiz etmek için pm2 logs
komutunu kullanmayı unutmayın.
PM2'yi Güncelleme
Bu durumu basit hale getirdik; sürümler arasında kırıcı bir değişiklik yoktur ve prosedür oldukça açıktır:
npm install pm2@latest -g
Ardından, bellek içindeki PM2'yi güncelleyin:
pm2 update
Kısa Not Defteri
Bilmeniz gereken bazı komutlar burada. Bunları bir örnek uygulama ile veya geliştirme makinenizdeki mevcut web uygulamanızla deneyin:
# Fork modu
pm2 start app.js --name my-api # Süreç adlandırma
# Küme modu
pm2 start app.js -i 0 # Mevcut CPU'lara bağlı maksimum süreçleri yükleyecek
pm2 start app.js -i max # Yukarıdakinin aynısı, ancak kullanımdan kaldırıldı.
pm2 scale app +3 # `app`'i 3 işçi ile ölçeklendirir
pm2 scale app 2 # `app`'i toplam 2 işçi ile yukarı veya aşağı ölçeklendirir
# Listeleme
pm2 list # Tüm süreç durumunu görüntüle
pm2 jlist # Süreç listesini ham JSON olarak yazdır
pm2 prettylist # Süreç listesini güzelleştirilmiş JSON olarak yazdır
pm2 describe 0 # Belirli bir süreç hakkında tüm bilgileri görüntüle
pm2 monit # Tüm süreçleri izleme
# Günlükler
pm2 logs [--raw] # Tüm süreçlerin günlüklerini akışta görüntüle
pm2 flush # Tüm günlük dosyalarını temizle
pm2 reloadLogs # Tüm günlükleri yeniden yükle
# Eylemler
pm2 stop all # Tüm süreçleri durdur
pm2 restart all # Tüm süreçleri yeniden başlat
pm2 reload all # 0s kesinti ile yeniden yükleme (AĞ UYGULAMALARI için)
pm2 stop 0 # Belirli süreç kimliğini durdur
pm2 restart 0 # Belirli süreç kimliğini yeniden başlat
pm2 delete 0 # Süreci pm2 listesinden kaldırır
pm2 delete all # Tüm süreçleri pm2 listesinden kaldırır
# Çeşitli
pm2 reset <process> # Meta verileri sıfırla (yeniden başlatma süresi...)
pm2 updatePM2 # Bellek içindeki pm2'yi güncelle
pm2 ping # pm2 daemon'ın başlatıldığından emin ol
pm2 sendSignal SIGUSR2 my-app # Script'e sistem sinyali gönder
pm2 start app.js --no-daemon
pm2 start app.js --no-vizion
pm2 start app.js --no-autorestart
Sırada Ne Var?
Tüm uygulamanızın davranış seçeneklerini bir JSON yapılandırma dosyası içinde nasıl bildireceğinizi öğrenin.
Güvenilirliği artırmak için temiz durdurma ve yeniden başlatma yöntemini öğrenin.
Üretim uygulamalarınızı kolayca dağıtma ve güncelleme yöntemini öğrenin.
Üretim uygulamalarınızı PM2.io ile izleyin.
PM2'yi nasıl güncelleyebilirim
En son pm2 sürümünü yükleyin:
npm install pm2@latest -g
Ardından, bellek içindeki PM2'yi güncelleyin:
pm2 update