Emriva.net

Git ile VDS Deploy: Basit CI Akışı

Git pull, hook ve basit deploy script ile VDS’e yayınlama. Emriva üzerinde pratik akış.

Yazılım & Deploy2 dk okumaSon güncelleme: 2026-08-15

Yazar

Yunus Emre Derin · Kurucu

Emriva Bilişim Medya Ve Reklamcılık kurucusu. VDS, dedicated sunucu ve web hosting altyapısı üzerinde ürün ve operasyon deneyimi.

Git ile deploy ne demektir?

Basit model: VDS’te bare repo veya uygulama dizininde git pull, ardından build ve süreç yenileme. CI (GitHub Actions) SSH ile aynı komutları koşar. FTP ile dosya atmak sürüm ve rollback vermez.

Asla üretimde git config ile kişisel token düz metin bırakmayın. Deploy anahtarı (read-only SSH key) repoya eklenir. .env Git’e girmez; örnek .env.example girer. git status üretimde temiz kalmalı; uploads gitignore’da. submodule varsa git submodule update --init. LFS büyük medyada ayrı kotadır. hook’un PATH’inde node/php yoksa cron/systemd Environment= ekleyin. rollback: git log --oneline | head ve checkout önceki SHA, sonra build. tagged release olmadan “dün geceki hali” bulunamaz.

Sunucuda clone ve pull akışı

ssh-keygen -t ed25519 -f /home/deploy/.ssh/id_ed25519_deploy -N "". Genel anahtarı GitHub Deploy keys’e ekleyin. git clone [email protected]:org/proje.git /var/www/proje. Güncelleme: cd /var/www/proje && git fetch --prune && git checkout main && git pull --ff-only.

--ff-only, sunucuda unutulmuş commit varsa merge karmaşasını keser. Çalışma ağacı kirlendiyse (log, upload) bu dosyalar gitignore’da olmalıdır. npm ci && npm run build && pm2 reload api. PHP: composer install --no-dev && systemctl reload php8.2-fpm. Deploy kullanıcısının /var/www yazma izni: chown -R deploy:www-data /var/www/proje && chmod -R g+w storage veya wp-content/uploads. set -euo pipefail scriptte yarım build’i canlıya almayı keser. ln -sfn releases/YENI current atomik geçiştir. GitHub Actions secrets.SSH_KEY ile ssh-agent; token’ı repo değişkenine düz yazmayın. Tag ile deploy (git checkout v1.2.3) rollback’i kolaylaştırır: önceki tag’e dönüş.

Git hook veya küçük bir deploy script

post-receive bare repo modelinde: GIT_WORK_TREE=/var/www/proje git checkout -f main sonra build. Script: set -euo pipefail, log /var/log/deploy.log. Hook’u root yerine deploy kullanıcısı çalıştırsın.

Sıfır downtime: pm2 reload (cluster) veya iki dizin (releases/20260815) symlink current. Küçük ekiplerde reload yeter. Veritabanı migrasyonu geri alınamazsa yedek alın; git revert SQL’i geri almaz. healthcheck 200 dönmeden symlink çevirmeyin. migrate komutu pull’dan sonra, reload’dan önce çalışsın.

Sık hatalar

Permission denied (publickey): yanlış anahtar, known_hosts. diverged branch: sunucuda commit. node_modules root ile kurulmuş, deploy kullanıcısı yazamıyor. SELinux/AppArmor nadir; Ubuntu’da çoğunlukla izin ve cwd.

AdımKomut özetiBaşarısızlık
Anahtarssh -T [email protected]deploy key yok
Güncellegit pull --ff-onlykirli tree
Bağımlılıknpm ci / composerNode sürümü
Süreçpm2 reload / systemctl502
Sağlıkcurl -I https://...SSL/DNS

Emriva ürün eşlemesi

Bu bölüm ürün eşlemesidir. Git deploy Linux VDS (Xeon küçük API, Ryzen paralel build) ister. cPanel Git Version Control bazı paketlerde vardır ama PM2/Nginx tam kontrol VDS’tedir. Günlük yedek .git’i kurtarır; secret’lar ayrı durmalıdır.

SSH deploy key parçasını destek kaydına yapıştırmayın.