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:
- Depodaki son değişiklikleri alın
- Güncellenen dosyaları dağıtım dizinine kopyalayın
- 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