01
cPanel'de Node.js nasıl çalışır?
Bir PHP sitesi her istekte dosyalarını baştan çalıştırır. Node.js uygulaması ise bir kez başlatılan ve gelen istekleri bellekteki kodla karşılayan bir süreçtir. Bu yüzden dosyaları yüklemek yetmez; sürecin hangi Node.js sürümüyle ve hangi dosyadan başlayacağını tanımlamanız gerekir. Bu tanımı uygulama yöneticisinde yaparsınız, alan adınıza gelen istekleri de web sunucusu uygulamanıza iletir.
Sunucuda LiteSpeed web sunucusu, Imunify360 güvenlik katmanı ve NVMe disk vardır; ücretsiz SSL ile uygulamanız https üzerinden açılır. Her hesap CloudLinux ile kendi kaynak alanında çalışır: kullanabileceğiniz RAM ve işlemci, tablodaki paket satırınızda yazan değerlerdir. Komutları cPanel → Terminal ekranında, tarayıcıdan çalıştırırsınız; bu oturum CageFS ile yalıtılmıştır ve root erişimi yoktur. Kendi bilgisayarınızdan doğrudan SSH bağlantısı için destek ekibine sorun.
02
Express uygulaması yayınlama: adım adım
Aşağıdaki sıra tek dosyalı bir Express API için yazıldı; Fastify, Koa ya da başka bir Node.js çatısında da aynı şekilde ilerlersiniz.
- Kodu hazırlayın: dinleme portunu koda sabit yazmak yerine ortam değişkeninden okuyun (
app.listen(process.env.PORT || 3000)); kullandığınız her paket package.json içinde yazılı olsun. - Dosyaları yükleyin: projeyi cPanel → Terminal ekranında Git ile deponuzdan çekin ya da arşiv olarak cPanel dosya yöneticisine yükleyip açın.
node_modules klasörünü yüklemeyin. - Uygulamayı oluşturun: Setup Node.js App ekranında Node.js sürümünü, uygulama klasörünü, yayın adresini ve giriş dosyasını (
app.js, server.js gibi) seçin. - Bağımlılıkları kurun: Run NPM Install düğmesine basın ya da cPanel → Terminal ekranında uygulama klasörüne geçip
npm install --production çalıştırın. - Ayarları verin:
NODE_ENV=production, veritabanı bilgileri ve API anahtarlarını koda değil ortam değişkenlerine yazın. - Yeniden başlatıp deneyin: uygulamayı yeniden başlatın, adresi tarayıcıda açın; API'nizde bir uç noktayı
curl ile çağırarak yanıtı kontrol edin.
03
Giriş dosyası, ortam değişkenleri ve yeniden başlatma
Giriş dosyası, sürecin başlatıldığı dosyadır. TypeScript gibi derleme adımı olan projelerde bu dosya kaynak kod değil derlenmiş çıktıdır (ör. dist/index.js); önce npm run build ile derleyip giriş dosyası olarak çıktıyı gösterin. Derleyici (ör. typescript) çoğu projede geliştirme bağımlılığıdır; derlemeyi kendi bilgisayarınızda yapıp çıktıyı yüklemek çoğu zaman daha kolaydır.
Ortam değişkenleri, aynı kodun bilgisayarınızda ve sunucuda farklı ayarlarla çalışmasını sağlar. Express, NODE_ENV değeri production olduğunda şablonları önbelleğe alır ve hata ayrıntılarını ziyaretçiye göstermez. Şifreleri Git deposuna koymayın; depoya girmeyen bir .env dosyası ya da ortam değişkeni kullanın.
Kod, süreç açılırken belleğe yüklenir. Değiştirdiğiniz kod, yeni kurduğunuz bir paket ya da değişen bir ayar, uygulamayı yeniden başlatana kadar yayına yansımaz; değişikliğiniz görünmüyorsa ilk bakacağınız yer burasıdır.
04
npm install --production ve derleme gerektiren modüller
--production bayrağı yalnız uygulama çalışırken gereken paketleri kurar; test ve geliştirme araçları sunucuya inmez. npm'in yeni sürümlerinde aynı işi --omit=dev bayrağı yapar.
Bazı paketler kurulurken C/C++ kodu derler (node-gyp); bcrypt, sqlite3 ve canvas bunlara örnektir. Bu paketlerin çoğu, yaygın sistemler için hazır derlenmiş dosya indirir; uygun dosya bulunamazsa kurulum derleme adımında hata verebilir. Böyle bir durumda paketin saf JavaScript karşılığını deneyin (bcrypt yerine bcryptjs gibi) ya da destek ekibine danışın.
Windows'ta oluşan node_modules klasörünü sunucuya taşımayın: derlenmiş dosyalar işletim sistemine özeldir ve hosting paketleri Linux tabanlıdır. Bağımlılıkları her zaman sunucuda kurun.
05
Next.js hosting ve statik siteler
Sunucu tarafı render (SSR) ya da API rotaları kullanan bir Next.js sitesi bir Node.js süreci ister: dinamik sayfalar istek geldikçe bu süreçte üretilir, süreç sürekli bellek tutar ve her dinamik istekte işlemci harcar. next.config dosyasındaki output: 'standalone' ayarı, next start yerine çalıştırılabilen küçük bir server.js ile yalnız gereken paketleri içeren bir klasör üretir; public ve .next/static klasörleri bu çıktıya kendiliğinden kopyalanmaz, elle eklenir. Bu yapıyı uygulama yöneticisine nasıl bağlayacağınızdan emin değilseniz destek ekibine sorun.
next build çalışan siteden çok daha fazla bellek ister ve hesabın RAM sınırına takılabilir. Derlemeyi sunucu dışında, tercihen Linux bir ortamda, örneğin sürekli entegrasyon (CI) hattında yapıp çıktıyı yüklemek daha rahattır. SSR'li bir sitenin ihtiyacı sayfa sayısına ve trafiğe göre değiştiği için kesin bir rakam veremeyiz; yoğun trafik bekliyorsanız RAM'i yüksek olan HAN-DEV-3 ya da HAN-DEV-4 daha rahat bir çalışma alanı sağlar.
Sunucu kodu olmayan siteler (React ile Vite, Vue, Astro ya da Next.js'in output: 'export' çıktısı) derlendikten sonra yalnızca dosyadır. dist ya da out klasörünün içeriğini ana alan adınızın public_html klasörüne yüklersiniz, dosyaları doğrudan LiteSpeed sunar ve Node.js süreci gerekmez. Böyle bir site için web hosting paketleri yeterlidir.
06
Hangi projeler uygun, hangileri VDS ister?
Ölçü basit: uygulamanız bir web isteğine yanıt verip işini bitiriyorsa hosting uygundur; isteklerden bağımsız olarak sürekli çalışması gerekiyorsa VDS gerekir.
- Uygun: Express ve Fastify ile yazılmış REST ya da GraphQL API'leri, mobil uygulama arka uçları, webhook (olay bildirimi) karşılayan servisler.
- Uygun: küçük web uygulamaları ve yönetim panelleri; kaynak ihtiyacını hesaba katarak SSR'li Next.js siteleri.
- Uygun değil: Discord botları, çünkü bot Discord'a sürekli açık bir bağlantı tutar. Discord bot sunucusu ya da VDS kullanın.
- Uygun değil: sürekli açık WebSocket bağlantılarına dayanan canlı sohbet, oyun ve bildirim servisleri; kuyruk işçileri, video işleme ve veri kazıma gibi uzun arka plan işleri.
- Uygun değil: Docker ile çalışan projeler; Docker ve root erişimi için VDS sunucu gerekir. n8n gibi Node.js tabanlı bir aracı kurulu gelen bir sunucuda isterseniz n8n sunucu sayfasına bakın.
07
Paket seçimi: RAM, CPU limiti ve veritabanı
Tablodaki CPU limiti CloudLinux ölçüsüdür: %200 iki işlemci çekirdeği, %800 sekiz çekirdek kadar işlem gücü demektir. RAM sınırı hesaptaki tüm süreçler için ortaktır; çalışan uygulamanız, npm kurulumu ve varsa PHP siteniz aynı havuzu kullanır. Tek bir API için HAN-DEV-1 yeterli bir başlangıçtır; birden çok uygulama ya da alan adı yayınlayacaksanız RAM'e ve ek site sütununa bakın.
Paketlerde MySQL ve phpMyAdmin vardır; Node.js'ten mysql2 gibi bir sürücüyle ya da Sequelize gibi bir ORM ile bağlanırsınız. Aynı hesapta PHP (8.5'e kadar), Python (3.11–3.13), Composer 2 ve Git de kullanılabilir. Başka bir veritabanı motoruna ihtiyacınız varsa siparişten önce destek ekibine sorun.
08
Yedek, ödeme ve taşıma
Hosting hesapları her gece otomatik yedeklenir ve son 3 günün yedeği tutulur. Bu bir kolaylıktır, kendi kopyanızı da saklayın: kodunuz Git deponuzda, veritabanı dökümünüz kendi bilgisayarınızda dursun.
Kart (iyzico), havale/EFT ya da hesap bakiyesiyle ödeyebilirsiniz; ödeme onaylanınca hesabınız otomatik açılır. Para iadesi yapılmaz; vadesi geçen hesap askıya alınır, 2 gün içinde ödenmezse iptal edilip verileriyle silinir (iade ve iptal politikası). Başka bir firmadaki hosting hesabınız için ücretsiz taşıma formundan talep oluşturabilirsiniz.