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

https://kervanhosting.com/bilgi-bankasi/makale/node-js-veya-python-uygulamami-sunucuda-nasil-yayinlarim

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](https://kervanhosting.com/bilgi-bankasi/makale/yeni-linux-sunucuda-ilk-yapilmasi-gerekenler).
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ü](https://kervanhosting.com/bilgi-bankasi/makale/pip-externally-managed-environment-hatasi-python-sanal-ortam-venv).
3. **Kodu sunucuya alın.** `git clone` ile ya da [SFTP ile](https://kervanhosting.com/bilgi-bankasi/makale/sunucuya-dosya-yukleme-sftp-filezilla-winscp). 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ı:
  - Node.js için [PM2](https://kervanhosting.com/bilgi-bankasi/makale/pm2-ile-node-js-uygulamasini-arka-planda-calistirma-ve-otomatik-baslatma),
  - Python için [Gunicorn ve systemd](https://kervanhosting.com/bilgi-bankasi/makale/python-flask-django-uygulamasini-gunicorn-ve-systemd-ile-yayinlama),
  - her dil için genel çözüm olarak systemd servisi: [systemd servisi ve hata ayıklama](https://kervanhosting.com/bilgi-bankasi/makale/systemd-servisi-baslamiyor-systemctl-status-ve-journalctl-ile-hata-bulma).
6. **Nginx'i önüne koyun.** Nginx 80/443 portlarını dinler, istekleri uygulamanıza iletir: [Nginx ters proxy](https://kervanhosting.com/bilgi-bankasi/makale/nginx-reverse-proxy-node-js-uygulamasini-nginx-arkasinda-yayinlama).
7. **Alan adını yönlendirin ve https ekleyin.** A kaydı: [alan adı yönlendirme](https://kervanhosting.com/bilgi-bankasi/makale/alan-adimi-sunucuma-sitemde-nasil-yonlendiririm); sertifika: [ücretsiz SSL](https://kervanhosting.com/bilgi-bankasi/makale/siteme-ucretsiz-ssl-https-nasil-eklerim).
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](https://kervanhosting.com/bilgi-bankasi/makale/ufw-ile-port-acma-ve-kapatma-ubuntu-guvenlik-duvari).

## 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](https://kervanhosting.com/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](https://kervanhosting.com/bot-hosting).
- **Yalnızca PHP ya da WordPress sitesi** için [web hosting](https://kervanhosting.com/web-hosting) daha az emek ister.
- **Docker** kullanıyorsanız: [Docker kurulumu](https://kervanhosting.com/bilgi-bankasi/makale/docker-nasil-kurulur) ve [Compose](https://kervanhosting.com/bilgi-bankasi/makale/docker-compose-ile-birden-fazla-konteyner-calistirma-ornek).

## Sık sorunlar

- **502 Bad Gateway:** Uygulama çalışmıyor ya da Nginx'teki port yanlış: [502 çözümü](https://kervanhosting.com/bilgi-bankasi/makale/nginx-502-bad-gateway-hatasi-nedenleri-ve-cozumu).
- **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](https://kervanhosting.com/bilgi-bankasi/makale/sitem-acilmiyor-adim-adim-kontrol-listesi).

## Sık sorulanlar

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

Aynı sunucuya kurmak en basitidir: [MySQL ve MariaDB](https://kervanhosting.com/bilgi-bankasi/makale/mysql-mariadb-veritabani-nasil-kurulur-ve-guvenli-kullanilir) ya da [PostgreSQL](https://kervanhosting.com/bilgi-bankasi/makale/postgresql-kurulumu-kullanici-veritabani-ve-uzaktan-erisim-ubuntu). 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ı](https://kervanhosting.com/bilgi-bankasi/makale/sunucumun-islemci-bellek-ve-disk-kullanimini-nasil-gorurum).

### 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](https://kervanhosting.com/bilgi-bankasi/makale/linux-sunucuda-sudo-yetkili-kullanici-ac-ve-root-girisini-kapat).

**İlgili makaleler**

- [PM2 ile Node.js uygulamasını arka planda çalıştırma ve otomatik başlatma](https://kervanhosting.com/bilgi-bankasi/makale/pm2-ile-node-js-uygulamasini-arka-planda-calistirma-ve-otomatik-baslatma)
- [Python Flask ya da Django uygulamasını Gunicorn ve systemd ile yayınlama](https://kervanhosting.com/bilgi-bankasi/makale/python-flask-django-uygulamasini-gunicorn-ve-systemd-ile-yayinlama)
- [Nginx ters proxy: Node.js ya da Python uygulamasını Nginx arkasında yayınlama](https://kervanhosting.com/bilgi-bankasi/makale/nginx-reverse-proxy-node-js-uygulamasini-nginx-arkasinda-yayinlama)

*Sorununuz çözülmediyse [destek talebi açın](https://kervanhosting.com/destek-taleplerim). Hangi adımı denediğinizi ve ekranda ne gördüğünüzü yazarsanız çözüm çok daha hızlı olur.*
