Ana içeriğe geç

Sword Backend Dağıtım Rehberi (HTTPS)

Bu rehber, Sword Backend uygulamasını HTTPS ile bir Linux sunucuya nasıl dağıtacağınızı açıklar.

Gereksinimler

  • Ubuntu/Debian önerilen bir Linux sunucu
  • Sunucunuza yönlendirilmiş bir alan adı
  • Root veya sudo erişimi

Dağıtım Adımları

1. Depoyu Klonlayın

Önce depoyu yerel makinenize veya doğrudan sunucuya klonlayın.

git clone <repository-url> sword-backend
cd sword-backend

2. Dağıtım Betiği Değişkenlerini Güncelleyin

scripts/shell/deploy_https.sh dosyasını açın ve aşağıdaki değişkenleri güncelleyin:

  • DOMAIN: Gerçek alan adınız (örn. api.siteniz.com)
  • EMAIL: Let's Encrypt bildirimleri için e-posta adresiniz
# Dosyayı aç
nano scripts/shell/deploy_https.sh

# Bu satırları güncelle
DOMAIN="your-domain.com"  # Gerçek alan adınızla değiştirin
EMAIL="your-email@example.com"  # Let's Encrypt için e-posta adresiniz

3. Betiği Çalıştırılabilir Yapın

chmod +x scripts/shell/deploy_https.sh

4. Dağıtım Betiğini Çalıştırın

./scripts/shell/deploy_https.sh

Betik şunları yapar: - Gerekli tüm bağımlılıkları kurar - Python sanal ortamı oluşturur - Nginx'i reverse proxy olarak yapılandırır - Let's Encrypt ile SSL sertifikaları alır - Uygulamayı systemd servisi olarak kurar - Tüm servisleri başlatır

5. Dağıtımı Doğrulayın

Kurulum tamamlandıktan sonra uygulamanın çalıştığını doğrulayın:

# Uygulama servis durumu
sudo systemctl status sword-backend

# Nginx durumu
sudo systemctl status nginx

# API testi
curl -k https://your-domain.com/docs

Ortam Değişkenleri

.env dosyanızda gerekli tüm değişkenlerin olduğundan emin olun:

DATABASE_URL=postgresql://username:password@localhost:5432/sword_db
SECRET_KEY=your-secret-key
ALGORITHM=HS256
ACCESS_TOKEN_EXPIRE_MINUTES=30
MAIL_USERNAME=your-email@example.com
MAIL_PASSWORD=your-password
MAIL_FROM=your-email@example.com
MAIL_PORT=587
MAIL_SERVER=smtp.gmail.com

Sorun Giderme

Logları Kontrol Edin

Sorun yaşarsanız logları kontrol edin:

# Uygulama logları
sudo journalctl -u sword-backend

# Nginx logları
sudo tail -f /var/log/nginx/error.log
sudo tail -f /var/log/nginx/access.log

SSL Sertifikası Sorunları

SSL sertifikası ile ilgili sorun varsa:

# Sertifika durumunu kontrol et
sudo certbot certificates

# Sertifikaları test amaçlı yenile
sudo certbot renew --dry-run

Güvenlik Duvarı Yapılandırması

Güvenlik duvarınızın HTTP (80) ve HTTPS (443) trafiğine izin verdiğinden emin olun:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

Bakım

Uygulamayı Güncelleme

Uygulamayı güncellemek için:

  1. Depodaki son değişiklikleri alın
  2. Güncellenen dosyaları dağıtım dizinine kopyalayın
  3. Servisi yeniden başlatın
cd /path/to/local/repository
git pull
rsync -av --exclude 'venv' --exclude '__pycache__' --exclude '.git' ./ /home/projects/sword-backend/
sudo systemctl restart sword-backend

SSL Sertifikasını Yenileme

Let's Encrypt sertifikaları 90 gün geçerlidir. Certbot yenileme işlemi genelde otomatik kurulur, ancak elle de yenileyebilirsiniz:

sudo certbot renew

Veritabanı Yedekleri

Düzenli veritabanı yedeği alınması önerilir:

# PostgreSQL yedek örneği
pg_dump -U postgres sword_db > /path/to/backup/sword_db_$(date +%Y%m%d).sql