GitHub Actions ve Systemd ile Django Uygulamanız İçin CI/CD Kurulumu
Merhaba! Fatih Soysal olarak, bu yazıda size GitHub Actions ve Systemd kullanarak Django uygulamanız için nasıl bir CI/CD (Sürekli Entegrasyon/Sürekli Dağıtım) süreci kuracağınızı adım adım göstereceğim. Bu, geliştirme sürecinizi hızlandıracak, hataları erken yakalamanıza yardımcı olacak ve dağıtım işlemlerini otomatikleştirecektir. Öncelikle, CI/CD’nin ne olduğunu ve neden önemli olduğunu kısaca özetleyelim.
CI/CD Nedir ve Neden Önemlidir?
CI/CD, yazılım geliştirme sürecinde kod değişikliklerinin otomatik olarak test edilmesini ve dağıtılmasını sağlayan bir yaklaşımdır. Sürekli entegrasyon (CI), geliştiricilerin kodlarını sık sık bir merkezi depoda birleştirmesini ve otomatik testlerin çalıştırılmasını içerir. Sürekli dağıtım (CD) ise, test edilen kodun otomatik olarak üretim ortamına dağıtılmasını sağlar. Bu sayede, hatalar erken tespit edilir, dağıtım süreci hızlanır ve daha sık ve güvenilir güncellemeler yayınlanabilir. Sonuç olarak, daha kaliteli bir yazılım ve daha mutlu kullanıcılar elde edilir.
Gerekli Hazırlıklar
Başlamadan önce, aşağıdaki bileşenlere ihtiyacınız olacak:
- Bir GitHub hesabı
- Bir Django projesi
- Bir sunucu (örneğin, VPS veya bulut sunucusu) – Systemd’nin çalıştığı bir sistem olmalı.
- Sunucunuzda SSH erişimi
- Sunucunuzda Python ve gerekli Django bağımlılıkları kurulu olmalı.
GitHub Actions ile Otomasyon
GitHub Actions, GitHub depolarınızda otomasyon iş akışları oluşturmanıza olanak tanır. Biz de bu özelliği kullanarak kod değişikliklerimizi otomatik olarak test edecek ve sunucumuza dağıtacağız. Öncelikle, projenizin kök dizinine bir .github/workflows klasörü oluşturun ve içine main.yml adında bir dosya ekleyin. Bu dosya, CI/CD iş akışınızı tanımlayacaktır. İşte örnek bir main.yml dosyası:
name: Django CI/CD
on:
push:
branches:
- main
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Set up Python
uses: actions/setup-python@v3
with:
python-version: '3.9'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: python manage.py test
deploy:
runs-on: ubuntu-latest
needs: build
steps:
- uses: actions/checkout@v3
- name: Deploy to server
uses: appleboy/ssh-action@master
with:
host: ${{ secrets.SERVER_HOST }}
username: ${{ secrets.SERVER_USER }}
key: ${{ secrets.SERVER_KEY }}
script: |
cd /path/to/your/django/project
git pull origin main
./manage.py migrate
systemctl restart your_django_service
Yukarıdaki kodda, secrets ile sunucu bilgilerinizi güvenli bir şekilde saklamanız önemlidir. GitHub Secrets özelliğini kullanarak sunucu host adı, kullanıcı adı ve SSH anahtarınızı saklayabilirsiniz. Bu bilgiler kodunuzun içinde açıkça görünmemelidir. **Bu kısım kritik önem taşır ve güvenliğinizi tehlikeye atabilir.** Daha fazla güvenlik önlemi alarak daha güvenli bir sistem kurmanız çok önemlidir. Fatih Soysal’ın Web Sitesi gibi kaynaklardan daha fazla bilgi alabilirsiniz.
Systemd ile Servis Olarak Çalıştırma
Django uygulamanızı Systemd kullanarak servis olarak çalıştırmak, uygulamanızın sisteminizle birlikte başlamasını ve arka planda çalışmasını sağlar. Bunun için, /etc/systemd/system/ dizinine bir servis dosyası oluşturmalısınız. Örneğin, your_django_service.service adında bir dosya oluşturun ve aşağıdaki içeriği ekleyin:
[Unit]
Description=Your Django Application
After=network.target
[Service]
User=your_user
Group=your_group
WorkingDirectory=/path/to/your/django/project
Environment="DJANGO_SETTINGS_MODULE=your_project.settings"
ExecStart=/usr/bin/gunicorn --bind 0.0.0.0:8000 your_project.wsgi:application
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
Bu dosyayı kaydettikten sonra, aşağıdaki komutları çalıştırarak servisi etkinleştirin ve başlatın:
sudo systemctl enable your_django_service
sudo systemctl start your_django_service
sudo systemctl status your_django_service
Bu adımlar, Django uygulamanızın Systemd tarafından yönetilmesini sağlar. GitHub Actions üzerinden yapılan dağıtım işlemi sonrasında, systemctl restart your_django_service komutu ile uygulamanız yeniden başlatılır ve güncellemeler yansıtılır. Uygulamanın çalışır durumda olup olmadığını kontrol etmek için systemctl status your_django_service komutunu kullanabilirsiniz.
Sonuç
Bu rehberde, GitHub Actions ve Systemd kullanarak Django uygulamanız için bir CI/CD süreci kurmayı öğrendiniz. Bu süreç, geliştirme ve dağıtım işlemlerini otomatikleştirerek, daha hızlı ve daha güvenilir bir yazılım geliştirme döngüsü oluşturmanıza yardımcı olacaktır. Unutmayın, güvenlik önlemlerini her zaman göz önünde bulundurmalı ve GitHub Secrets gibi güvenli mekanizmaları kullanmalısınız. Başarılar!
Umarım bu makale faydalı olmuştur. Daha fazla bilgi için web sitemi ziyaret edebilirsiniz.
#Etiketler: Django, CI/CD, GitHub Actions, Systemd, otomasyon, deploy, dağıtım, sunucu, yazılım geliştirme, gunicorn, SSH, GitHub Secrets
