Yazılım Geliştirme

Git ile Sunucuya Deploy Nasıl Yapılır?

16 görüntülenme 29.04.2026

Git ile Deployment Neden Önemlidir?

Geleneksel FTP ile dosya yükleme yöntemi; hata riski yüksek, yavaş ve geri alınması güç bir deployment süreci doğurur. Git tabanlı deployment ise sürüm kontrolü, otomatik testler ve tek komutla yayına alma gibi avantajlarıyla modern yazılım geliştirmenin vazgeçilmez parçasıdır. Hangi değişikliğin ne zaman ve kim tarafından yapıldığını her zaman takip edebilir, sorun çıktığında önceki kararlı sürüme saniyeler içinde geri dönebilirsiniz.

Git ile deployment için birkaç farklı yaklaşım mevcuttur: doğrudan git pull komutuyla manuel güncelleme, Git hooks ile otomatik deployment ve GitHub Actions veya GitLab CI/CD gibi platformlarla tam otomatik pipeline. Bu rehberde her üç yöntemi de ele alacağız.

Sunucuya Git Kurulumu

# Ubuntu/Debian:
apt install git

# AlmaLinux/CentOS:
yum install git

# Git kurulumunu doğrulama:
git --version

# Kimlik yapılandırması:
git config --global user.name "Ad Soyad"
git config --global user.email "ornek@firmaniz.com"

Yöntem 1: Sunucuda Git Pull ile Deployment

En basit deployment yöntemi, değişikliklerinizi GitHub veya GitLab'a push ettikten sonra sunucuya SSH ile bağlanıp git pull çalıştırmaktır.

# İlk kez klonlama:
git clone https://github.com/kullanici/proje.git /var/www/proje

# Sonraki güncellemeler için:
cd /var/www/proje
git pull origin main

# SSH anahtarıyla private repo klonlama:
git clone git@github.com:kullanici/proje.git /var/www/proje

# Deployment scripti hazırlama:
# /home/deploy.sh
#!/bin/bash
cd /var/www/proje
git pull origin main
composer install --no-dev --optimize-autoloader
php artisan migrate --force
php artisan config:cache
php artisan route:cache
systemctl reload php8.2-fpm

Yöntem 2: Git Hooks ile Otomatik Deployment

Git hooks, belirli git olaylarında (push, commit gibi) otomatik olarak çalışan scriptlerdir. Sunucuda bare repository oluşturarak, push işleminden sonra otomatik deployment yapılmasını sağlayabilirsiniz.

# Sunucuda bare repository oluşturma:
git init --bare /home/repos/proje.git

# Post-receive hook oluşturma:
nano /home/repos/proje.git/hooks/post-receive

#!/bin/bash
GIT_WORK_TREE=/var/www/proje GIT_DIR=/home/repos/proje.git git checkout -f main

cd /var/www/proje
composer install --no-dev
php artisan migrate --force
php artisan config:cache

echo "Deployment tamamlandı!"

# Hook'a çalışma izni verin:
chmod +x /home/repos/proje.git/hooks/post-receive

# Lokal bilgisayardan remote olarak ekleyin:
git remote add production ssh://kullanici@sunucu-ip/home/repos/proje.git

# Deploy etmek için:
git push production main

Yöntem 3: GitHub Actions ile CI/CD Pipeline

GitHub Actions, main branch'e push edildiğinde otomatik test, build ve deployment gerçekleştiren tam otomatik bir CI/CD pipeline sunar. Bu yöntem kurumsal projeler için en önerilen yaklaşımdır.

# .github/workflows/deploy.yml dosyası:
name: Deploy

on:
  push:
    branches: [main]

jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - name: Sunucuya Deploy Et
        uses: appleboy/ssh-action@v1.0.0
        with:
          host: ${{ secrets.SERVER_HOST }}
          username: ${{ secrets.SERVER_USER }}
          key: ${{ secrets.SSH_PRIVATE_KEY }}
          script: |
            cd /var/www/proje
            git pull origin main
            composer install --no-dev
            php artisan migrate --force
            php artisan config:cache
            systemctl reload php-fpm

Deployment Sırasında Siteyi Bakım Moduna Alma

Veritabanı migration veya büyük değişiklikler içeren deployment'lar sırasında kullanıcıların tutarsız bir site görmemesi için bakım modu aktifleştirilmelidir.

# Laravel bakım modu:
php artisan down --retry=60 --refresh=15

# Deployment işlemleri...
git pull && composer install && php artisan migrate

# Bakım modunu kapat:
php artisan up

# Özel bakım sayfası:
php artisan down --render="errors::503"

Git deployment pipeline kurulumu, CI/CD yapılandırması ve deployment otomasyonu konularında HostingKontrol teknik ekibimizden destek alabilirsiniz. Modern deployment pratikleri sayesinde projelerinizi daha hızlı ve güvenli biçimde yayına alabilirsiniz.

Bu makale işinize yaradı mı?

Paylaş: Twitter LinkedIn