Node.js + PM2 + Nginx
Sunucu Yönetimi

Node.js Uygulamasını PM2 ve Nginx ile Yayına Alma

Node.js uygulamanızı Ubuntu VDS'e kurun, PM2 ile 7/24 çalışır halde tutun ve Nginx ters vekil (reverse proxy) ile alan adınızda SSL'li yayınlayın.

  • MerkezHost Teknik Ekibi
  • 3 dk okuma
  • Seviye: Orta
  • Güncelleme:

Node.js uygulamanızı yerelde çalıştırmak kolaydır; asıl iş onu bir sunucuda 7/24 kesintisiz, alan adınız altında ve SSL ile yayınlamaktır. Bu rehberde Ubuntu VDS üzerinde Node.js kuracak, uygulamayı PM2 ile yönetecek ve Nginx'i ters vekil (reverse proxy) olarak yapılandıracağız.

Gereksinimler

  • Ubuntu 22.04/24.04 kurulu bir VDS ve sudo yetkili kullanıcı.
  • Sunucuya yönlendirilmiş bir alan adı (A kaydı).
  • Git deposunda veya bilgisayarınızda hazır bir Node.js uygulaması.

1. Adım: Node.js kurulumu

Güncel LTS sürümünü NodeSource deposundan kuralım:

curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
node -v && npm -v

2. Adım: Uygulamanızı sunucuya alın

cd ~
git clone https://github.com/kullanici/uygulamam.git
cd uygulamam
npm ci --omit=dev

Örnek olarak basit bir uygulama dosyası (app.js):

const http = require('http');
const PORT = process.env.PORT || 3000;

http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
  res.end('Merhaba MerkezHost!');
}).listen(PORT, '127.0.0.1', () => console.log(`Port ${PORT} dinleniyor`));
İpucu

Uygulamanın 127.0.0.1 adresini dinlemesi, porta yalnızca Nginx üzerinden erişilmesini sağlar ve güvenliği artırır.

3. Adım: PM2 ile çalıştırın

sudo npm install -g pm2
pm2 start app.js --name uygulamam
pm2 status

Sunucu yeniden başladığında uygulamanın otomatik açılması için:

pm2 startup systemd
# Ekrana yazdırılan sudo komutunu kopyalayıp çalıştırın
pm2 save

Sık kullanılan PM2 komutları

pm2 logs uygulamam        # Canlı loglar
pm2 restart uygulamam     # Yeniden başlat
pm2 reload uygulamam      # Kesintisiz yeniden yükle
pm2 monit                 # CPU/RAM izleme

4. Adım: Nginx ters vekil yapılandırması

sudo apt install -y nginx
sudo nano /etc/nginx/sites-available/uygulamam
server {
    listen 80;
    server_name alanadiniz.com www.alanadiniz.com;

    location / {
        proxy_pass http://127.0.0.1:3000;
        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_set_header X-Forwarded-Proto $scheme;
        proxy_cache_bypass $http_upgrade;
    }
}
sudo ln -s /etc/nginx/sites-available/uygulamam /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo ufw allow 'Nginx Full'

Upgrade ve Connection başlıkları, Socket.IO gibi WebSocket kullanan uygulamaların çalışması için gereklidir.

5. Adım: SSL ekleyin

sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d alanadiniz.com -d www.alanadiniz.com

Ayrıntılar için Let's Encrypt SSL rehberimize göz atabilirsiniz.

6. Adım: Güncelleme (deploy) akışı

Kodunuzu güncellediğinizde aşağıdaki adımlar uygulamayı kesintisiz yeniler:

cd ~/uygulamam
git pull
npm ci --omit=dev
pm2 reload uygulamam

Sonuç

Node.js uygulamanız artık PM2 sayesinde sürekli çalışıyor ve Nginx arkasında SSL ile güvenle yayında. Node.js'in tek iş parçacıklı yapısı yüksek frekanslı işlemcilerden çok faydalanır; bu yüzden AMD Ryzen 9 performans sunucularımız Node.js projeleri için idealdir.

Sık Sorulan Sorular

PM2 neden kullanılır?

PM2, Node.js uygulamanızı arka planda çalıştırır, çökmesi halinde otomatik yeniden başlatır ve sunucu açılışında uygulamanızı otomatik başlatır.

Node.js uygulamasını doğrudan 80 portunda çalıştırabilir miyim?

Mümkün olsa da önerilmez. Nginx'i önde ters vekil olarak kullanmak SSL, sıkıştırma, önbellek ve güvenlik açısından çok daha iyidir.

  • #nodejs
  • #pm2
  • #nginx
  • #reverse proxy
  • #deploy
  • #ubuntu
Paylaş:
Devamını Okuyun

İlgili Rehberler