Tüm barındırma hizmetlerinde 15% tasarruf edin

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın: Skills Başlayın
Bölüm
Linux Sanal Sunucular Yönetim

Flask Hosting’e Nasıl Kurulur: Tam Adım Adım Rehber

Flask, Python için hafif ve esnek bir web framework’üdür ve geliştiricilerin web uygulamalarını hızlı ve verimli bir şekilde oluşturmasını ve dağıtmasını sağlar. İster kişisel bir proje, ister bir REST API, ister tam ölçekli bir web hizmeti başlatıyor olun, Flask’ı bir hosting ortamında doğru şekilde yüklemek ve yapılandırmak önemli bir beceridir. Bu kapsamlı kılavuz, sunucu kurulumundan Gunicorn ve Nginx ile üretim dağıtımına kadar her adımda sizi yönlendirir.

1. Ön Koşullar

Kurulum işlemine başlamadan önce, aşağıdakilerin hazır olduğundan emin olun:

Python Destekleyen Hosting Ortamı

Sunucu ortamınız üzerinde tam kontrol sağlayan bir hosting hizmeti gereklidir. Paylaşımlı hosting planları genellikle Python yürütülmesini kısıtlar, bu nedenle Flask dağıtımları için bir VPS Hosting planı veya bir Dedicated Server önerilir. Bu seçenekler size root erişimi, tam paket yönetimi yetenekleri ve yığını tam olarak ihtiyacınız şekilde yapılandırma esnekliği sağlar.

SSH Erişimi

Uzak sunucunuza bağlanmak ve komut yürütmek için SSH erişimine ihtiyacınız olacak. Çoğu Linux tabanlı VPS ve dedicated server ortamı bunu varsayılan olarak destekler.

Python Kurulu

Python 3.8 veya daha yüksek bir sürüm önerilir. Çoğu modern hosting ortamı Python’ı önceden yüklü olarak gelir, ancak bunu kurulum sırasında doğrulayacağız.

İsteğe Bağlı: Bir Alan Adı

Flask uygulamanızı ham bir IP adresi yerine bir alan adı aracılığıyla herkese açık hale getirmeyi planlıyorsanız, başlamadan önce Domain Registration aracılığıyla bir tane kaydetmeyi düşünün.

2. SSH Aracılığıyla Sunucunuza Bağlanma

Terminal’inizi (Linux/macOS) veya PuTTY gibi bir SSH istemcisini (Windows) açın ve sunucunuza bağlanın:

ssh username@your_server_ip

username yerine gerçek sunucu kullanıcı adınızı ve your_server_ip yerine sunucunuzun genel IP adresini yazın.

Bağlandıktan sonra, Python 3’ün kullanılabilir olduğunu doğrulayın:

python3 --version

Python 3.10.x benzeri bir çıktı görmelisiniz. Python yüklü değilse, yüklemeye devam edin:

sudo apt install python3

3. Sunucunuzu Güncelleme

Herhangi bir paket kurmadan önce, sisteminizin paket listesini güncellemek ve mevcut paketleri en son sürümlerine yükseltmek en iyi uygulamadır:

sudo apt update
sudo apt upgrade -y

Bu, tüm bağımlılıkların en kararlı ve güvenli sürümleriyle çalıştığınızı sağlar.

4. Flask Kurulumu

Adım 1: pip Kurulumu

pip Python’un paket yöneticisidir ve Flask ile diğer Python kütüphanelerini kurmak için gereklidir. Henüz yüklü değilse kurun:

sudo apt install python3-pip -y

Kurulumu doğrulayın:

pip3 --version

Adım 2: Proje Dizini Oluşturun

Uygulamanızı organize etmek için özel bir dizin oluşturun:

mkdir my_flaskapp
cd my_flaskapp

Adım 3: Sanal Ortam Kurun

Sanal ortam kullanmak, projenizin bağımlılıklarını genel Python kurulumundan izole eder, sürüm çatışmalarını önler ve sunucunuzu temiz tutar:

sudo apt install python3-venv -y
python3 -m venv venv

Sanal ortamı etkinleştirin:

source venv/bin/activate

Terminal istemleriniz değişerek sanal ortamın etkin olduğunu gösterecektir, genellikle satırın başında (venv) gösterilir.

Adım 4: Flask Kurulumu

Sanal ortam etkinleştirilmiş durumdayken, pip kullanarak Flask’ı kurun:

pip install Flask

Kurulumu onaylayın:

flask --version

Flask sürümünü Python ve Werkzeug sürümleriyle birlikte görmelisiniz.

5. Basit Bir Flask Uygulaması Oluşturma

Adım 1: Uygulama Dosyasını Oluşturun

Proje dizininizde app.py adlı yeni bir dosya oluşturun:

nano app.py

Adım 2: Flask Uygulamanızı Yazın

Aşağıdaki minimal Flask uygulama kodunu ekleyin:

from flask import Flask

app = Flask(__name__)

@app.route('/')
def home():
    return "Hello, World! Flask is running successfully."

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=5000)

Kod açıklaması:

  • Flask(__name__) — Yeni bir Flask uygulama örneği oluşturur.
  • @app.route('/') — Ana sayfa için bir URL rotası tanımlar.
  • app.run(host='0.0.0.0', port=5000) — Geliştirme sunucusunu başlatır ve bunu 5000 numaralı bağlantı noktasında tüm ağ arayüzlerinde erişilebilir hale getirir.

Adım 3: Kaydedin ve Çıkın

CTRL + X tuşuna basın, ardından Y tuşuna basın ve dosyayı kaydetmek ve nano editörden çıkmak için Enter tuşuna basın.

6. Flask Uygulamanızı Geliştirme Modunda Çalıştırma

Uygulamanızı test etmek için Flask geliştirme sunucusunu başlatın:

python app.py

Uygulamanız artık bir web tarayıcısında şu adreste erişilebilir olacaktır:

http://your_server_ip:5000

> Önemli: Yerleşik Flask geliştirme sunucusu üretim kullanımı için uygun değildir. Tek iş parçacıklı, performans için optimize edilmemiş ve kritik güvenlik özelliklerinden yoksundur. Canlı dağıtımlar için her zaman üretim sınıfı bir WSGI sunucusu kullanın.

7. Flask’ı Gunicorn ile Üretim Ortamında Dağıtma

Üretim dağıtımları için, Gunicorn (Green Unicorn) en yaygın kullanılan Python WSGI HTTP sunucusudur. Birden fazla eşzamanlı isteği verimli bir şekilde işler ve Nginx ile sorunsuz bir şekilde entegre olur.

Adım 1: Gunicorn’u Yükleyin

Sanal ortamınız hala aktif durumdayken, Gunicorn’u yükleyin:

pip install gunicorn

Adım 2: Uygulamanızı Gunicorn ile Çalıştırın

Flask uygulamanızı Gunicorn kullanarak başlatın, localhost’a 8000 portunda bağlayın:

gunicorn app:app -b 127.0.0.1:8000 --workers 3

Parametre açıklaması:

  • app:appapp.py dosyasının içindeki app nesnesine atıfta bulunur.
  • -b 127.0.0.1:8000 — Gunicorn’u localhost’a 8000 portunda bağlar (Nginx harici trafiği işleyecektir).
  • --workers 3 — Eşzamanlı istekleri işlemek için 3 worker işlemi başlatır. Yaygın bir formül (2 × CPU cores) + 1 şeklindedir.

Adım 3: Gunicorn’u Systemd Hizmeti Olarak Çalıştırın (Önerilen)

Gunicorn’un sunucu yeniden başlatıldığında otomatik olarak başlamasını sağlamak için bir systemd hizmet dosyası oluşturun:

sudo nano /etc/systemd/system/my_flaskapp.service

Aşağıdaki yapılandırmayı ekleyin:

[Unit]
Description=Gunicorn instance to serve my_flaskapp
After=network.target

[Service]
User=your_username
Group=www-data
WorkingDirectory=/home/your_username/my_flaskapp
Environment="PATH=/home/your_username/my_flaskapp/venv/bin"
ExecStart=/home/your_username/my_flaskapp/venv/bin/gunicorn app:app -b 127.0.0.1:8000 --workers 3

[Install]
WantedBy=multi-user.target

your_username yerine gerçek sunucu kullanıcı adınızı yazın. Ardından hizmeti etkinleştirin ve başlatın:

sudo systemctl daemon-reload
sudo systemctl start my_flaskapp
sudo systemctl enable my_flaskapp

Hizmet durumunu kontrol edin:

sudo systemctl status my_flaskapp

8. Nginx’i Ters Proxy Olarak Yapılandırma

Nginx, Gunicorn’un önünde yer alan ve gelen tüm HTTP/HTTPS trafiğini işleyen bir ters proxy görevi görür. Bu kurulum performansı iyileştirir, SSL sonlandırmasını etkinleştirir ve statik dosyaları verimli bir şekilde sunmanızı sağlar.

Adım 1: Nginx’i Yükleyin

sudo apt install nginx -y

Adım 2: Nginx Yapılandırma Dosyası Oluşturun

Flask uygulamanız için yeni bir sunucu bloğu yapılandırması oluşturun:

sudo nano /etc/nginx/sites-available/my_flaskapp

Aşağıdaki yapılandırmayı ekleyin:

server {
    listen 80;
    server_name your_domain_or_ip;  # Replace with your domain or server IP

    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;
        proxy_set_header X-Forwarded-Proto $scheme;
    }

    location /static {
        alias /home/your_username/my_flaskapp/static;
        expires 30d;
    }
}

Adım 3: Yapılandırmayı Etkinleştirin

Siteyi etkinleştirmek ve Nginx yapılandırmasını test etmek için sembolik bir bağlantı oluşturun:

sudo ln -s /etc/nginx/sites-available/my_flaskapp /etc/nginx/sites-enabled
sudo nginx -t

Test syntax is ok ve test is successful döndürürse, Nginx’i yeniden başlatın:

sudo systemctl restart nginx

Flask uygulamanız artık http://your_domain_or_ip adresinde 80 numaralı bağlantı noktasında erişilebilir.

9. Flask Uygulamanızı SSL/HTTPS ile Güvence Altına Almak

Uygulamanızı HTTPS üzerinden çalıştırmak artık isteğe bağlı değildir — güvenlik, kullanıcı güveni ve SEO sıralamaları için temel bir gereksinimdir. Certbot ile Let’s Encrypt kullanarak ücretsiz bir SSL sertifikası alabilir ve yükleyebilir veya geliştirilmiş doğrulama ve garanti kapsamı için SSL Sertifikaları aracılığıyla premium bir sertifika satın alabilirsiniz.

Certbot’u Yükleyin ve Ücretsiz SSL Sertifikası Alın

sudo apt install certbot python3-certbot-nginx -y
sudo certbot --nginx -d your_domain.com -d www.your_domain.com

Certbot, Nginx yapılandırmanızı otomatik olarak değiştirerek HTTPS’yi etkinleştirecek ve otomatik sertifika yenilemeyi ayarlayacaktır.

Otomatik yenilemenin yapılandırıldığını doğrulayın:

sudo certbot renew --dry-run

10. Firewall Yapılandırması

Sunucunuzun güvenlik duvarının gerekli bağlantı noktalarında trafiğe izin verdiğinden emin olun:

sudo ufw allow OpenSSH
sudo ufw allow 'Nginx Full'
sudo ufw enable
sudo ufw status

Nginx Full hem 80 numaralı bağlantı noktasını (HTTP) hem de 443 numaralı bağlantı noktasını (HTTPS) açar.

11. Sorun Giderme Yaygın Sorunlar

SorunMuhtemel NedenÇözüm
502 Bad GatewayGunicorn çalışmıyorsudo systemctl status my_flaskapp kontrol edin
Permission denied soketindeYanlış dosya izinleriNginx kullanıcısının uygulama dizinine erişimi olduğundan emin olun
Flask uygulaması bulunamadıHizmet dosyasında yanlış çalışma dizinisystemd yapılandırmasında WorkingDirectory yolunu iki kez kontrol edin
Port 5000 erişilebilir değilGüvenlik duvarı portu engelliyorsudo ufw allow 5000 ile portu açın (yalnızca geliştirme)
ModuleNotFoundErrorSanal ortam etkinleştirilmediExecStart venv’nin Python/Gunicorn ikilisine işaret ettiğinden emin olun

12. Özet ve Sonraki Adımlar

Flask uygulamasını bir hosting sunucusuna dağıtmak, birkaç birbiriyle bağlantılı adımı içerir: temiz bir sunucu ortamı kurulumu, Python ve Flask’ı sanal ortamda yükleme, Gunicorn’u üretim WSGI sunucusu olarak yapılandırma ve Nginx’i ön tarafta ters proxy olarak yerleştirme. SSL şifrelemesi eklemek güvenli, üretime hazır bir dağıtımı tamamlar.

İşte tam dağıtım yığınının hızlı bir özeti:

  • Flask — Python web çerçevesi
  • Gunicorn — Üretim WSGI sunucusu
  • Nginx — Ters proxy ve statik dosya sunucusu
  • SSL/TLS — HTTPS şifrelemesi
  • Systemd — İşlem yönetimi ve otomatik yeniden başlatma

En iyi Flask hosting deneyimi için, tam root erişimi ve güvenilir performans sağlayan bir sunucu ortamına ihtiyacınız vardır. AlexHost’un VPS Hosting planları mükemmel bir seçimdir ve SSD depolama, özel kaynaklar ve tam SSH erişimi sunar. Yüksek trafikli uygulamalar için daha fazla güce ihtiyacınız varsa, maksimum performans ve izolasyon için Dedicated Servers seçeneğini keşfedin.

Birden fazla web projesini yönetiyorsanız ve kontrol paneli arayüzünü tercih ediyorsanız, sunucu yönetimini basitleştirirken yine de Python uygulamalarını çalıştırma esnekliği veren cPanel ile VPS seçeneğini göz önünde bulundurun.

Bu kılavuzu izleyerek, Flask uygulamanız artık düzgün şekilde yapılandırılmış, güvenli ve bir üretim ortamında gerçek kullanıcılara hizmet vermeye hazırdır. Bağımlılıklarınızı düzenli olarak güncelleyin, uygulama günlüklerinizi izleyin ve sağlıklı, uzun süreli bir dağıtımı korumak için uygun yedekleme stratejileri uygulayın.