sunucuhataları
teknik çözüm merkezi
Ara Giriş Yap Üye Ol
🏠 Ana Sayfa 📚 Kurulum Rehberleri
Kategoriler
🌐 Web Sunucuları 🐧 İşletim Sistemleri 📦 Sanallaştırma & VPS 🖥️ Kontrol Panelleri 🔒 SSL & Güvenlik 📝 CMS & Uygulamalar 🗄️ Veritabanı 📧 Mail Sunucusu 🗨️ Forum ℹ️ Hakkımızda 📧 İletişim
Giriş Yap Üye Ol
Ana Sayfa İşletim Sistemleri AlmaLinux Kurulumu AlmaLinux Üzerinde Node.js LTS ve PM2 ile Uygul...
🔵 AlmaLinux Kurulumu

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.

📅 27 Mart 2025 👁 36 görüntülenme ⏱ 4 dk okuma
𝕏 Paylaş
📋 İçindekiler göster/gizle

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 save komutunu çalıştırdığınızdan emin olun.
  • 502 Bad Gateway: Node.js uygulamasının çalıştığını pm2 status ile kontrol edin; port numarasının Nginx yapılandırmasıyla eşleştiğinden emin olun.
  • Bellek yetersiz: max_memory_restart değerini düşürün ve bellek sızıntılarını pm2 monit ile tespit edin.

İlgili Makaleler

🤔 Bu kurulumda sorun mu yaşıyorsunuz?

Hata mesajınızı kopyalayıp foruma konu açın. Topluluğumuz size özel durumunuza göre yardımcı olacaktır.

🗨️ Foruma Katıl & Yardım Al
Etiketler: #almalinux #nodejs #pm2 #api

Yorumlar

Henüz yorum yok. İlk yorumu siz yapın!

Yorum Yap

Yorumunuz onaylandıktan sonra yayınlanır.