Flask Hosting’e Nasıl Kurulur: Tam Adım Adım Rehber
Flask, Python için hafif ve esnek bir web çerçevesidir ve geliştiricilerin web uygulamalarını hızlı ve verimli bir şekilde oluşturmasını ve dağıtmasını sağlar. Kişisel bir proje, REST API veya tam ölçekli bir web hizmeti başlatıyor olsanız da, Flask’ı bir barındırma 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
Yükleme işlemine başlamadan önce aşağıdakilerin hazır olduğundan emin olun:
Python’u Destekleyen Barındırma Ortamı
Sunucu ortamınız üzerinde tam kontrol sağlayan bir barındırma hizmeti gereklidir. Paylaşılan barındırma planları genellikle Python yürütülmesini kısıtlar, bu nedenle Flask dağıtımları için VPS Barındırma planı veya Özel Sunucu şiddetle önerilir. Bu seçenekler size kök erişimi, tam paket yönetimi yeteneklerini ve yığını tam olarak yapılandırma esnekliğini 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 özel sunucu ortamı bunu varsayılan olarak destekler.
Python Yüklü
Python 3.8 veya üstü önerilir. Çoğu modern barındırma ortamı Python’u önceden yüklü olarak gelir, ancak kurulum sırasında bunu doğrulayacağız.
İsteğe Bağlı: Alan Adı
Flask uygulamanızı ham IP adresi yerine bir alan adı aracılığıyla herkese açık hale getirmeyi planlıyorsanız, başlamadan önce Alan Adı Kaydı 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_ipusername 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 --versionPython 3.10.x benzer bir çıktı görmelisiniz. Python yüklü değilse, yüklemeye devam edin:
sudo apt install python33. Sunucunuzu Güncelleme
Herhangi bir paket yüklemeden önce, sistem paket listenizi güncellemek ve mevcut paketleri en son sürümlerine yükseltmek en iyi uygulamadır:
sudo apt update
sudo apt upgrade -yBu, tüm bağımlılıkların en kararlı ve güvenli sürümleriyle çalıştığınızı sağlar.
4. Flask Yükleme
Adım 1: pip Yükleme
pip Python’un paket yöneticisidir ve Flask ile diğer Python kütüphanelerini yüklemek için gereklidir. Henüz mevcut değilse yükleyin:
sudo apt install python3-pip -yYüklemeyi doğrulayın:
pip3 --versionAdım 2: Proje Dizini Oluşturma
Uygulamanızı bir adanmış dizin oluşturarak düzenleyin:
mkdir my_flaskapp
cd my_flaskappAdım 3: Sanal Ortam Kurma
Sanal ortam kullanmak, projenizin bağımlılıklarını genel Python yüklemesinden izole eder, sürüm çatışmalarını önler ve sunucunuzu temiz tutar:
sudo apt install python3-venv -y
python3 -m venv venvSanal ortamı etkinleştirin:
source venv/bin/activateTerminal istemciniz değişecek ve sanal ortamın etkin olduğunu gösterecek, tipik olarak satırın başında (venv) gösterecektir.
Adım 4: Flask Yükleme
Sanal ortam etkinken, pip kullanarak Flask’ı yükleyin:
pip install FlaskYüklemeyi doğrulayın:
flask --versionFlask sürümünü Python ve Werkzeug sürümleriyle birlikte görmelisiniz.
5. Basit Flask Uygulaması Oluşturma
Adım 1: Uygulama Dosyası Oluşturma
Proje dizininizin içinde app.py adında yeni bir dosya oluşturun:
nano app.pyAdım 2: Flask Uygulamanızı Yazma
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ğ arabirimlerinde erişilebilir hale getirir.
Adım 3: Kaydetme ve Çıkma
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.pyUygulamanız artık bir web tarayıcısında şu adreste erişilebilir:
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 Yükleme
Sanal ortamınız hala etkinken, Gunicorn’u yükleyin:
pip install gunicornAdım 2: Uygulamanızı Gunicorn ile Çalıştırma
Flask uygulamanızı Gunicorn kullanarak başlatın, localhost’a 8000 numaralı bağlantı noktasında bağlayın:
gunicorn app:app -b 127.0.0.1:8000 --workers 3Parametre açıklaması:
app:app—app.pydosyasının içindekiappnesnesine atıfta bulunur.-b 127.0.0.1:8000— Gunicorn’u localhost’a 8000 numaralı bağlantı noktasında bağlar (Nginx harici trafiği işleyecektir).--workers 3— Eşzamanlı istekleri işlemek için 3 çalışan işlemi oluşturur. Yaygın bir formül(2 × CPU cores) + 1şeklindedir.
Adım 3: Gunicorn’u Systemd Hizmeti Olarak Çalıştırma (Önerilir)
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.serviceAş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.targetyour_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_flaskappHizmet durumunu kontrol edin:
sudo systemctl status my_flaskapp8. Nginx’i Ters Proxy Olarak Yapılandırma
Nginx, Gunicorn’un önünde oturan ve tüm gelen 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ıza olanak tanır.
Adım 1: Nginx Yükleme
sudo apt install nginx -yAdım 2: Nginx Yapılandırma Dosyası Oluşturma
Flask uygulamanız için yeni bir sunucu bloğu yapılandırması oluşturun:
sudo nano /etc/nginx/sites-available/my_flaskappAş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ştirme
Siteyi etkinleştirmek için sembolik bir bağlantı oluşturun ve Nginx yapılandırmasını test edin:
sudo ln -s /etc/nginx/sites-available/my_flaskapp /etc/nginx/sites-enabled
sudo nginx -tTest syntax is ok ve test is successful döndürürse, Nginx’i yeniden başlatın:
sudo systemctl restart nginxFlask uygulamanız artık 80 numaralı bağlantı noktasında http://your_domain_or_ip adresinde erişilebilir.
9. Flask Uygulamanızı SSL/HTTPS ile Güvenli Hale Getirme
Uygulamanızı HTTPS üzerinden çalıştırmak artık isteğe bağlı değil — güvenlik, kullanıcı güveni ve SEO sıralamaları için temel bir gerekliliktir. 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.comCertbot, HTTPS’yi etkinleştirmek ve otomatik sertifika yenilemeyi ayarlamak için Nginx yapılandırmanızı otomatik olarak değiştirecektir.
Otomatik yenilemenin yapılandırıldığını do
