AlmaLinux Üzerinde Node.js LTS ve PM2 ile Uygulama Yayını
AlmaLinux 9 üzerinde Node.js LTS ve PM2 kurulumu. Nginx reverse proxy ile Node.js uygulamanızı yayına alın.
Node.js ve PM2 Nedir?
Node.js, Chrome'un V8 JavaScript motorunu temel alan olay güdümlü (event-driven) ve eşzamansız (asynchronous) bir JavaScript çalıştırma ortamıdır. Özellikle API sunucuları, gerçek zamanlı uygulamalar (chat, bildirimler) ve mikro servisler için idealdir. Node.js uygulamaları, geleneksel Apache/Nginx web sunucularının aksine kendi içlerinde HTTP sunucusu çalıştırır.
PM2 (Process Manager 2), Node.js uygulamaları için bir süreç yöneticisidir. PM2 ile uygulamalarınızı arka planda çalıştırabilir, sunucu yeniden başlatılınca otomatik başlamasını sağlayabilir, birden fazla CPU çekirdeğine yük dağıtabilir (cluster mode) ve log yönetimi yapabilirsiniz.
NodeSource Nedir?
NodeSource, Node.js'in belirli sürümlerini paket olarak sunan üçüncü taraf bir depodur. AlmaLinux'un kendi deposundaki Node.js sürümü genellikle güncel değildir; NodeSource, her zaman LTS (Long Term Support) ve güncel sürümleri sunar.
AlmaLinux 9 Üzerinde Node.js LTS Kurulumu
Adım 1: NodeSource Deposunu Ekleyin
# Node.js 22 LTS (en güncel LTS sürümü için)
curl -fsSL https://rpm.nodesource.com/setup_22.x | bash -
# Node.js 20 LTS (daha kararlı bir sürüm için)
# curl -fsSL https://rpm.nodesource.com/setup_20.x | bash -
Adım 2: Node.js'i Yükleyin
dnf install -y nodejs
# Sürümü doğrula
node -v
npm -v
Adım 3: Geliştirme Araçlarını Yükleyin
dnf groupinstall -y "Development Tools"
dnf install -y python3
PM2 Kurulumu ve Kullanımı
PM2'yi Yükleyin
npm install -g pm2
Uygulama Başlatma
# Basit başlatma
pm2 start app.js --name "myapp"
# Cluster mode (tüm CPU çekirdeklerini kullan)
pm2 start app.js --name "myapp" -i max
# NPM script ile
pm2 start npm --name "myapp" -- start
# Ecosystem dosyası ile (önerilen)
pm2 start ecosystem.config.js
ecosystem.config.js Örneği
module.exports = {
apps: [{
name: "myapp",
script: "./src/index.js",
instances: "max", // Tüm CPU çekirdekleri
exec_mode: "cluster",
env: {
NODE_ENV: "production",
PORT: 3000
},
log_date_format: "YYYY-MM-DD HH:mm:ss",
error_file: "./logs/err.log",
out_file: "./logs/out.log",
max_memory_restart: "500M"
}]
};
pm2 start ecosystem.config.js
PM2 Yönetim Komutları
pm2 list # Çalışan uygulamaları listele
pm2 monit # Gerçek zamanlı izleme
pm2 logs myapp # Log akışı
pm2 restart myapp # Yeniden başlat
pm2 stop myapp # Durdur
pm2 delete myapp # Kaldır
pm2 reload myapp # Sıfır kesinti yeniden başlatma (cluster modunda)
Otomatik Başlatma
# Sunucu başladığında PM2'yi otomatik başlat
pm2 startup systemd
# Çıktıdaki komutu root olarak çalıştırın (örn.)
# sudo env PATH=$PATH:/usr/bin /usr/lib/node_modules/pm2/bin/pm2 startup systemd -u ec2-user --hp /home/ec2-user
# Mevcut süreçleri kaydet
pm2 save
Nginx Reverse Proxy Yapılandırması
dnf install -y nginx
systemctl enable --now nginx
# /etc/nginx/conf.d/myapp.conf
upstream nodejs_backend {
server 127.0.0.1:3000;
keepalive 64;
}
server {
listen 80;
server_name example.com www.example.com;
location / {
proxy_pass http://nodejs_backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_cache_bypass $http_upgrade;
}
# Statik dosyalar (opsiyonel)
location /static/ {
alias /var/www/myapp/public/;
expires 30d;
}
}
nginx -t && systemctl reload nginx
# Güvenlik duvarında HTTP ve HTTPS izni ver
firewall-cmd --permanent --add-service=http --add-service=https
firewall-cmd --reload
Sık Karşılaşılan Sorunlar
- EACCES hatası (port 80): Node.js uygulamanızı 80 portunda çalıştırmaya çalışmayın; Nginx'i reverse proxy olarak kullanın.
- PM2 otomatik başlamıyor:
pm2 savekomutunu çalıştırdığınızdan emin olun. - 502 Bad Gateway: Node.js uygulamasının çalıştığını
pm2 statusile kontrol edin; port numarasının Nginx yapılandırmasıyla eşleştiğinden emin olun. - Bellek yetersiz:
max_memory_restartdeğerini düşürün ve bellek sızıntılarınıpm2 monitile tespit edin.
İlgili Makaleler
Yorumlar
Henüz yorum yok. İlk yorumu siz yapın!