PoolByte

cPanel'de Node.js ve Python uygulaması çalıştırma rehberi

· PoolByte Technology

cPanel'de Node.js ve Python uygulaması çalıştırma rehberi

Paylaşımlı hosting çoğu zaman PHP ile çalışan siteler için düşünülür. Oysa CloudLinux kullanan cPanel sunucularında küçük ve orta ölçekli Node.js ve Python uygulamaları da çalıştırılabilir. Bir form işleme servisi, basit bir API, bir webhook alıcısı ya da Flask veya Express ile yazılmış küçük bir yönetim aracı için ayrı bir sunucu kiralamak gerekmeyebilir. Bu rehberde cPanel üzerinde bir Node.js uygulaması veya Python uygulaması kurmayı adım adım anlatıyoruz.

Bu araçlar cPanel'de genellikle "Setup Node.js App" ve "Setup Python App" adlarıyla görünür. Paketinizde bu araçları göremiyorsanız destek ekibine danışın; özelliğin etkin olup olmadığı sunucu yapılandırmasına bağlıdır.

Paylaşımlı ortama uygun mu?

Önce uygulamanızın bu ortama uygun olup olmadığını değerlendirin. Bu tür kurulumlarda uygulamalar genellikle Phusion Passenger aracılığıyla, gelen isteklerle çalışır. Bir süre istek gelmezse uygulama durdurulup ilk istekte yeniden başlatılabilir.

Bu yapı istek-yanıt mantığıyla çalışan web uygulamaları ve API'ler için uygundur. Sürekli çalışması gereken arka plan işçileri, yoğun WebSocket bağlantıları veya uzun süre yüksek işlemci kullanan görevler için ise VPS gibi ayrılmış kaynaklar daha doğru bir seçimdir. Paylaşımlı ortamdaki kaynak sınırlarını CPU, RAM ve I/O rehberimizde anlattık.

Uygulamayı oluşturun

Bir Node.js uygulaması oluşturmak için cPanel'de "Setup Node.js App" bölümüne girip yeni kayıt açtığınızda şu alanları doldurursunuz:

  1. Node.js sürümü: Uygulamanızın desteklediği sürümü seçin.
  2. Uygulama modu: Canlı ortam için production.
  3. Uygulama kök dizini: Kodun bulunacağı klasör, örneğin apps/api. Bu klasörü public_html dışında tutmak, kaynak kodunuzun doğrudan erişime açılmasını önler.
  4. Uygulama adresi: Uygulamanın çalışacağı alan adı veya alt yol.
  5. Başlangıç dosyası: Uygulamayı başlatan dosya, örneğin app.js.

Python için "Setup Python App" bölümünde de benzer alanlar bulunur. Başlangıç dosyası genellikle passenger_wsgi.py, giriş noktası ise WSGI uygulama nesnesinin adıdır.

En basit hâliyle çalışan bir Node.js uygulaması başlangıç dosyası şöyledir:

const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain; charset=utf-8' });
  res.end('Uygulama çalışıyor');
});

server.listen(process.env.PORT || 3000);

Python için WSGI uyumlu en basit örnek ise şöyledir:

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/plain; charset=utf-8')])
    return ['Uygulama çalışıyor'.encode('utf-8')]

Kodu yükleyin ve bağımlılıkları kurun

Kodu sunucuya SFTP veya Git ile aktarabilirsiniz. Git ile sürüm yönetimi ve geri dönüş adımlarını Git rehberimizde, güvenli dosya aktarımını ise SFTP rehberimizde bulabilirsiniz.

Node.js uygulamalarında package.json dosyası kök dizine yüklendikten sonra arayüzdeki düğmeyle npm install çalıştırılabilir. Uygulama sayfasında, terminalde uygulamanın sanal ortamına girmek için kullanılacak komut da gösterilir. Bu komutla ortama girip bağımlılıkları kendiniz kurabilir veya betik çalıştırabilirsiniz.

Python uygulamalarında her uygulama için ayrı bir sanal ortam oluşturulur. Arayüzde gösterilen etkinleştirme komutuyla ortama girip pip install -r requirements.txt ile bağımlılıkları kurun. Paketleri sistem geneline değil, bu sanal ortama kurmak farklı uygulamaların birbirini etkilemesini önler.

Ortam değişkenlerini koddan ayırın

API anahtarları, veritabanı şifreleri ve gizli değerleri kodun içine yazmayın. Uygulama ayarlarındaki ortam değişkenleri bölümünden tanımlayın ve kodda process.env veya os.environ üzerinden okuyun. Bir .env dosyası kullanıyorsanız bu dosyanın web üzerinden erişilebilir bir klasörde durmadığından ve Git deposuna eklenmediğinden emin olun.

Değişiklikten sonra yeniden başlatın ve kayıtlara bakın

Kodu veya ortam değişkenlerini güncelledikten sonra uygulamayı arayüzdeki yeniden başlatma düğmesiyle yeniden başlatın. Aksi hâlde eski kod çalışmaya devam edebilir.

Node.js uygulaması veya Python uygulaması açılmıyor ve tarayıcıda 502 veya 503 hatası görüyorsanız ilk bakılacak yer uygulamanın hata kayıtlarıdır. Node.js uygulamalarında uygulama ayarlarında bir Passenger kayıt dosyası tanımlayabilirsiniz; Python uygulamalarında hatalar genellikle uygulama kök dizinindeki stderr.log dosyasına yazılır. Eksik bir paket, yanlış başlangıç dosyası veya hatalı sürüm seçimi en sık karşılaşılan nedenlerdir. Hata kodlarının anlamı için 404, 500, 502 ve 503 rehberimize bakabilirsiniz.

Sürüm değişikliklerini test ederek yapın

Node.js veya Python sürümünü değiştirmek, bağımlılıkların yeniden kurulmasını gerektirebilir ve bazı paketler yeni sürümle uyumsuz olabilir. Sürüm değişikliğini önce ayrı bir test uygulamasında deneyin; adımları staging ortamı rehberimizde anlattık.

Sık sorulan sorular

Express, Flask veya Django çalışır mı?

Genellikle evet. Express uygulamaları standart HTTP sunucusu olarak, Flask ve Django uygulamaları ise WSGI uyumlu oldukları için Passenger üzerinden çalıştırılabilir. Framework'ün gerektirdiği sürüm ve bağımlılıkların ortamda bulunduğundan emin olun.

Uygulamam bir süre sonra kendiliğinden kapanıyor, normal mi?

Passenger, bir süre istek almayan uygulamaları kaynak tasarrufu için durdurabilir ve ilk istekte yeniden başlatır. İlk isteğin biraz yavaş olması bu yüzdendir. Düzenli çalışması gereken işler için uygulamanın sürekli açık kalmasına güvenmek yerine cron görevleri kullanın.

Resmî kaynaklar