Ana içeriğe geç

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çin
  • id belirli bir süreç kimliği üzerinde işlem yapmak için
ipucu

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]

https://i.imgur.com/LmRD3FN.png

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

https://i.imgur.com/xo0LDb7.png

pm2.io: İzleme ve Tanı Web Arayüzü

Web tabanlı gösterge paneli, çapraz sunucularla tanı sistemi:

$ pm2 plus

https://i.imgur.com/sigMHli.png

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.

bilgi

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