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 -v2. 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`));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 statusSunucu 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 saveSı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 izleme4. Adım: Nginx ters vekil yapılandırması
sudo apt install -y nginx
sudo nano /etc/nginx/sites-available/uygulamamserver {
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.comAyrı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 uygulamamSonuç
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.
