Ana içeriğe geç

Nginx ile NestJS Yayınlama (Ubuntu VPS)

Bu rehberde ne öğreneceksiniz?

Bu rehberde NestJS tabanlı bir backend uygulamasını Ubuntu VPS üzerinde yayına almayı öğreneceksiniz.
Nginx reverse proxy, PM2 süreç yönetimi ve HTTPS yapılandırması adım adım anlatılır.
Sonunda güvenli ve üretime hazır bir kurulum elde edeceksiniz.


Teknik Özet

Ana konu: NestJS uygulamasının Nginx ile yayına alınması
Çözülen problem: Backend uygulamanın güvenli ve sürekli çalışması
Kazanım: Ölçeklenebilir, yönetilebilir ve HTTPS destekli yayın

İzlenen adımlar:

  1. NestJS uygulamasını hazırlama
  2. PM2 ile uygulamayı çalıştırma
  3. Nginx reverse proxy yapılandırması
  4. SSL sertifikası ekleme

Ön Koşullar

  • Ubuntu 22.04 yüklü bir VPS
  • Node.js ve npm kurulu olmalı
  • Nginx web sunucusu kurulu olmalı
  • Alan adı sunucuya yönlendirilmiş olmalı

1. NestJS Uygulamasını Hazırlama

NestJS CLI kurulumu

npm install -g @nestjs/cli
  • Bu komut, NestJS komut satırı aracını kurar.

Yeni proje oluşturma


nest new backend-app
  • Bu komut, yeni bir NestJS proje yapısı oluşturur.

  1. Proje dizinine girip uygulamayı başlatın.

cd backend-app
npm run start
  • Bu komut, uygulamayı localhost:3000 üzerinde çalıştırır.

2. PM2 ile Uygulamayı Çalıştırma

  1. PM2, Node.js uygulamalarını arka planda yönetir.

PM2 kurulumu


npm install -g pm2
  • Bu komut, PM2 süreç yöneticisini kurar.

Uygulamayı PM2 ile başlatma


pm2 start npm --name "backend-app" -- start
  • Bu komut, NestJS uygulamasını sürekli çalışır hale getirir.

  1. Sunucu yeniden başlatmalarında otomatik başlatma için:

pm2 startup
pm2 save
  • Bu komutlar, PM2 yapılandırmasını kalıcı yapar.

3. Nginx Reverse Proxy Yapılandırması

  1. Nginx, gelen istekleri NestJS uygulamasına yönlendirir.

Firewall ayarları


sudo ufw allow 'Nginx Full'
  • Bu komut, HTTP ve HTTPS trafiğine izin verir.

Nginx yapılandırma dosyası


sudo nano /etc/nginx/sites-available/api.rabisu.cloud


server {
server_name api.rabisu.cloud www.api.rabisu.cloud;

location / {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection 'upgrade';
proxy_set_header Host $host;
proxy_cache_bypass $http_upgrade;
}
}
  • Bu yapılandırma, istekleri NestJS uygulamasına yönlendirir.

  1. Siteyi aktif etme

sudo ln -s /etc/nginx/sites-available/api.rabisu.cloud /etc/nginx/sites-enabled/
sudo unlink /etc/nginx/sites-enabled/default
  • Bu komutlar, yeni siteyi etkinleştirir.

  1. Nginx’i yeniden başlatma

sudo nginx -t
sudo systemctl restart nginx
  • Bu komutlar, yapılandırmayı test eder ve uygular.

4. HTTPS (SSL) Ekleme – Let’s Encrypt

  1. HTTPS, üretim ortamı için zorunludur.

Certbot kurulumu


sudo apt install certbot python3-certbot-nginx
  • Bu komut, SSL sertifikası yöneticisini kurar.

Sertifika alma


sudo certbot --nginx -d api.rabisu.cloud -d www.api.rabisu.cloud
  • Bu komut, alan adı için SSL sertifikası oluşturur.
  • Sertifikalar otomatik yenilenir.

Sıkça Sorulan Sorular

1. Neden reverse proxy kullanılıyor? Backend uygulamayı doğrudan dış erişime kapatır.

2. PM2 ne işe yarar? Uygulamanın sürekli çalışmasını sağlar.

3. NestJS neden tercih edilir? Modüler yapı ve TypeScript desteği sunar.

4. SSL zorunlu mu? Üretim ortamlarında mutlaka gereklidir.


Sonuç

Bu rehberle NestJS uygulamanızı Ubuntu VPS üzerinde yayına aldınız. Nginx ve PM2 sayesinde güvenli ve kararlı bir yapı kuruldu. HTTPS ile iletişim güvenliği sağlandı.

Bu mimariyi Rabisu Bulut altyapısında kolayca uygulayabilirsiniz.