Node.js (Express) Projelerini Saniyeler İçinde Deploy Edin
Node.js deploy nasıl yapılır? Modern web API'lerinin omurgası olan Node.js ve Express.js ekosistemini canlıya almak bazen karmaşık sunucu yapılandırmaları gerektirebilir. Ancak Flyway ile Express.js hosting ve deploy süreçleri tamamen otomatikleştirilmiştir.
Heroku, Railway veya Vercel gibi platformların aksine Flyway; projenizi GitHub üzerinden analiz eder, sıfır yapılandırma (zero-config) prensibiyle saniyeler içinde derler ve SSL sertifikalı olarak tamamen size ait izole bir ortamda canlıya alır. Üstelik karmaşık Procfile veya Dockerfile yazmanıza gerek kalmaz.
İçindekiler (Bu Rehberde Neler Öğreneceksiniz?)
1. Ön Koşullar (Prerequisites)
Projenizi Flyway üzerinde canlıya almadan önce aşağıdaki gereksinimleri karşıladığınızdan emin olun:
- ✅ Projeniz bir GitHub, GitLab veya Bitbucket deposunda (repository) yüklü olmalıdır.
- ✅ Projenizin kök dizininde geçerli bir
package.jsondosyası bulunmalıdır. - ✅ Flyway hesabınıza giriş yapmış ve GitHub entegrasyonunu tamamlamış olmalısınız.
2. Node.js Sürümünün Belirlenmesi (Engines)
Production ortamında en sık karşılaşılan hatalardan biri, lokaldeki Node.js sürümü ile sunucudaki sürümün uyuşmazlığıdır. Flyway varsayılan olarak güncel LTS sürümünü (örneğin Node 20.x) kullanır. Ancak projeniz spesifik bir Node sürümüne ihtiyaç duyuyorsa, bunu package.json dosyanızdaki engines alanında belirtebilirsiniz.
"name": "my-api",
"engines": {
"node": "18.x" // Flyway bu sürüme uygun imajı kullanır
}
}
3. Start Scripti ve TypeScript Build Adımları
Flyway, Node.js projenizi ayağa kaldırmak için doğrudan package.json dosyanızdaki start ve build scriptlerini tetikler. Geliştirme ortamında kullandığınız nodemon veya ts-node-dev gibi araçlar production ortamında kullanılmamalıdır.
Standart JavaScript Projeleri İçin
"start": "node index.js", // Flyway projeyi bu komutla başlatır
"dev": "nodemon index.js"
}
TypeScript Projeleri İçin (Önemli)
Günümüzde çoğu yeni Express projesi TypeScript ile yazılmaktadır. TypeScript kodunuz doğrudan sunucuda çalıştırılamayacağı için (performans kaybı yaşatır), önce derlenmesi (build) gerekir. Flyway, deponuzda bir build scripti görürse bunu otomatik olarak çalıştırır.
"build": "tsc", // 1. Flyway önce derlemeyi (build) yapar
"start": "node dist/index.js", // 2. Flyway derlenmiş JS dosyasını çalıştırır
"dev": "ts-node-dev src/index.ts"
}
4. Port Dinleme Kuralları (Hayati Önem Taşır)
Node.js projelerinin PaaS sistemlerinde çökmesinin en büyük nedeni yanlış port dinleme ayarlarıdır. Flyway (ve modern bulut sistemleri), uygulamanıza rastgele dinamik bir port atar ve trafiği o porta yönlendirir.
Uygulamanızı sabit bir porta (örneğin 3000) veya sadece localhost'a (127.0.0.1) bağlamamalısınız. Bu durum uygulamanızın dış dünyadan kopmasına neden olur.
Uygulamanız mutlaka process.env.PORT değişkenini okumalı ve 0.0.0.0 host adresini dinlemelidir.
const host = '0.0.0.0';
app.listen(port, host, () => {
console.log(`Server running on ${host}:${port}`);
});
5. Ortam Değişkenleri (.env) Yönetimi
Uygulamanızın kullandığı veritabanı şifreleri, API anahtarları veya JWT secret key'leri gibi hassas verileri asla kodunuzun içine (hardcoded) veya GitHub'daki .env dosyanıza yazmamalısınız. Tüm bu verileri Flyway panelindeki "Environment Variables" sekmesinden güvenle ekleyebilirsiniz.
6. Log Görüntüleme ve Debugging (Crash Loop)
Bazen projeniz başarıyla deploy edildiği halde sürekli yeniden başlama (Crash Loop) durumuna girebilir. Node.js uygulamanız çöktüğünde hatanın ne olduğunu anlamanın tek yolu logları okumaktır.
- Flyway proje kontrol panelinize gidin.
- Üst menüden Logs sekmesine tıklayın.
- Canlı (Real-time) olarak uygulamanızın
console.log()ve hata çıktılarını izleyin. Veritabanı bağlantı hataları veya eksik modül hatalarını burada anında görebilirsiniz.
7. Sorun Giderme ve Sık Sorulan Sorular
Sık Sorulan Sorular (Kavramsal)
Node.js deploy nasıl yapılır?
Flyway üzerinde "Yeni Proje" oluşturup GitHub deponuzu seçmeniz yeterlidir. Flyway projenizin Node.js olduğunu algılar, bağımlılıkları kurar ve SSL dahil yayına alır.
Sorun Giderme Tablosu (Hatalar ve Çözümler)
| Hata Mesajı / Belirti | Olası Neden | Çözüm |
|---|---|---|
| Web process failed to bind to $PORT | Uygulamanız statik bir port (örn. 3000) dinliyor. | Kodunuzu app.listen(process.env.PORT || 3000, '0.0.0.0') olarak güncelleyin. |
| Missing start script | package.json dosyasında "start" komutu yok. |
"scripts" bloğuna "start": "node index.js" ekleyin. |
| Cannot find module 'express' | Paket devDependencies içinde kurulmuş. |
Modülü dependencies bloğuna taşıyıp yeniden commit atın. |
Web process failed to bind to $PORT
app.listen(process.env.PORT || 3000, '0.0.0.0') olarak güncelleyin.
Missing start script
package.json dosyasında "start" komutu yok.
"scripts" bloğuna "start": "node index.js" ekleyin.
Cannot find module 'express'
devDependencies içinde kurulmuş.
dependencies bloğuna taşıyıp yeniden commit atın.
İlgili Makaleler
Node.js Ortam Değişkenleri (.env) →
API anahtarlarınızı ve veritabanı şifrelerinizi güvenle nasıl yöneteceğinizi öğrenin.
NestJS Projelerini Deploy Edin →
Modern TypeScript framework'ü NestJS ile yazılmış projelerinizi yayına alın.
Hazırsınız! 🚀
Tüm bu ayarlardan sonra projenizi pushlamanız yeterli. Flyway, saniyeler içinde uygulamanızı derler ve özel alan adınızda (Domain) yayına alır.