Sword Backend Yerel Dağıtım Rehberi (HTTPS)¶
Bu rehber, alan adı gerektirmeden, self-signed sertifikalar kullanarak Sword Backend uygulamasını HTTPS ile bir Linux sunucuya nasıl dağıtacağınızı açıklar.
Gereksinimler¶
- Ubuntu/Debian önerilen bir Linux sunucu
- 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. Veritabanı Parolasını Güncelleyin¶
scripts/shell/master_deploy_local.sh dosyasını açın ve veritabanı parolasını güncelleyin:
# Dosyayı aç
nano scripts/shell/master_deploy_local.sh
# Bu satırı güncelle
DB_PASSWORD="your_secure_password" # Bunu güçlü bir parola ile değiştirin
3. Betikleri Çalıştırılabilir Yapın¶
chmod +x scripts/shell/master_deploy_local.sh scripts/shell/deploy_https_local.sh scripts/shell/setup_database.sh scripts/shell/run_migrations.sh
4. Ana Dağıtım Betiğini Çalıştırın¶
sudo ./scripts/shell/master_deploy_local.sh
Betik şunları yapar: - PostgreSQL veritabanı kurar - Gerekli bağımlılıkları kurar - Python sanal ortamı oluşturur - Self-signed SSL sertifikaları üretir - Nginx'i HTTPS reverse proxy olarak yapılandırır - Uygulamayı systemd servisi olarak kurar - Tüm servisleri başlatır - Veritabanı migration'larını çalıştırı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 (SERVER_IP yerine sunucunuzun IP adresini yazın)
curl -k https://SERVER_IP/docs
Ortam Değişkenleri¶
Dağıtım betiği varsayılan değerlerle bir .env dosyası oluşturacaktır. Kurulumdan sonra bunların bir kısmını güncellemek isteyebilirsiniz:
# .env dosyasını aç
nano /home/projects/sword-backend/.env
Aşağıdaki değişkenlerin bulunduğundan emin olun:
DATABASE_URL=postgresql://sword_user:your_secure_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
Uygulamaya Erişim¶
Uygulamaya sunucunun IP adresi ile erişebilirsiniz:
https://SERVER_IP
Self-signed sertifika kullandığınız için tarayıcı güvenlik uyarısı gösterecektir. Devam etmek için güvenlik istisnası eklemeniz gerekir.
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ı¶
Self-signed sertifika ile ilgili sorun varsa:
# Sertifikayı yeniden üret
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /home/projects/sword-backend/ssl/nginx-selfsigned.key \
-out /home/projects/sword-backend/ssl/nginx-selfsigned.crt \
-subj "/C=US/ST=State/L=City/O=Organization/CN=SERVER_IP"
# Nginx'i yeniden başlat
sudo systemctl restart nginx
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
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
SSL Sertifikasını Yenileme¶
Self-signed sertifikalar, oluşturulurken belirlenen süre sonunda (varsayılan 365 gün) geçerliliğini yitirir. Yenilemek için:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 \
-keyout /home/projects/sword-backend/ssl/nginx-selfsigned.key \
-out /home/projects/sword-backend/ssl/nginx-selfsigned.crt \
-subj "/C=US/ST=State/L=City/O=Organization/CN=SERVER_IP"
sudo systemctl restart nginx