Hoşgeldin Misafir

PM2 Nedir? PM2 ile NodeJS Process Yönetimi

Sarraf

Sarraf

THS-SARRAF
Belarus
12 Ara 2020
2,111 Mesaj
TIM Görevleri
1

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
PM2 Nedir? PM2 ile NodeJS Process Yönetimi

Merhabalar!​

Ben Sarraf, Lojistik grup adına paylaşılan PM2 Nedir? PM2 ile NodeJS Process Yönetimi makalesinde sizi görmekten mutluyum.

Eğer hazırsanız, başlayalım!

PM2 Nedir?, PM2 projelerinizi kolayca başlatmanıza, durdurmanıza, takip etmenize ve sürekli olarak çalışmalarını sağlamanıza olanak tanır. PM2, uygulamalarınız çökse dahi otomatik bir şekilde yeniden başlatarak kesintisiz bir şekilde uygulamalarınızın çalışmasını sağlar. Uygulamalarınızın loglarını toplu bir şekilde kontrol edebilir hata ayıklamanızı bu şekilde kolaylaştırabilmektedir.

Docker Gerekli ile Ortamın Oluşturulması.

PM2 kurulumuna geçmeden önce hızlıca ve kolayca gerekli ortamı oluşturabilmek için Dockerfile ile NodeJs kurulu server ayağa kaldıracağız.

Öncelikle test amaçlı basit bir Nodejs uygulaması yazalım.
Kod:
// app.js
const http = require('http');

const hostname = '0.0.0.0';
const port = 3000;

const server = http.createServer((req, res) => {
  res.statusCode = 200;
  res.setHeader('Content-Type', 'text/plain');
  res.end('Hello World from Node.js!\\n');
});

server.listen(port, hostname, () => {
  console.log(`Server running at <http://$>{hostname}:${port}/`);
});

Daha sonra Dockerfile dosyamızı yazalım.

Kod:
FROM node:lts
WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]

package.json dosyamızı oluşturuyoruz.

Kod:
{
    "name": "docker-node-app",
    "version": "1.0.0",
    "description": "Simple Node.js app",
    "main": "app.js",
    "scripts": {
      "start": "node app.js"
    },
    "dependencies": {}
  }

Şimdi Docker container’ı oluşturup çalıştıracağız.

Kod:
docker build -t node-app .

Image oluştu.

image-40-1024x172.png
Docker imageleri kontrol ettiğimizde geldiğini görüyoruz.

image-1.webp
Docker run komutu ile containerimizi ayağa kaldırıyoruz.

Kod:
docker run -d -p 3000:3000 --name node-app-container node-app

Başarılı bir şekilde çalıştığını görüyoruz.

image-39-1024x201.png
Portumuzu kontrol ettiğimizde de mesajımız bizi karşılıyor.

image-1-1-1024x135.png

PM2 Kurulumu

Yukarıda gerekli ortamımızı oluşturmuştuk. Şimdi ise container içerisine girerek PM2 kurulumunu gerçekleştirelim.

Komutu ile container’a giriş yapalım.

Kod:
docker exec -it node-app-container bash

Komutu ile PM2 yüklüyoruz.

Kod:
npm install -g pm2

image-2-1-1024x393.png
Kurulduktan sonra uygulamamızı PM2 ile başlatabiliriz. Uygulama ana dizininde aşağıdaki başlatma komutunu çalıştırıyoruz.

Kod:
pm2 start app.js

image-3-1-1024x393.png

Kod:
pm2 list


Komutu ile mevcut çalışan uygulamalarımızı listeleyebiliriz.

Burada uygulamamızın status durumu errored olarak gözüküyor. Loglarını kontrol ederek sorunu tespit edebiliriz.

image-4-2-1024x247.png

Kod:
pm2 logs app


Komutu ile loglarımızı kontrol ettiğimizde portun kullanıldığını görüyoruz. Sunucumuzda farklı bir basit uygulamalar oluşturarak PM2 ile başlatalım.

image-5-1-1024x397.png
3 tane farklı portları kullanan bir app oluşturduk. Bunları PM2 ile başlatarak kontrol edeceğiz.

Kod:
pm2 start app1.js

Aşağıdaki görselde görüldüğü üzere app1 uygulamamız başlatıldı ve online durumda. Diğer uygulamalarımızı başlatalım.

image-6-1-1024x246.png
Kod:
pm2 list

komutu ile baktığımızda 3 uygulamamız çalışır durumda.

image-7-1-1024x246.png
PM2 kurulumunu başarılı bir şekilde gerçekleştirdik.

PM2 Monit

Kod:
pm2 monit

komutu ile uygulamalarımızı anlık olarak izleyebiliriz.

Sol tarafta uygulamalarımız gözüküyor. Sağ tarafta ise o uygulamaya ait loglarımızı görüntüleyebilmekteyiz. Aşağı ve yukarı ok işaretleri ile geçiş yapabilmekteyiz.

image-8-1-1024x554.png
Sadece logları görüntülemek için pm2 logs komutunu kullanıyoruz.

image-9-1-1024x350.png
Sadece bir uygulamaya ait log dosyalarını görüntülemek için aşağıdaki komut kullanılabilir.

Kod:
pm2 logs app1 (uygulama adı)

image-10-1-1024x184.png

Uygulama Yönetimi

Mevcutta çalışan tüm uygulamaları durdurmak için: pm2 stop all komutu kullanılabilir.

image-11-1-1024x184.png
pm2 start all komutu ile tüm uygulamalar tekrar başlatılabilir.

image-12-1-1024x184.png
Sadece belirli bir uygulamayı durdurmak için pm2 stop <UygulamaAdı> verilmesi yeterlidir.

Otomasyon ve Dağıtım

  • Otomatik Yeniden Başlatma: PM2, uygulamalarınızın çökmesi durumunda otomatik olarak yeniden başlatılmasını sağlar.
  • Startup Scriptleri: PM2’nin uygulamaları sistem açılışında başlatmasını sağlamak için startup scriptleri oluşturabilirsiniz.
  • PM2 Runtime: PM2’nin “runtime” versiyonunu kullanarak, Node.js uygulamalarını bir Docker konteyneri içinde çalıştırabilirsiniz.
  • Keymetrics Entegrasyonu: PM2’yi Keymetrics ile entegre ederek daha ayrıntılı performans ve izleme bilgileri alabilirsiniz.

Makalemizi okuduğunuz için teşekkür ederiz!
Yorum yapmayı ve beğenmeyi unutmayın!

LOJİSTİK TİM SUNDU
btn1pyf.png