Takip et

GitHub Actions ve Systemd ile Django Uygulamanız İçin CI/CD Kurulumu

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

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

Gönder

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.
Exit mobile version