
Flask Uygulamanızı Narweb VDS’e Deploy Etmenin Temelleri

Flask ve Narweb VDS ile ilk deploy adımlarını öğrenin: Sunucu hazırlığı, uygulama aktarımı, sanal ortam kurulumu, Gunicorn ve Nginx ile ilk yayına alma.
Giriş: Neden Flask ve Narweb VDS?
Flask, Python tabanlı hafif bir web framework’üdür ve esnekliği sayesinde küçükten büyüğe projelerde tercih edilir. Narweb VDS ise Türkiye merkezli, yüksek performanslı ve uygun maliyetli bir sanal sunucu hizmeti sunar. Bu yazı dizisinde, Flask uygulamanızı Narweb VDS üzerinde nasıl profesyonelce yayınlayacağınızı adım adım öğreneceksiniz.
Bu bölümde, temel kurulum ve ilk deploy sürecini ele alacağız. Sunucuya bağlanmaktan başlayarak Flask uygulamanızı yayına hazır hale getireceksiniz.
Gerekli Ön Koşullar ve Hazırlıklar
Başlamadan önce şunları hazırlayın:
- Narweb VDS hesabınız ve aktif bir sanal sunucu (Ubuntu 20.04 veya 22.04 önerilir).
- Yerel makinenizde çalışan bir Flask uygulaması.
- Temel Linux komut bilgisi.
- SSH istemcisi (PuTTY, OpenSSH veya Terminal).
- (Opsiyonel) Bir alan adı (ör. example.com).
Yerel Flask uygulamanızın bir requirements.txt
dosyası olduğundan emin olun. Bu dosyayı oluşturmak için:
pip freeze > requirements.txt
Sunucuya SSH ile Bağlanma
Narweb panelinden VDS’inize ait IP adresi, kullanıcı adı (genellikle root
) ve şifreyi alın. Yerel terminalinizde aşağıdaki komutla bağlanın:
ssh root@<sunucu-ip-adresi>
İlk bağlantıda parolayı girin. Güvenlik için sonraki bölümlerde SSH anahtar tabanlı erişimi yapılandıracağız.
Python, pip, venv ve Nginx Kurulumu
Ubuntu sunucunuzda gerekli araçları kurun:
# Sistem güncelleme
apt update && apt upgrade -y
# Python ve pip kurulumu
apt install -y python3 python3-pip python3-venv
# Nginx kurulumu
apt install -y nginx
# Diğer bağımlılıklar
apt install -y git
Nginx servisini başlatın ve aktifleştirin:
systemctl start nginx
systemctl enable nginx
Uygulamanın Sunucuya Aktarılması (SCP/FTP)
Flask uygulamanızı sunucuya aktarmak için SCP kullanabilirsiniz. Yerel makinenizde terminal açın ve proje klasörünüzü sunucuya yükleyin:
scp -r /yerel/flask-uygulama root@<sunucu-ip-adresi>:/root/
Sunucuda, uygulamanızı uygun bir dizine taşıyın:
mv /root/flask-uygulama /var/www/flask-uygulama
cd /var/www/flask-uygulama
Sanal Ortam Kurulumu ve Bağımlılıkların Yüklenmesi
Uygulama dizininde bir sanal ortam oluşturun:
python3 -m venv venv
source venv/bin/activate
Bağımlılıkları yükleyin:
pip install -r requirements.txt
pip install gunicorn
Gunicorn ile Flask Uygulamasının Çalıştırılması
Gunicorn, Flask uygulamanızı üretim ortamında çalıştırmak için kullanılan bir WSGI sunucusudur. Uygulamanızı test etmek için:
gunicorn --bind 0.0.0.0:8000 wsgi:app
Burada wsgi:app
, Flask uygulamanızın giriş noktasıdır. wsgi.py
dosyasında tanımlı olmalıdır. Örnek bir wsgi.py
:
from myapp import app
if __name__ == "__main__":
app.run()
Test için tarayıcıda http://<sunucu-ip-adresi>:8000
adresini kontrol edin. Çalışıyorsa, Ctrl+C
ile durdurun.
Nginx ile Ters Proxy Yapılandırması
Nginx, Gunicorn’a gelen istekleri yönlendirmek için ters proxy olarak yapılandırılır. Yeni bir Nginx yapılandırma dosyası oluşturun:
nano /etc/nginx/sites-available/flask-uygulama
Aşağıdaki içeriği ekleyin:
server {
listen 80;
server_name <sunucu-ip-adresi> <alan-adi>;
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
Siteyi etkinleştirin:
ln -s /etc/nginx/sites-available/flask-uygulama /etc/nginx/sites-enabled/
Nginx yapılandırmasını test edin ve yeniden başlatın:
nginx -t
systemctl restart nginx
İlk Yayına Alma ve Test
Gunicorn’u arka planda çalıştırın:
gunicorn --bind 0.0.0.0:8000 wsgi:app &
Tarayıcıda http://<sunucu-ip-adresi>
adresine giderek uygulamanızı test edin. Her şey yolundaysa, uygulamanız yayında!
Kontrol Listesi
- [ ] Sunucuya SSH ile bağlandınız mı?
- [ ] Python, pip, venv ve Nginx kurulu mu?
- [ ] Uygulama sunucuya aktarıldı mı?
- [ ] Sanal ortam oluşturuldu ve bağımlılıklar yüklendi mi?
- [ ] Gunicorn ile uygulama çalışıyor mu?
- [ ] Nginx ters proxy yapılandırması tamamlandı mı?
- [ ] Uygulama tarayıcıda görüntülendi mi?
Sıkça Sorulan Sorular
S: Gunicorn yerine başka bir WSGI sunucusu kullanabilir miyim?
C: Evet, uWSGI veya Waitress gibi alternatifler kullanılabilir, ancak Gunicorn basitliği ve performansı ile popülerdir.
S: Nginx yerine Apache kullanabilir miyim?
C: Evet, ancak Nginx hafifliği ve ters proxy performansı ile tercih edilir.
Bir Sonraki Bölümde Neler Var?
Bir sonraki bölümde, uygulamanızı daha güvenli ve performanslı hale getirmek için SSL kurulumu, güvenlik duvarı ayarları, loglama ve optimizasyon tekniklerini ele alacağız.
Bir yanıt yazın