Takip et

FastAPI Uygulamasını Digital Ocean Droplet’ta Nginx ve CI/CD ile Dağıtma

FastAPI Uygulamasını Digital Ocean Droplet’ta Nginx ve CI/CD ile Dağıtma

Hızlı, ölçeklenebilir ve güvenilir bir web uygulaması geliştirmek ve dağıtmak her zaman zorlu bir süreçtir. Bu makalede, popüler Python web framework’ü FastAPI’yi kullanarak bir uygulamayı Digital Ocean Droplet üzerinde Nginx reverse proxy ile nasıl dağıtacağınızı ve sürekli entegrasyon/sürekli dağıtım (CI/CD) pipeline’ını nasıl kuracağınızı adım adım ele alacağız. Bu, uygulamanızın güncellemelerini otomatik hale getirecek ve sunucu yönetimini kolaylaştıracaktır. Hazırsanız, başlayalım!

FastAPI, Nginx ve Digital Ocean: Temel Kavramlar

Öncelikle, projemizin temel bileşenlerini anlamamız gerekiyor. FastAPI, modern ve performans odaklı bir Python web framework’üdür. Asenkron yapısı sayesinde yüksek performans sunar ve API geliştirmeyi oldukça kolaylaştırır. Nginx, yüksek performanslı bir web sunucusu ve reverse proxy’dir. Trafiği yönetir, statik dosyaları sunar ve FastAPI uygulamanızın önüne geçerek güvenlik ve performans katmanı ekler. Digital Ocean, ölçeklenebilir bulut sunucuları sunan bir platformdur. Droplet’lerimiz, uygulamalarımızı barındıracağımız sanal sunuculardır.

Bu üç bileşeni birleştirerek, güvenli, hızlı ve ölçeklenebilir bir uygulama mimarisi kuracağız. FastAPI, uygulamanın çekirdeğini oluşturacak, Nginx trafiği yönetecek ve Digital Ocean altyapısını sağlayacaktır. CI/CD süreci ise uygulamanın güncellemelerini otomatikleştirecek ve manuel müdahaleyi en aza indirecektir. Daha fazla bilgi için (https://fatihsoysal.com) inceleyebilirsiniz.

Digital Ocean Droplet’ı Hazırlama: Adım Adım Kurulum

İlk adımımız, Digital Ocean’da bir Droplet oluşturmaktır. Bu süreç, Digital Ocean kontrol panelinden birkaç tıklamayla tamamlanabilir. Ubuntu veya Debian gibi bir Linux dağıtımı seçmeniz önerilir. Droplet’ınızı oluşturduktan sonra SSH ile bağlanarak gerekli yazılımları kuracağız. Bu adımda, Python, pip, Nginx ve gerekli diğer paketleri kuracağız. Özellikle güvenlik duvarı ayarlarını doğru yapmanız kritiktir. Sadece gerekli portların (örneğin, 80 ve 443 için HTTP ve HTTPS, ayrıca FastAPI uygulamanızın dinlediği port) açık olduğundan emin olun.

İşte örnek bir kurulum komut dizisi:

sudo apt update
sudo apt upgrade -y
sudo apt install python3 python3-pip nginx -y

Daha sonra, sisteminizin güncel olduğundan ve güvenlik açıklarının kapatıldığından emin olmalısınız. Bunun için düzenli güvenlik güncellemelerini takip etmeniz ve güvenlik duvarı kurallarınızı düzenli olarak gözden geçirmeniz çok önemlidir. Güvenlik duvarı hataları, sızmalara ve verilerin çalınmasına neden olabilir.

FastAPI Uygulamasının Kurulumu ve Yapılandırması

Digital Ocean Droplet'ınıza SSH ile bağlandıktan sonra, FastAPI projenizi klonlayabilir veya yeni bir proje oluşturabilirsiniz. Projenizi sanal bir ortamda çalıştırmak (virtualenv) iyi bir uygulamadır. Bu, proje bağımlılıklarınızın sisteminizin genel Python kurulumunu etkilememesini sağlar. Projenizi oluşturduktan sonra, gerekli paketleri requirements.txt dosyasına ekleyip pip install -r requirements.txt komutu ile yükleyebilirsiniz.

İşte basit bir FastAPI uygulaması örneği:

from fastapi import FastAPI

app = FastAPI()

@app.get("/")
async def root():
    return {"message": "Hello World"}

Bu uygulamayı çalıştırmak için uvicorn main:app --reload komutunu kullanabilirsiniz (main.py dosyanızda çalıştırıyorsanız). Uygulamanın çalıştığından emin olduktan sonra, Nginx ile entegre etmemiz gerekir.

Nginx Reverse Proxy'sinin Yapılandırması

Nginx, FastAPI uygulamanızın önünde bir reverse proxy olarak çalışarak performansı artırır ve güvenlik katmanı ekler. Nginx'in yapılandırma dosyası genellikle /etc/nginx/sites-available/default konumunda bulunur. Bu dosyayı düzenleyerek FastAPI uygulamanızın dinlediği porta yönlendirme yapabilirsiniz. HTTPS kullanmak için bir SSL sertifikası (Let's Encrypt gibi) oluşturmanız ve yapılandırmanız gerekecektir. Bu adım, güvenliğiniz için hayati önem taşır.

Örnek bir Nginx yapılandırma dosyası:

server {
    listen 80;
    listen [::]:80;
    server_name your_domain.com;

    location / {
        proxy_pass http://127.0.0.1:8000; # FastAPI uygulamanızın portu
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

Yapılandırmayı kaydettikten sonra sudo nginx -t komutu ile yapılandırmanın doğru olup olmadığını kontrol edin ve ardından sudo systemctl restart nginx komutu ile Nginx'i yeniden başlatın.

CI/CD Pipeline'ının Kurulumu

Uygulamanızın sürekli entegrasyon ve sürekli dağıtım süreçlerini otomatikleştirmek için bir CI/CD pipeline'ı kurmanız önerilir. GitHub Actions, GitLab CI/CD veya benzeri hizmetler kullanarak, kod değişikliklerinizi otomatik olarak Digital Ocean Droplet'ınıza dağıtabilirsiniz. Bu, güncellemeleri manuel olarak yapmak zorunda kalmanızı önler ve daha hızlı ve güvenilir bir dağıtım sağlar. Bu süreç, kodunuzu bir depoya (örneğin, GitHub) yüklemeniz, bir CI/CD hizmetiyle entegre etmeniz ve dağıtım komutlarınızı bu hizmette tanımlamanız anlamına gelir.

Performans Optimizasyonu ve Ölçeklendirme

Uygulamanızın performansını optimize etmek için çeşitli teknikler kullanabilirsiniz. Bunlar arasında FastAPI'nin asenkron yapısından tam olarak faydalanmak, veritabanı optimizasyonu, önbellekleme ve Nginx'in performans ayarlarını düzenlemek bulunur. Uygulamanızın ölçeklenebilirliğini artırmak için, Digital Ocean'da daha güçlü Droplet'ler kullanabilir veya yük dengeleme (load balancing) kullanabilirsiniz. Yük dengeleme, trafiği birden fazla sunucu arasında dağıtarak tek bir sunucunun aşırı yüklenmesini önler.

Gerçek Dünya Senaryoları ve Vaka Analizleri

Örneğin, e-ticaret uygulaması geliştiren bir şirket, ürün kataloglarını ve sipariş bilgilerini veritabanından hızlı bir şekilde çekmesi gereken bir API'ye ihtiyaç duyar. FastAPI, bu yüksek performanslı API'yi geliştirmek için ideal bir seçimdir. Nginx, trafiği yönetir ve statik dosyalar (resimler, CSS, JavaScript) sunarak sunucu yükünü azaltır. Digital Ocean, ölçeklenebilir altyapı sağlar ve gerektiğinde daha fazla sunucu ekleme olanağı sunar. CI/CD, güncellemeleri otomatikleştirerek hızlı ve güvenilir bir dağıtım sağlar. Bu şekilde, e-ticaret şirketi, müşterilerine kesintisiz ve hızlı bir alışveriş deneyimi sunabilir.

İleri Düzey Teknikler ve İpuçları

Deneyimli geliştiriciler için bazı ileri düzey teknikler şunlardır: Gunicorn'ı FastAPI uygulamanızın önünde bir WSGI sunucusu olarak kullanmak, Nginx'i HTTPS ile yapılandırmak ve Let's Encrypt kullanarak SSL sertifikaları oluşturmak, performans monitörleme araçları kullanmak ve logları analiz etmek, uygulama güvenliğini güçlendirmek için güvenlik duvarı kuralları ve diğer güvenlik önlemlerini yapılandırmak. Ayrıca, Docker ve Kubernetes gibi konteynerleşme ve orkestrasyon teknolojilerini kullanarak uygulamanın dağıtımını ve yönetimini daha da basitleştirebilirsiniz.

Sonuç ve Sıkça Sorulan Sorular

Bu makalede, FastAPI uygulamalarını Digital Ocean Droplet'larda Nginx ve CI/CD ile dağıtmanın temel adımlarını inceledik. Bu süreç, uygulamalarınızın güvenliğini, performansını ve ölçeklenebilirliğini artırır. Ancak unutmayın ki güvenlik her zaman en önemli husustur. Düzenli güvenlik güncellemelerini takip etmek ve güvenlik açıklarını kapatmak için proaktif adımlar atmanız kritiktir. Daha fazla bilgi için (https://fatihsoysal.com) inceleyebilirsiniz.

Sıkça Sorulan Sorular:

  • Soru: FastAPI'yi Nginx olmadan çalıştırabilir miyim? Cevap: Evet, ancak Nginx, performans, güvenlik ve ölçeklenebilirlik avantajları sağlar.
  • Soru: Hangi CI/CD platformunu kullanmalıyım? Cevap: GitHub Actions, GitLab CI/CD, Jenkins gibi birçok seçenek mevcuttur. İhtiyaçlarınıza ve tercihlerinize en uygun olanı seçin.
  • Soru: SSL sertifikası nasıl oluşturulur? Cevap: Let's Encrypt gibi ücretsiz SSL sertifika sağlayıcıları kullanabilirsiniz.
  • Soru: Uygulamam çok yavaş çalışıyor. Ne yapabilirim? Cevap: Performans sorunlarını gidermek için veritabanı optimizasyonu, önbellekleme ve kod optimizasyonu tekniklerini uygulayın.
  • Soru: Uygulamanın güvenliğini nasıl artırabilirim? Cevap: Güçlü parolalar kullanın, düzenli güvenlik güncellemelerini yapın, güvenlik duvarı kurallarınızı doğru yapılandırın ve güvenlik açıklarını düzenli olarak tarayın.

Yazar: Fatih Soysal

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.