Node.js veya Python uygulamamı sunucuda nasıl yayınlarım?

Linux Sunucu (SSH) 161 görüntülenme Markdown

Bilgisayarınızda çalışan bir Node.js, Flask, Django ya da başka bir web uygulamasını gerçek bir adreste yayınlamak için sunucuda dört iş yapılır: uygulamayı sunucuya almak, kapanmayacak şekilde çalıştırmak, internete Nginx üzerinden açmak ve https eklemek. Aşağıda hepsinin kısa yol haritası ve her adımın ayrıntılı rehberine bağlantı bulunur.

Yol haritası

  1. Sunucuya bağlanın ve temel hazırlığı yapın. Güvenlik duvarı, güncellemeler ve yetkisiz bir kullanıcı: yeni sunucuda ilk işler.
  2. Çalışma ortamını kurun. Node.js için nodejs ve npm; Python için python3-venv ve bir sanal ortam. Python'da pip hatası alırsanız: venv çözümü.
  3. Kodu sunucuya alın. git clone ile ya da SFTP ile. Bağımlılıkları kurun (npm install, pip install -r requirements.txt).
  4. Elle çalıştırıp deneyin. Uygulama bir portta (örneğin 3000 ya da 8000) dinlemeli. curl -I http://127.0.0.1:3000 ile yerelde cevap verdiğini doğrulayın. Uygulamayı yalnızca 127.0.0.1 adresinde dinletmek, portu dışarıya kapalı tutar.
  5. Kapanmayacak şekilde çalıştırın. SSH penceresini kapatınca uygulama durmamalı, sunucu yeniden başlayınca kendiliğinden açılmalı:
  6. Nginx'i önüne koyun. Nginx 80/443 portlarını dinler, istekleri uygulamanıza iletir: Nginx ters proxy.
  7. Alan adını yönlendirin ve https ekleyin. A kaydı: alan adı yönlendirme; sertifika: ücretsiz SSL.
  8. Güvenlik duvarını kapatın. Yalnızca 22, 80 ve 443 dışarıya açık olsun; uygulamanın kendi portunu (3000, 8000) açmayın: UFW.

En kısa Nginx ayarı

server {
    listen 80;
    server_name ornek.com;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

Dosyayı /etc/nginx/sites-available/ altına yazıp sites-enabled klasörüne bağlayın, sonra sudo nginx -t && sudo systemctl reload nginx çalıştırın. WebSocket gibi ek başlıklar için tam ayar rehberdedir.

Hangi çözüm bana uygun?

  • Kendi sunucunuzda tam kontrol istiyorsanız yukarıdaki yol: Linux VDS.
  • Sadece bir Discord botu ya da küçük Node.js/Python uygulaması çalıştıracaksanız Nginx ve sunucu bakımıyla uğraşmanıza gerek yok: Bot ve Uygulama Hosting.
  • Yalnızca PHP ya da WordPress sitesi için web hosting daha az emek ister.
  • Docker kullanıyorsanız: Docker kurulumu ve Compose.

Sık sorunlar

  • 502 Bad Gateway: Uygulama çalışmıyor ya da Nginx'teki port yanlış: 502 çözümü.
  • Uygulama kodu güncelledim ama değişmedi: Süreci yeniden başlatın (pm2 restart ya da systemctl restart).
  • Sunucu yeniden başlayınca uygulama açılmadı: Otomatik başlatmayı kurmamışsınızdır (pm2 save ve pm2 startup ya da systemctl enable).
  • Dışarıdan erişilmiyor: Güvenlik duvarı (sunucuda ve panelde), DNS ve Nginx server_name sırayla kontrol edilir: sitem açılmıyor.

Sık sorulanlar

Veritabanım var, nereye kurmalıyım?

Aynı sunucuya kurmak en basitidir: MySQL ve MariaDB ya da PostgreSQL. Veritabanı portunu dışarıya açmayın.

Kaç GB RAM yeter?

Küçük bir uygulama için 1 ila 2 GB yeter; trafik ve veritabanı büyüdükçe artar. Kullanımı izleyin: kaynak kullanımı.

root olarak mı çalıştırmalıyım?

Hayır. Uygulama için yetkisiz bir kullanıcı kullanın ve yönetim işleri için ayrı bir sudo kullanıcısı açın: sudo kullanıcı açma.

İlgili makaleler

Sorununuz çözülmediyse destek talebi açın. Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.

Faydalı oldu mu?

Geri bildiriminiz için teşekkürler!

Hâlâ Yardıma mı İhtiyacınız Var?

Yukarıda bulamadığınız her şey için destek ekibimiz her zaman yanınızda.