Makale Başlıkları
Kısaca
Bir Node.js uygulamasını yayına almak; sunucuya güncel LTS sürümünü kurmak, bağımlılıkları npm ci ile yüklemek ve uygulamayı kalıcı biçimde çalıştırmaktır. Root erişimli sunucuda doğru yöntem PM2 + Nginx; cPanel/paylaşımlı ortamda ise CloudLinux Node.js Selector ile tek tıkla deploy yapılır.
- Üretimde her zaman Active LTS (şu an Node.js 24) kurun; “Current” sürümü canlıya almayın.
node app.jskalıcı değildir; PM2 ile arka planda çalıştırın ve sunucu açılışında otomatik başlatın.- Uygulamayı iç portta (örn. 3000) tutup HTTPS’i Nginx reverse proxy katmanında sonlandırın.
Node.js, JavaScript’i sunucu tarafında çalıştıran, yüksek performanslı ve olay tabanlı bir çalışma ortamıdır. API’ler, gerçek zamanlı uygulamalar (chat, bildirim, panel) ve modern web backend’leri için en çok tercih edilen platformlardan biridir. Express, Fastify, NestJS, Next.js gibi çoğu popüler çatı Node.js üzerinde çalışır. Bir uygulamayı yayına almak; sunucuya Node kurmayı, bağımlılıkları yüklemeyi ve uygulamayı çökse bile kendiliğinden ayağa kalkacak şekilde kalıcı çalıştırmayı içerir. Bu rehberde hem root erişimli sunucuda klasik PM2 + Nginx yöntemini hem de cPanel’de CloudLinux Node.js Selector ile koddan tasarruf eden yöntemi adım adım anlatıyoruz.
Node.js uygulamalarınızı tam kontrolle yayınlamak için root erişimli bir VPS/sunucu, daha hafif projeler için ise Node.js Selector destekli hosting paketleri idealdir.
Hangi Ortamı Seçmelisiniz?
Deploy yönteminizi belirleyen ilk soru, projenizin hangi ortamda çalışacağıdır. Aşağıdaki tablo iki ana senaryoyu karşılaştırır:
| Kriter | VPS / Sunucu (root erişim) | cPanel Hosting (Node.js Selector) |
|---|---|---|
| Kontrol seviyesi | Tam (kernel, port, servis) | Uygulama düzeyi, izole |
| Süreç yönetimi | PM2 (siz kurarsınız) | Passenger (otomatik) |
| Reverse proxy | Nginx (manuel kurulum) | Apache + Passenger (hazır) |
| SSL/HTTPS | Certbot/Let’s Encrypt manuel | cPanel AutoSSL ile otomatik |
| Teknik bilgi | Orta-ileri (Linux/CLI) | Başlangıç dostu (arayüz) |
| Uygun proje | Yüksek trafik, özel servis, mikroservis | API, panel, orta ölçekli uygulama |
Tam izolasyon, özel port ve mikroservis mimarisi gerekiyorsa VPS/sunucu; hızlı ve düşük bakım maliyetli bir yayın istiyorsanız Node.js Selector destekli hosting daha pratiktir.
Node.js Kurulumu (VPS/Sunucu)
Root erişimli bir sunucuda üretim için önerilen yöntem, NodeSource deposundan güncel LTS sürümünü kurmaktır. Haziran 2026 itibarıyla Node.js 24 Active LTS, Node.js 22 Maintenance LTS durumundadır; en yeni “Current” sürüm Node.js 26’dır ve Ekim 2026’da LTS’e geçmesi planlanmaktadır.
curl -fsSL https://deb.nodesource.com/setup_24.x | sudo -E bash - sudo apt-get install -y nodejs # Surumleri dogrula node -v && npm -v
Üretimde her zaman Active veya Maintenance LTS sürümü kullanın; “Current” (en yeni geliştirme hattı) sürümü canlı için önerilmez. AlmaLinux/CentOS tabanlı sunucularda apt-get yerine dnf install -y nodejs komutu ve setup_24.x betiğinin RPM karşılığı kullanılır.
nvm mi, NodeSource mu?
nvm (Node Version Manager) geliştirme makinenizde birden çok sürümü yan yana tutmak için idealdir. Ancak üretim sunucusunda nvm kullanıcıya bağlı çalıştığı ve servis başlangıç betiklerinde PATH sorunları çıkarabildiği için; NodeSource deposu daha düzenli ve öngörülebilirdir. Kısa kural: geliştirmede nvm, üretimde NodeSource.
Bilmeniz Gereken Node.js Sürüm Takvimi Değişikliği
Node.js, sürümleme modelini Ekim 2026’dan itibaren değiştiriyor. Eski çift/tek (even/odd) ayrımı kalkıyor; bundan sonra her major sürüm LTS olacak. Yeni model şu şekilde işleyecek:
- Yılda tek major sürüm yayınlanacak (Nisan).
- Her sürüm Ekim ayında LTS’e yükseltilecek.
- Sürüm numaraları yıla göre hizalanacak: 2027’de 27.x, 2028’de 28.x.
- İlk Current çıkışından EOL’ye toplam destek penceresi yaklaşık 36 ay olacak.
Pratik anlamı: Node.js 26 mevcut modelin son hattıdır; Node.js 27 yeni takvimin ilk sürümü olacak. Sürüm seçerken bu geçişi göz önünde bulundurun, özellikle uzun ömürlü projelerde EOL tarihini planlayın.
Uygulamayı Yükleme ve Çalıştırma
Uygulama dosyalarınızı sunucuya taşıdıktan sonra bağımlılıkları yükleyin:
cd /var/www/uygulama # Uretimde tekrarlanabilir kurulum icin: npm ci # veya: npm install --omit=dev # Ortam degiskenlerini ayarlayin export NODE_ENV=production # Uygulamayi baslat node app.js # veya: npm start
Üretimde npm ci tercih edin; package-lock.json‘a birebir sadık kalarak tekrarlanabilir bir kurulum sağlar ve node_modules klasörünü sıfırdan temiz oluşturur. npm install ise lock dosyasını güncelleyebileceğinden üretimde sürpriz sürüm farklarına yol açabilir.
Sorun: node app.js Kalıcı Değil
Uygulamayı doğrudan node app.js ile çalıştırmak yeterli değildir: SSH oturumu kapandığında, uygulama çöktüğünde veya sunucu yeniden başlatıldığında uygulama durur ve kullanıcılarınız 502 hatası görür. Üretimde uygulamayı arka planda çalıştıran, çöktüğünde otomatik yeniden başlatan ve sunucu açılışında kendiliğinden ayağa kaldıran bir süreç yöneticisi gereklidir. Node.js dünyasında bunun fiili standardı PM2‘dir.
PM2 ile Kalıcı Çalıştırma
# PM2'yi global kur sudo npm install -g pm2 # Uygulamayi baslat ve isim ver pm2 start app.js --name uygulamam # Tum CPU cekirdeklerini kullan (cluster mode) pm2 start app.js -i max --name uygulamam # Sunucu acilisinda otomatik baslatma pm2 startup pm2 save
pm2 startup komutu, sistem yeniden başladığında uygulamanızı otomatik ayağa kaldıracak servis betiğini oluşturur; pm2 save ise o anki süreç listesini kaydeder. Bu ikisi olmadan sunucu yeniden başlayınca uygulamanız açılmaz.
Cluster Mode ile Çok Çekirdek Kullanımı
PM2’nin -i max seçeneği, uygulamanızı her vCPU için bir kez forklar; 4 çekirdekli bir sunucuda 4 ayrı Node işleyici (worker) çalışır ve istekleri eş zamanlı karşılar. Bu, varsayılan tek işlemci Node davranışına göre ciddi performans kazandırır. Ancak cluster mode uygulamanızın durumsuz (stateless) olmasını gerektirir: oturum verisi, WebSocket bağlantıları ve bellek içi önbellekler worker’lar arasında paylaşılmaz. Paylaşımlı durum gerekiyorsa Redis gibi harici bir depo kullanın.
Sıfır Kesintili Deploy (Zero-Downtime)
Yeni sürümü yayına alırken kesinti yaşamamak için pm2 restart yerine pm2 reload kullanın. reload, worker’ları teker teker yeniden başlatır; her worker mevcut isteklerini bitirdikten sonra değiştirilir, böylece cluster modunda her an en az bir worker istekleri karşılamaya devam eder.
Nginx Reverse Proxy ile Yayınlama
Uygulamayı doğrudan 80/443 portunda çalıştırmak yerine, iç bir portta (örn. 3000) tutup önüne Nginx reverse proxy koymak en doğru yaklaşımdır. Nginx public trafiği 80/443’te karşılar, SSL’i sonlandırır, statik dosyaları servis eder ve dinamik istekleri PM2’nin yönettiği Node sürecine iletir.
server {
listen 80;
server_name uygulamam.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_cache_bypass $http_upgrade;
}
}
HTTPS için Certbot (Let’s Encrypt) ile ücretsiz SSL sertifikası alıp Nginx’e tanıyabilirsiniz. Upgrade ve Connection başlıkları, WebSocket kullanan uygulamaların (Socket.io vb.) proxy üzerinden doğru çalışması için gereklidir.
cPanel Hosting’de Node.js Selector
Root erişiminiz yoksa veya sunucu yönetimiyle uğraşmak istemiyorsanız, CloudLinux Node.js Selector en pratik yoldur. Bu araç, Apache + Phusion Passenger ile çalışır; PM2 veya manuel reverse proxy ayarı yapmanıza gerek kalmadan, uygulamanızı cPanel arayüzünden tek tıkla yayına alırsınız. Alastyr’ın CloudLinux + cPanel altyapısında adımlar şunlardır:
- cPanel’de Setup Node.js App (Yazılım bölümü) sayfasını açın.
- Create Application deyip Node.js sürümünü, uygulama kökünü ve başlangıç dosyasını (örn.
app.js) seçin. - Uygulama dosyalarınızı belirtilen dizine yükleyin;
package.jsondosyanızın bağımlılıkları ve script’leri doğru tanımladığından emin olun. - Run NPM Install butonu ile bağımlılıkları kurun, ardından uygulamayı başlatın.
Passenger, uygulamayı otomatik olarak doğru porta yönlendirdiği için .htaccess ile manuel yönlendirme yapmanıza gerek kalmaz. CloudLinux CageFS sayesinde her hesap birbirinden izole çalışır; bir hesabın kaynağı diğerlerini etkilemez. Bu yöntem, port açmadan ve süreç yöneticisi kurmadan yayına almak isteyenler için idealdir.
Dikkat Edilmesi Gerekenler
- Yalnızca LTS sürümlerini kullanın; “Current” üretim için stabil değildir. Sürüm takvimi değişikliğini (Ekim 2026) göz önünde bulundurun.
- Üretimde
npm ciile lock dosyasına sadık kurulum yapın;node_modulesklasörünü repoya eklemeyin. - Uygulamayı PM2 ile kalıcı çalıştırın ve
pm2 startup+pm2 saveile açılışta otomatik başlatın. - Uygulamayı iç portta tutup HTTPS’i Nginx (veya Passenger) katmanında sonlandırın.
- Uygulamayı root olmayan özel bir kullanıcıyla çalıştırın;
NODE_ENV=productiondeğişkenini ayarlayın. - Cluster mode kullanıyorsanız uygulamanızın durumsuz olduğundan emin olun; paylaşımlı durum için Redis kullanın.
- Hassas bilgileri (.env, API anahtarları) koddan ayrı tutun ve repoya göndermeyin.
Sıkça Sorulan Sorular
Hangi Node sürümünü kurmalıyım?
Üretim için güncel Active LTS sürümünü kurun; Haziran 2026 itibarıyla bu Node.js 24’tür. Node.js 22 Maintenance LTS olarak hâlâ desteklenir. “Current” sürümü (26.x) canlı ortamda kullanmayın.
nvm mi NodeSource mu?
nvm geliştirme makinesinde birden çok sürümü yönetmek için esnektir; üretim sunucusunda ise NodeSource deposu daha düzenli ve başlangıç betikleriyle uyumludur. Kısa kural: geliştirmede nvm, üretimde NodeSource.
Uygulamam neden sürekli kapanıyor?
node app.js kalıcı değildir; SSH kapanınca veya uygulama çökünce durur. PM2 ile çalıştırın ve pm2 startup + pm2 save komutlarıyla sunucu açılışında otomatik başlamasını sağlayın.
Uygulamamı 80 portunda nasıl yayınlarım?
Uygulamayı 3000 gibi bir iç portta tutun ve önüne Nginx reverse proxy koyun. Nginx 80/443 portunu dinler, SSL’i sonlandırır ve istekleri Node sürecine iletir.
npm ci ile npm install farkı nedir?
npm ci lock dosyasına birebir sadıktır, node_modules klasörünü sıfırdan kurar ve tekrarlanabilir sonuç verir; bu yüzden üretim için daha güvenlidir. npm install ise lock dosyasını güncelleyebilir.
PM2 cluster mode ne işe yarar?
Uygulamanızı her CPU çekirdeği için bir kez çalıştırır, böylece istekleri eş zamanlı karşılayarak performansı artırır. Sadece durumsuz uygulamalarda güvenlidir; paylaşımlı durum için Redis kullanın.
cPanel hosting’de Node.js çalıştırabilir miyim?
Evet. CloudLinux Node.js Selector ve Passenger sayesinde root erişimine gerek kalmadan, cPanel’deki Setup Node.js App arayüzünden tek tıkla uygulama oluşturup yayına alabilirsiniz.
Sıfır kesintili deploy nasıl yapılır?
PM2 cluster modunda pm2 reload kullanın. Worker’lar teker teker yeniden başlatılır; her biri mevcut isteklerini bitirir, böylece her an en az bir worker çalışmaya devam eder ve kullanıcı kesinti yaşamaz.
Node.js sürüm takviminde ne değişti?
Ekim 2026’dan itibaren çift/tek sürüm ayrımı kalkıyor; yılda tek major sürüm çıkacak ve her sürüm LTS olacak. Sürüm numaraları yıla göre hizalanacak (2027’de 27.x). Uzun ömürlü projelerde EOL tarihini buna göre planlayın.
Node.js İçin Doğru Altyapı
Tam kontrol için root erişimli NVMe SSD VPS, kolay yayın için CloudLinux Node.js Selector destekli hosting. İzmir’deki kendi veri merkezimizde, ücretsiz SSL ve 7/24 destekle.





