İçeriğe geç

Node.js Projemi Sunucuya Nasıl Kurarım? (PM2 ve Nginx Ayarı Olmadan, Plesk ve Git ile)

· 5 dk okuma

Bir Node.js uygulamasını kendi bilgisayarınızda node server.js ile çalıştırmak kolaydır; zor olan, aynı uygulamayı bir sunucuda kesintisiz, güvenli ve kolayca güncellenebilir biçimde çalışır tutmaktır. Boş bir Linux sunucuda bu iş SSH bağlantısı, süreç yöneticisi, reverse proxy ve SSL ayarlarından oluşan uzun bir yapılandırma gerektirir. Bu rehberde önce klasik yöntemin hangi parçalardan oluştuğunu, ardından aynı sonuca Plesk Obsidian paneli ve GitHub deponuzla terminal açmadan nasıl ulaşacağınızı adım adım anlatıyoruz.

Bir Node.js Uygulamasını Yayında Tutan 4 Bileşen

Klasik bir Linux sunucuda (yönetilmeyen VPS) aşağıdaki parçaların her birini kendiniz kurar ve bakımını üstlenirsiniz:

  1. Node.js çalışma ortamı: Sunucuya doğru Node.js sürümünü kurmak (çoğunlukla nvm ile) ve güvenlik güncellemelerini takip etmek.
  2. Süreç yöneticisi: Uygulama çöktüğünde ya da sunucu yeniden başladığında uygulamayı yeniden ayağa kaldıran araç. Klasik kurulumda bu iş için PM2 kullanılır; pm2 startup ve pm2 save adımları unutulursa sunucu yeniden başladığında uygulama da kapalı kalır.
  3. Reverse proxy: 80 ve 443 numaralı portlara gelen istekleri uygulamanın dinlediği porta (ör. 3000) aktaran web sunucusu. Nginx'teki proxy_pass satırında yapılan tek bir port hatası, ziyaretçilere 502 Bad Gateway sayfası olarak döner.
  4. SSL sertifikası: HTTPS için sertifikanın alınması ve süresi dolmadan yenilenmesi.

Plesk Obsidian'da bu dört bileşenin karşılığı paneldedir: Node.js sürümü listeden seçilir, uygulamayı Phusion Passenger çalıştırıp web sunucusuna bağlar, Let's Encrypt sertifikası panelden alınır ve kendiliğinden yenilenir. Bu yüzden PM2 kurmanız ya da Nginx yapılandırma dosyası yazmanız gerekmez.

Node.js Yayınlama Yöntemleri Karşılaştırması

Yöntem Kurulum ve bakım Gereken bilgi Kimler için uygun?
Yönetilmeyen VPS (SSH + PM2 + Nginx) Node.js, PM2, Nginx, SSL ve güvenlik duvarı elle kurulur; işletim sistemi güncellemeleri sizdedir Linux sunucu yönetimi Sunucu üzerinde tam denetim isteyen ekipler
Coolify gibi açık kaynak PaaS paneli Git push ile Docker tabanlı derleme ve dağıtım; sunucunun bakımı sizdedir Docker temel bilgisi Birden fazla servisi konteynerle çalıştıranlar
Plesk Obsidian ile Developer Hosting (zuwinasa cloud) Node.js sürümü, npm, ortam değişkenleri ve SSL panelden yönetilir; sunucu bakımı sağlayıcıdadır Git ve npm temel bilgisi Express ya da NestJS uygulamasını site, veritabanı ve e-postayla tek panelde yönetmek isteyenler

Plesk ve Git ile Node.js Uygulamasını 5 Adımda Yayına Alma

1. Projenizi Yayına Hazırlayın

Uygulamanın sunucuda sorunsuz çalışması için deponuzda şunları kontrol edin:

  • Port: Plesk uygulamanızı Passenger üzerinden çalıştırdığı için sabit bir port belirlemezsiniz. Portu ortam değişkeninden okuyun: app.listen(process.env.PORT || 3000).
  • Başlangıç dosyası: Uygulamayı başlatan dosyanın adını (app.js, server.js ya da TypeScript projelerinde derlenmiş dist/main.js) not edin.
  • Gizli bilgiler: .env dosyasını depoya eklemeyin; veritabanı adresini ve API anahtarlarını 4. adımda panelden ortam değişkeni olarak tanımlayacaksınız.
  • Bağımlılıklar: package.json ve package-lock.json depoda olmalıdır; node_modules klasörü depoya eklenmez, sunucuda kurulur.

2. GitHub Deponuzu Plesk'e Bağlayın

  • Plesk'te Web Siteleri ve Alan Adları (Websites & Domains) bölümünden alan adınızın Git menüsüne girin ve yeni depo ekleyin.
  • Kaynak olarak GitHub ya da Bitbucket gibi uzak Git barındırma seçeneğini işaretleyip deponun adresini yazın.
  • Özel (private) bir depo kullanıyorsanız adresi SSH biçiminde ([email protected]:kullanici/proje.git) girin. Plesk'in ürettiği SSH ortak anahtarını kopyalayıp GitHub'da deponun Settings > Deploy keys bölümüne ekleyin; bu anahtar varsayılan olarak yalnız o depoyu okuma yetkisi verir.
  • Hedef klasörü seçin (varsayılan /httpdocs) ve onaylayın. Plesk depoyu klonlayıp dosyaları bu klasöre yerleştirir.

3. Her Push'ta Otomatik Dağıtımı Açın

  • Deponun Depo Ayarları (Repository Settings) ekranında dağıtım biçimini otomatik olarak bırakın.
  • Aynı ekrandaki webhook adresini kopyalayın; GitHub'da Settings > Webhooks bölümüne yeni webhook olarak ekleyip tetikleyici olarak push olayını seçin. Artık depoya her push'unuzda Plesk değişiklikleri çekip yayına alır.
  • Ek dağıtım eylemlerini etkinleştirip her dağıtımdan sonra çalışacak komutları her satıra bir tane gelecek şekilde yazın: bağımlılıklar için npm ci, derleme için npm run build, uygulamanın yeni kodla yeniden başlaması için mkdir -p tmp && touch tmp/restart.txt (Passenger, uygulama kökündeki bu dosyanın tarihi değişince uygulamayı yeniden başlatır).
  • Komut çalışırken npm: command not found hatası alırsanız npm'in Plesk'teki tam yolunu yazın: /opt/plesk/node/<sürüm>/bin/npm.

4. Node.js Ayarlarını Yapın

Alan adınızın Node.js menüsünde şu alanları doldurun:

  • Node.js sürümü: Projenizin desteklediği LTS sürümünü listeden seçin.
  • Uygulama kökü (Application Root): Deponun dağıtıldığı klasör, ör. /httpdocs.
  • Belge kökü (Document Root): Uygulama kökünün bir alt klasörü olmalıdır, ör. /httpdocs/public; statik dosyalar buradan sunulur.
  • Uygulama modu (Application Mode): production; bu değer NODE_ENV değişkenine yazılır.
  • Başlangıç dosyası (Application Startup File): 1. adımda not ettiğiniz dosya; varsayılan değer app.js'dir.
  • Özel ortam değişkenleri: DATABASE_URL, API anahtarları ve diğer gizli bilgiler.

5. Bağımlılıkları Kurun ve Uygulamayı Başlatın

  • NPM install düğmesiyle package.json dosyasındaki bağımlılıkları kurun; derleme gerekiyorsa Run script ile build betiğini çalıştırın.
  • Enable Node.js düğmesine tıklayın; uygulamanız alan adınızda yayına girer. Ayarları değiştirdikten sonra Restart App ile yeniden başlatın.
  • HTTPS için SSL/TLS Sertifikaları bölümünden ücretsiz Let's Encrypt sertifikasını alın. Uygulama hata verirse alan adının Günlükler (Logs) bölümündeki Node.js kayıtlarına bakın.

Not: Başlangıç dosyanız import sözdizimiyle (ES modülü) yazılmışsa Passenger uygulamayı başlatırken require() of ES Module is not supported hatası verebilir. Bu durumda uygulama kökünde yalnız import('./app.js'); satırını içeren bir passenger.cjs dosyası oluşturun ve başlangıç dosyası olarak bunu seçin.

Hangi Pakette Çalışır?

zuwinasa cloud'da Node.js desteği Developer Hosting paketlerinde (Full Stack ve Dev-Box) bulunur; iki pakette de Git entegrasyonu ve /bin/bash SSH erişimi standarttır. Terminal kullanmayı tercih ettiğinizde aynı abonelikte npm komutlarını SSH ile doğrudan çalıştırabilirsiniz. Uygulamanız Docker ile çalışıyorsa Coolify sunucusu, işletim sistemi düzeyinde tam denetim gerekiyorsa root erişimli Cloud VPS daha uygun olur. Alan adı ve DNS gibi genel yayına alma adımları için uygulamamı internete nasıl yayınlarım rehberine bakabilirsiniz.

Sıkça Sorulan Sorular

PM2 olmadan uygulamam çökerse ne olur?

Plesk'te süreç yöneticisinin görevini Phusion Passenger üstlenir: çöken uygulama sürecini yeniden başlatır ve gelen istekleri yeni sürece yönlendirir. Sunucu yeniden başladığında da uygulamanız ek bir ayar gerekmeden çalışmaya devam eder. Kalıcı bir hata varsa nedenini alan adının Günlükler bölümündeki Node.js kayıtlarında görebilirsiniz.

Node.js uygulamamla birlikte veritabanı kullanabilir miyim?

Evet. zuwinasa cloud Developer Hosting paketlerinde MariaDB 10.11 ve PostgreSQL 15 kullanıma hazırdır; Dev-Box paketinde ayrıca Redis Cache bulunur. Veritabanını Plesk'in Veritabanları bölümünden oluşturup bağlantı bilgisini DATABASE_URL gibi bir ortam değişkeniyle uygulamanıza verirsiniz.

Plesk'te SSH ile npm komutu çalıştırabilir miyim?

Evet. zuwinasa cloud Developer Hosting paketlerinde /bin/bash kabuğuyla tam SSH erişimi vardır; npm, git ve kendi betiklerinizi doğrudan terminalden çalıştırabilirsiniz. Panel ile terminal birlikte kullanılabilir; örneğin bağımlılıkları SSH ile kurup uygulamayı panelden yeniden başlatabilirsiniz.

Hangi Node.js sürümünü kullanabilirim?

Plesk'te sunucuda kurulu Node.js sürümleri arasından her alan adı için ayrı seçim yapabilirsiniz; zuwinasa cloud'da güncel LTS sürümleri kullanıma hazırdır. Projenizin package.json dosyasındaki engines alanıyla uyumlu sürümü seçmeniz önerilir. Sürümü değiştirdikten sonra bağımlılıkları yeniden kurmak derleme hatalarını önler.

Projenizi yayına almaya hazır mısınız?

Plesk Obsidian, AMD EPYC işlemciler ve ücretsiz taşıma desteğiyle uygulamanızı dakikalar içinde canlıya alın.