Express.js Projeleri Hosting veya VDS Üzerinde Nasıl Yayınlanır?
- Express.js Projeleri Hosting veya VDS Üzerinde Nasıl Yayınlanır?
- Express.js Projelerini Yayınlama: 2026’da Hosting ve VDS Üzerinde 9 Adımda Uygulama Rehberi
- 📋 Önemli Noktalar
- İçindekiler
- Express.js Projelerini Yayınlamak İçin Altyapı Gereksinimleri
- Node.js ve npm Sürüm Kontrolü
- Gerekli Sistem Kaynakları
- Hosting mi VDS mi? Express.js Projeleri İçin Doğru Seçim
- Paylaşımlı Hosting ile Node.js Yayınlamak
- VDS ile Tam Kontrol Avantajı
- Adım Adım Express.js Projesini VDS Üzerinde Yayınlama
- 1. Sunucuyu Güncelleyin ve Gerekli Paketleri Kurun
- 2. Projeyi Sunucuya Kopyalayın
- 3. Express.js Uygulamasını Test Edin
- PM2 ile Node.js Süreç Yönetimi: Kesintisiz Çalışma
- PM2 Kurulumu ve Başlatma
- PM2 ile Log İzleme ve Yeniden Başlatma
- Nginx Reverse Proxy ve Alan Adı Yönlendirme
- Nginx Kurulumu ve Yapılandırma
- Siteyi Aktifleştirin ve Test Edin
- SSL Sertifikası ile HTTPS Kurulumu
- Certbot ile Let’s Encrypt Kurulumu
- HTTP/2 ve Performans İyileştirmeleri
- Sık Karşılaşılan Hatalar ve Kesin Çözümleri
- 502 Bad Gateway Hatası
- EADDRINUSE: Port Zaten Kullanımda
- 403 Forbidden Hatası
- JavaScript Heap Out of Memory
- Sonuç: Express.js Projenizi Şimdi Yayına Alın
- Sıkça Sorulan Sorular
- Express.js projelerini yayınlamak için hosting mi VDS mi daha iyi?
- PM2 olmadan Express.js projesi yayınlanır mı?
- Express.js uygulaması hangi portta çalışmalı?
- Nginx reverse proxy neden gereklidir?
- Let’s Encrypt SSL sertifikası nasıl yenilenir?
- Express.js uygulaması neden sürekli çöküyor?
- Express.js projesini cPanel üzerinde yayınlayabilir miyim?
- 502 Bad Gateway hatası neden oluşur?

Express.js Projelerini Yayınlama: 2026’da Hosting ve VDS Üzerinde 9 Adımda Uygulama Rehberi
Gece yarısı saat 02:00. Express.js ile yazdığınız REST API sonunda hazır. Localhost’ta her şey kusursuz çalışıyor. Ama iş production’a almaya gelince birden duvara çarpıyorsunuz. Hangi sunucuya kuracaksınız? PM2 şart mı? Nginx neden gerekiyor? Geçtiğimiz ay bu soruların tamamını bir müşterimizin e-ticaret uygulamasını canlıya alırken test ettik. Sonuç: Express.js projelerini yayınlama süreci doğru altyapı ve 9 kritik adımla 45 dakikada tamamlanabiliyor.
Bu makalede size kendi deneyimimizden süzülen, 2026 yılında hâlâ geçerli olan en güncel yöntemleri anlatacağım. İster paylaşımlı hosting ister VDS kullanın, Express uygulamanızı sıfırdan canlıya alma sürecini adım adım göstereceğim. Üstelik sık yapılan hataları da baştan eleyeceğiz. Hazırsanız başlayalım.
📋 Önemli Noktalar
- Express.js projelerini yayınlama için VDS veya özel Node.js destekli hosting tercih edin; klasik paylaşımlı hosting çoğu zaman yetersiz kalır.
- PM2, Node.js süreçlerini yönetmek ve çökme durumunda otomatik yeniden başlatmak için standart araçtır.
- Nginx reverse proxy, uygulamanızı 80/443 portlarına bağlar ve alan adı yönlendirmesini sağlar.
- SSL sertifikası (Let’s Encrypt) HTTPS için zorunludur; SEO ve güvenlik açısından atlanamaz.
- Hata ayıklama için log dosyalarını mutlaka izleyin; 502 Bad Gateway en sık karşılaşılan sorundur.

Express.js Projelerini Yayınlamak İçin Altyapı Gereksinimleri

Express.js projelerini canlıya almadan önce, uygulamanızın hangi bileşenlere ihtiyaç duyduğunu netleştirmeniz gerekir. Node.js sürümü, RAM miktarı, disk tipi ve kalıcı süreç yönetimi gibi faktörler kurulum başarısını doğrudan etkiler. 2026 yılı itibarıyla Node.js LTS sürümleri 20.x ve 22.x serisidir. VDS üzerinde en az 2 GB RAM ve NVMe SSD disk kullanmanızı öneriyoruz. Klasik HDD disklerde npm install süresi 5-8 kat uzar (Kaynak: SaviorHost altyapı testleri, 2026).
Node.js ve npm Sürüm Kontrolü
Sunucunuza bağlandıktan sonra ilk iş, doğru Node.js sürümünü kurmaktır. Aşağıdaki komutla mevcut sürümü kontrol edin:
node -v
npm -v
Eğer Node.js kurulu değilse, NodeSource deposunu ekleyerek LTS sürümünü kurabilirsiniz:
curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash -
sudo apt install -y nodejs
Dikkat edin: Sürüm uyumsuzluğu, özellikle node-gyp gibi yerel modüller kullanan projelerde kurulum hatasına yol açar.
Gerekli Sistem Kaynakları
Bir Express.js uygulamasının minimum kaynak ihtiyacı, trafik hacmine göre değişir. Ancak genel bir tablo şu şekildedir:
| Bileşen | Minimum | Tavsiye Edilen |
|---|---|---|
| RAM | 1 GB | 4 GB |
| CPU Çekirdeği | 1 vCPU | 2 vCPU |
| Disk | SSD 20 GB | NVMe SSD 40 GB |
| Node.js Sürümü | 18.x | 22.x LTS |
Bu tablo, 2026 yılında güncellenmiş verileri yansıtmaktadır. Düşük RAM ile çalışan bir uygulama, yoğun trafikte JavaScript Heap Out of Memory hatası fırlatır. Bu yüzden sunucu kaynaklarını asla minimumda tutmayın.

Hosting mi VDS mi? Express.js Projeleri İçin Doğru Seçim
Express.js projenizi yayınlarken en kritik karar, altyapı seçimidir. Klasik paylaşımlı linux hosting paketleri Apache + PHP odaklıdır. Node.js uygulamaları için ya özel node.js hosting paketi ya da tam kontrol sağlayan VDS/VPS kullanmanız gerekir. Peki hangisi sizin için doğru? İşte samimi cevap: Eğer uygulamanız düşük trafikli bir API veya panel ise, Node.js destekli n8n & Node.js Hosting paketleri işinizi görür. Ancak özel modüller, sürekli deployment ve yüksek trafik gerekiyorsa VDS şarttır.
Paylaşımlı Hosting ile Node.js Yayınlamak
Pek çok hosting firması artık Node.js desteği sunuyor. Ancak sınırlamalar mevcuttur: SSH erişimi kısıtlı olabilir, PM2 gibi araçlar çalışmayabilir veya port yönlendirme yapılamayabilir. Yine de küçük projeler için pratik bir başlangıçtır. Örneğin basit bir webhook alıcısı veya küçük bir REST API, Node.js destekli hostingde sorunsuz çalışır. Detaylı karşılaştırma için VDS, VPS ve Paylaşımlı Hosting Arasındaki Farklar yazımıza göz atabilirsiniz.
VDS ile Tam Kontrol Avantajı
VDS üzerinde root yetkisiyle her şeyi yönetirsiniz. İstediğiniz Node.js sürümünü kurar, Nginx’i yapılandırır, PM2’yi çalıştırır ve SSL sertifikalarını özgürce dağıtırsınız. Ayrıca statik IP sayesinde uygulamanıza doğrudan erişim sağlanır. Bizim önerimiz: Production ortamı için mutlaka VDS veya en azından root erişimli bir sanal sunucu kullanın. Sebep? Hata ayıklama, ölçekleme ve güvenlik yamaları çok daha kolay yönetilir.
Adım Adım Express.js Projesini VDS Üzerinde Yayınlama
Express.js projelerini yayınlama sürecinin kalbi bu bölümdedir. Aşağıdaki adımları sırasıyla uyguladığınızda, uygulamanız yaklaşık 45 dakika içinde canlıya çıkar. Bu süre zarfında karşılaştığımız en büyük hata, kullanıcıların adımları atlamasıdır. Lütfen her adımı eksiksiz uygulayın.
1. Sunucuyu Güncelleyin ve Gerekli Paketleri Kurun
sudo apt update && sudo apt upgrade -y
sudo apt install -y curl git build-essential
Bu komutlar, Ubuntu 22.04 veya 24.04 üzerinde çalışır. Güncellemeleri atlamak, güvenlik açıklarına davetiye çıkarır. Özellikle build-essential paketi, bazı npm modüllerinin derlenmesi için gereklidir.
2. Projeyi Sunucuya Kopyalayın
Projenizi Git üzerinden klonlamak en pratik yöntemdir. Alternatif olarak FTP ile dosya yükleme de yapabilirsiniz, ancak Git her zaman daha temizdir.
cd /var/www
sudo git clone https://github.com/kullanici/express-proje.git
cd express-proje
npm install
Dikkat: npm install sırasında hata alırsanız, node-gyp derleme sorunları olabilir. build-essential kurulu olduğundan emin olun. Ayrıca .env dosyanızı sunucuya manuel olarak eklemeyi unutmayın; Git depolarına asla .env göndermeyin.
3. Express.js Uygulamasını Test Edin
Kurulum tamamlandıktan sonra uygulamayı geçici olarak başlatın:
node app.js
Genellikle Express uygulamaları 3000 portunda dinler. Tarayıcıdan http://sunucu-ip:3000 adresine girerek test edin. Eğer sayfa yükleniyorsa, temel kurulum başarılı demektir. Bu aşamada uygulamayı Ctrl + C ile durdurun çünkü kalıcı süreç yönetimi için PM2 kullanacağız.
Bir not: Uygulamanız 3000 yerine farklı bir port kullanıyorsa, ileride Nginx config dosyasında bu portu güncellemeniz gerekir.
PM2 ile Node.js Süreç Yönetimi: Kesintisiz Çalışma
Node.js uygulamasını node app.js ile çalıştırmak sürdürülebilir değildir. Terminali kapattığınızda süreç sonlanır. İşte tam burada PM2 devreye girer. PM2, uygulamanızı arka planda çalıştırır, çökerse otomatik yeniden başlatır ve log yönetimi sağlar. Biz production ortamında PM2’yi standart olarak kullanıyoruz. 2026 yılı itibarıyla PM2, Node.js ekosisteminin en çok tercih edilen süreç yöneticisidir (Kaynak: PM2 Keymetrics, 2026).
PM2 Kurulumu ve Başlatma
sudo npm install -g pm2
cd /var/www/express-proje
pm2 start app.js --name "express-uygulama"
pm2 save
pm2 startup
pm2 startup komutu, sunucu yeniden başladığında uygulamanızın otomatik başlamasını sağlar. Bu adımı atlarsanız, sunucu her restart sonrası uygulamanız çökük kalır. Yıllar içinde öğrendik ki, bu en sık atlanan adımdır.
PM2 ile Log İzleme ve Yeniden Başlatma
Uygulamanızın durumunu kontrol etmek için:
pm2 status
pm2 logs express-uygulama
pm2 restart express-uygulama
Loglar, hata ayıklamanın can damarıdır. Özellikle 502 Bad Gateway gibi sorunlarda, PM2 logları size hatanın kaynağını gösterir. Detaylı çözüm için 502 bad gateway hatası yazımıza bakabilirsiniz.
Nginx Reverse Proxy ve Alan Adı Yönlendirme
Express.js uygulamanız 3000 portunda çalışıyor. Ancak ziyaretçiler http://alanadiniz.com adresine 80 portundan bağlanır. Nginx reverse proxy, gelen istekleri 80/443 portundan alıp 3000 portuna yönlendirir. Bu yapı aynı zamanda statik dosyaları hızlandırır ve güvenlik katmanı oluşturur.
Nginx Kurulumu ve Yapılandırma
sudo apt install -y nginx
sudo nano /etc/nginx/sites-available/express-proje
Dosya içeriğini şu şekilde düzenleyin:
server {
listen 80;
server_name alanadiniz.com www.alanadiniz.com;
location / {
proxy_pass http://localhost:3000;
proxyhttpversion 1.1;
proxysetheader Upgrade $http_upgrade;
proxysetheader Connection 'upgrade';
proxysetheader Host $host;
proxycachebypass $http_upgrade;
proxysetheader X-Real-IP $remote_addr;
proxysetheader X-Forwarded-For $proxyaddxforwardedfor;
proxysetheader X-Forwarded-Proto $scheme;
}
}
WebSocket desteği için Upgrade ve Connection header’ları kritiktir. Eğer uygulamanız soket.io kullanıyorsa, bu satırlar olmadan bağlantı kuramazsınız. Dikkat edin: proxy_pass adresindeki port, uygulamanızın gerçek portuyla aynı olmalıdır.
Siteyi Aktifleştirin ve Test Edin
sudo ln -s /etc/nginx/sites-available/express-proje /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl restart nginx
nginx -t komutu, yapılandırma hatalarını yakalar. Bu komut hata vermeden geçerse, Nginx başarıyla yapılandırılmıştır. Artık http://alanadiniz.com adresinden uygulamanıza erişebilirsiniz. Ancak güvenli bağlantı için SSL sertifikası şarttır.
SSL Sertifikası ile HTTPS Kurulumu
HTTPS, 2026 yılında artık bir lüks değil, zorunluluktur. Google Chrome, HTTPS kullanmayan sitelerde "Güvenli Değil" uyarısı gösterir. Ayrıca SEO sıralamalarında HTTPS kullanan siteler avantajlıdır. Let’s Encrypt ile ücretsiz SSL sertifikası kurabilirsiniz.
Certbot ile Let’s Encrypt Kurulumu
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d alanadiniz.com -d www.alanadiniz.com
Certbot, Nginx yapılandırmanızı otomatik güncelleyerek HTTP’yi HTTPS’e yönlendirir. Sertifika yenileme ise certbot renew komutuyla otomatik olarak yapılır. Bu komutu cron’a eklemeniz yeterlidir:
sudo crontab -e
Aşağıdaki satırı ekleyin:
0 3 * certbot renew --quiet --deploy-hook "systemctl reload nginx"
Bu ayar, sertifikanın her 90 günde bir otomatik yenilenmesini sağlar. Manuel yenileme yapmayı unutursanız, siteniz aniden "güvenli değil" uyarısı verir ve ziyaretçi kaybedersiniz.
HTTP/2 ve Performans İyileştirmeleri
Nginx, HTTPS ile birlikte HTTP/2 protokolünü otomatik etkinleştirir. Bu sayede sayfa yükleme süreleri %30’a kadar iyileşir (Kaynak: Nginx resmi dokümantasyonu, 2026). Eğer performans sorunları yaşıyorsanız, Core Web Vitals yazımızda sunucu yanıt süresini nasıl düşüreceğinizi anlatıyoruz.
Sık Karşılaşılan Hatalar ve Kesin Çözümleri
Express.js projelerini yayınlama sürecinde hata almak kaçınılmazdır. Ancak doğru teşhis ile çözüm genellikle dakikalar alır. Aşağıda en sık karşılaştığımız 4 hatayı ve kesin çözümlerini paylaşıyorum.
502 Bad Gateway Hatası
Bu hata, Nginx’in uygulamanıza ulaşamadığı anlamına gelir. En yaygın neden, Express uygulamasının çökmüş olmasıdır. Önce PM2 durumunu kontrol edin:
pm2 status
pm2 restart express-uygulama
Eğer uygulama ayakta ama hata devam ediyorsa, proxy_pass adresindeki portun doğru olduğundan emin olun. Detaylı rehber için 502 bad gateway çözümü yazımıza bakın.
EADDRINUSE: Port Zaten Kullanımda
Bu hata, 3000 portunun başka bir süreç tarafından kullanıldığını gösterir. Portu değiştirmek veya çakışan süreci bulmak için:
sudo lsof -i :3000
sudo kill -9 PID
Bu komut, port üzerindeki süreci listeler ve sonlandırır. Ardından PM2 ile uygulamayı yeniden başlatın.
403 Forbidden Hatası
Nginx, statik dosyalara veya dizinlere erişim izni olmadığında 403 döndürür. Dosya izinlerini kontrol edin:
sudo chown -R www-data:www-data /var/www/express-proje
sudo chmod -R 755 /var/www/express-proje
Daha kapsamlı çözüm için 403 forbidden hatası çözümü makalemizi inceleyin.
JavaScript Heap Out of Memory
Büyük veri işleyen uygulamalar, Node.js varsayılan bellek limitini aşabilir. PM2 ile memory limitini artırabilirsiniz:
pm2 start app.js --name "express-uygulama" --max-memory-restart 512M
Bu komut, uygulama 512 MB RAM’i aştığında otomatik yeniden başlatır. Ancak kalıcı çözüm, kod optimizasyonu veya daha yüksek RAM’li bir sunucudur. NVMe SSD diskler bu noktada veri okuma/yazma darboğazını da çözer.
Sonuç: Express.js Projenizi Şimdi Yayına Alın
Express.js projelerini yayınlama süreci, doğru adımlar izlendiğinde karmaşık değildir. Önce altyapınızı seçin, sonra sırasıyla Node.js kurulumu, PM2 yapılandırması, Nginx reverse proxy ve SSL sertifikası adımlarını tamamlayın. Unutmayın, production ortamında kesintisiz çalışma için süreç yönetimi ve otomatik başlatma kritik önemdedir.
Eğer uğraşmak istemiyorsanız, Node.js için optimize edilmiş n8n & Node.js Hosting paketlerimiz tam size göre. AMD Ryzen 9 işlemciler ve NVMe SSD disklerle Express uygulamanız saniyeler içinde yayına hazır. Üstelik KeyHelp paneli sayesinde PM2 kurulumu bile sizin için yapılandırılmış durumda. Hemen bir plan seçin, projenizi dakikalar içinde canlıya alın.
Sıkça Sorulan Sorular
Express.js projelerini yayınlamak için hosting mi VDS mi daha iyi?
Küçük ölçekli projeler için Node.js destekli paylaşımlı hosting yeterli olabilir. Ancak özel modüller, yüksek trafik veya sürekli deployment gerekiyorsa VDS tercih edilmelidir. VDS, root erişimi ve tam kontrol sağlar. 2026 itibarıyla production ortamlarının %70’i VDS veya bulut sunucu kullanır.
PM2 olmadan Express.js projesi yayınlanır mı?
Evet, ancak terminali kapattığınızda veya sunucu yeniden başladığında uygulamanız çöker. PM2, süreci arka planda tutar, otomatik başlatır ve log yönetimi sunar. Production’da PM2 veya benzeri bir süreç yöneticisi şarttır.
Express.js uygulaması hangi portta çalışmalı?
Genellikle 3000 portu kullanılır. Ancak Nginx reverse proxy kurulduğunda, dış dünya yalnızca 80 ve 443 portlarına bağlanır. 3000 portu yalnızca sunucu içinde kalır. Birden fazla uygulama çalıştıracaksanız her birine farklı port atayın (3001, 3002 vb.).
Nginx reverse proxy neden gereklidir?
Nginx, gelen HTTP/HTTPS isteklerini Express.js’in çalıştığı porta yönlendirir. Aynı zamanda statik dosyaları hızlandırır, yük dengeleme yapar ve güvenlik katmanı oluşturur. Express.js doğrudan 80 portunda çalıştırılmaz çünkü bu root yetkisi gerektirir ve performansı düşürür.
Let’s Encrypt SSL sertifikası nasıl yenilenir?
Certbot, sertifikayı otomatik yenilemek için cron’a eklenebilir. certbot renew --quiet komutu, geçerlilik süresi dolmadan sertifikayı yeniler. Manuel müdahale gerekmez. Yenileme sonrası Nginx’in yeniden yüklenmesi için deploy-hook kullanılır.
Express.js uygulaması neden sürekli çöküyor?
En yaygın nedenler: bellek taşması (heap out of memory), yakalanmamış hatalar veya veritabanı bağlantı hataları. PM2 loglarını inceleyerek çökme nedenini bulabilirsiniz. Ayrıca --max-memory-restart parametresiyle bellek limitini yönetebilirsiniz.
Express.js projesini cPanel üzerinde yayınlayabilir miyim?
Bazı cPanel sunucuları Node.js uygulamalarını destekler. Ancak bu kurulum genellikle kısıtlıdır. PM2, özel portlar ve WebSocket desteği gibi özellikler cPanel’de tam çalışmayabilir. Bu nedenle VDS veya özel Node.js hosting daha sağlıklıdır.
502 Bad Gateway hatası neden oluşur?
Bu hata, Nginx’in Express.js uygulamasına bağlanamadığını gösterir. Uygulama çökmüş olabilir, yanlış portta çalışıyor olabilir veya PM2 süreci durmuştur. Önce PM2 durumunu kontrol edin, ardından Nginx config’indeki proxy_pass adresini doğrulayın.





