Web Hosting & cPanel

    cPanel Git Version Control ile Site Dağıtımı

    cPanel Git Version Control ile depo klonlama ve .cpanel.yml ile otomatik dağıtımı anlatan rehber.

    12 dk okuma Güncellendi: 10 Temmuz 2026

    Kodunuzu her değişiklikte FTP istemcisine sürükleyip yüklemek, zamanla yorucu ve hataya açık bir sürece dönüşür. Hangi dosyayı yüklediğinizi, hangi versiyonun sunucuda çalıştığını ve bir hatadan sonra nasıl geri döneceğinizi takip etmek neredeyse imkânsız hâle gelir. cPanel'in Git Version Control aracı, tam olarak bu sorunu ortadan kaldırmak için tasarlanmıştır: uzak bir depodaki (GitHub, GitLab, Bitbucket veya kendi Git sunucunuz) kodunuzu doğrudan hosting hesabınıza klonlar, git pull ile günceller ve .cpanel.yml adında bir dağıtım dosyasıyla dosyaları otomatik olarak canlı dizine kopyalar.

    Bu rehberde cPanel Git Version Control'ün mantığını, depoyu sunucuda nasıl klonlayacağınızı, SSH anahtarıyla özel depolara erişimi, dal (branch) seçimini ve .cpanel.yml ile otomatik dağıtımı adım adım anlatacağız. Amacımız, ister statik bir site ister PHP tabanlı bir uygulama barındırıyor olun, kodunuzu profesyonel bir sürüm kontrol akışıyla, FTP'ye hiç dokunmadan sunucuya taşımanızı sağlamak. Git'e hiç aşina değilseniz, temel kavramları Git temelleri yazımızda bulabilir, cPanel'in genel yapısını cPanel nedir rehberimizden hatırlayabilirsiniz.

    cPanel Git Version Control Nedir?#

    cPanel Git Version Control, hosting hesabınızın içine kurulu olan komut satırı Git'inin görsel bir arayüzüdür. Arka planda standart git komutları çalışır; arayüz sadece bu komutları sizin yerinize tetikleyip sonuçlarını gösterir. Bu araç iki farklı senaryoya hizmet eder:

    • Uzak depoyu klonlama: GitHub veya GitLab gibi bir yerde bulunan mevcut bir depoyu, hosting hesabınızın içindeki bir dizine çeker. Sonrasında tek tıkla git pull yaparak en son değişiklikleri alırsınız.
    • Boş depo oluşturma: Sunucuda sıfırdan bir Git deposu başlatırsınız; yerel bilgisayarınızdan bu depoya git push yaparak kodunuzu gönderir, ardından dağıtım scriptini tetiklersiniz.

    Aracın en güçlü yanı, kod deposu ile yayına alınan dizinin (document root) ayrı tutulabilmesidir. Yani deponuzu ~/repositories/sitem gibi bir dizine klonlarsınız, .cpanel.yml dosyasındaki talimatlarla ise sadece gerekli dosyaların ~/public_html altına kopyalanmasını sağlarsınız. Böylece .git klasörü, README.md, test dosyaları ve derleme kaynakları ziyaretçilere açık dizinde görünmez — bu hem güvenlik hem de düzen açısından FTP'ye göre büyük bir adımdır.

    Bu özellik, cPanel'in kurulu olduğu paylaşımlı, VPS ve reseller planlarında bulunur. Clou.TR tarafındaki web hosting ve WordPress hosting paketlerinde Git Version Control kutudan çıktığı gibi hazırdır; tek gereksinim, hesabınızda SSH ve Git desteğinin açık olmasıdır.

    Ön Koşullar: SSH Erişimi ve SSH Anahtarı#

    Git Version Control'ü kullanmadan önce iki temel hazırlığı tamamlamalısınız: hesabınızda SSH erişimi açık olmalı ve özel (private) bir depoya bağlanacaksanız bir SSH anahtar çifti oluşturmalısınız.

    Herkese açık bir depoyu https:// adresiyle klonlarken anahtar gerekmez; ancak GitHub veya GitLab'daki özel deponuza yazma/okuma iznini güvenli biçimde vermek için SSH anahtarı en temiz yöntemdir. cPanel'de anahtar üretimi ve yönetimi SSH Access → Manage SSH Keys bölümünden yapılır. Alternatif olarak, SSH ile sunucuya bağlanıp anahtarı elle de oluşturabilirsiniz:

    # Sunucuya SSH ile bağlandıktan sonra
    ssh-keygen -t ed25519 -C "[email protected]" -f ~/.ssh/id_deploy
    
    # Genel anahtarı ekrana bas — bu içeriği GitHub'a ekleyeceksiniz
    cat ~/.ssh/id_deploy.pub
    

    Ürettiğiniz genel anahtarın (.pub uzantılı içerik) tamamını GitHub'da Settings → SSH and GPG keys → New SSH key ekranına yapıştırın. Yalnızca tek bir depoya erişim vermek isterseniz, GitHub'ın Deploy Keys özelliğini tercih edin; bu, anahtarı tüm hesabınıza değil sadece o depoya bağlar ve güvenlik açısından daha isabetlidir. Bağlantıyı doğrulamak için:

    ssh -T [email protected]
    # "Hi kullaniciadi! You've successfully authenticated..." çıktısı beklenir
    

    Birden fazla anahtar kullanıyorsanız, ~/.ssh/config dosyasına hangi depo için hangi anahtarın kullanılacağını yazabilirsiniz:

    Host github-sitem
        HostName github.com
        User git
        IdentityFile ~/.ssh/id_deploy
        IdentitiesOnly yes
    

    Bu tanımdan sonra klonlama adresini git@github-sitem:kullanici/depo.git biçiminde yazarak doğru anahtarın seçilmesini garanti edersiniz. SSH güvenliğini derinlemesine ele aldığımız SSH bağlantısı ve güvenliği yazımız, anahtar yönetimi konusunda ek pratikler sunar.

    Uzak Depoyu Sunucuda Klonlamak#

    Hazırlıklar tamamsa, artık depoyu klonlayabilirsiniz. cPanel ana ekranında Files grubundaki Git Version Control simgesine tıklayın ve Create butonuna basın. Karşınıza gelen formda üç alan bulunur:

    AlanAçıklamaÖrnek
    Clone URLKlonlanacak deponun adresi[email protected]:kullanici/sitem.git
    Repository PathDeponun sunucuda kaydedileceği dizinrepositories/sitem
    Repository NameArayüzde görünecek etiketSitem Canlı

    Clone a Repository seçeneğini işaretleyip alanları doldurun ve Create deyin. cPanel, arka planda git clone komutunu çalıştırarak depoyu belirttiğiniz yola çeker. İşlem birkaç saniye ile birkaç dakika arasında sürebilir; büyük depolarda biraz beklemeniz normaldir.

    Aynı işi komut satırından yapmak isterseniz, SSH ile bağlanıp doğrudan da klonlayabilirsiniz — arayüz zaten bunu yapar:

    cd ~/repositories
    git clone [email protected]:kullanici/sitem.git sitem
    cd sitem
    git branch -a   # mevcut dalları listele
    

    Klonlama bittiğinde deponuz ~/repositories/sitem altında hazırdır. Önemli bir nokta: bu dizin henüz sitenizin yayında olduğu dizin değildir. Kodunuz sunucuya inmiştir ama ziyaretçiye gösterilmesi için public_html altına kopyalanması gerekir. Bunu ya elle yaparsınız ya da bir sonraki bölümde anlatacağımız .cpanel.yml ile otomatikleştirirsiniz. Depoyu doğrudan public_html içine klonlamak teknik olarak mümkün olsa da, .git klasörünün ziyaretçilere açık kalması ve dosya karmaşası nedeniyle önerilmez.

    .cpanel.yml ile Otomatik Dağıtım#

    .cpanel.yml, cPanel'in dağıtım (deployment) talimatlarını okuduğu özel bir dosyadır. Depo kök dizininizde bu dosya varsa, arayüzdeki Manage → Deploy HEAD Commit butonuna bastığınızda ya da bir git push sonrası, cPanel bu dosyadaki komutları sırayla çalıştırır. En yaygın kullanımı, deposundaki dosyaları public_html altına kopyalamaktır.

    Dosyanın temel yapısı YAML formatındadır ve girinti (indentation) boşluklarla yapılmalıdır; sekme (tab) karakteri hataya yol açar:

    ---
    deployment:
      tasks:
        - export DEPLOYPATH=/home/kullanici/public_html/
        - /bin/cp -R * $DEPLOYPATH
    

    Bu basit script, deponun kökündeki her şeyi public_html altına kopyalar. Ancak gerçek projelerde genellikle sadece belirli klasörleri taşımak istersiniz. Örneğin kaynak kodun src/ altında, yayına çıkacak dosyaların ise depoda ayrı tutulduğu bir yapıda daha seçici davranabilirsiniz:

    ---
    deployment:
      tasks:
        - export DEPLOYPATH=/home/kullanici/public_html/
        - /bin/cp -R public/. $DEPLOYPATH
        - /bin/cp -R app $DEPLOYPATH
        - /bin/cp -R vendor $DEPLOYPATH
        - /bin/cp config/production.php $DEPLOYPATH/config.php
        - /bin/rm -f $DEPLOYPATH/.env.example
    

    DEPLOYPATH yolunu kendi kullanıcı adınıza göre düzeltmeyi unutmayın; /home/KULLANICI/public_html/ biçiminde tam yol vermek en güvenlisidir. Bir alt alan adına (subdomain) dağıtım yapıyorsanız hedefi ona göre değiştirin:

    ---
    deployment:
      tasks:
        - export DEPLOYPATH=/home/kullanici/blog.sitem.com/
        - /bin/cp -R dist/. $DEPLOYPATH
    

    Dağıtım dosyasını depoya ekleyip commit'ledikten sonra akış şöyle işler: yerelde değişiklik yapar, GitHub'a push eder, cPanel'de Pull or Deploy sekmesinden önce Update from Remote (yani git pull) ile en son commit'i çeker, ardından Deploy HEAD Commit ile .cpanel.yml scriptini tetiklersiniz. Deploy geçmişi ve son çalıştırmanın çıktısı aynı ekranda listelenir; bir hata olursa buradan görürsünüz.

    .cpanel.yml yalnızca dosya kopyalamakla sınırlı değildir. Kopyalama sonrası izinleri düzeltmek, bir önbelleği temizlemek ya da basit bir yazılabilirlik ayarı yapmak için ek komutlar ekleyebilirsiniz:

    ---
    deployment:
      tasks:
        - export DEPLOYPATH=/home/kullanici/public_html/
        - /bin/cp -R public/. $DEPLOYPATH
        - /bin/find $DEPLOYPATH -type d -exec chmod 755 {} \;
        - /bin/find $DEPLOYPATH -type f -exec chmod 644 {} \;
        - /bin/rm -rf $DEPLOYPATH/cache/*
    

    Bir uyarı: cPanel'in dağıtım scripti, composer install veya npm run build gibi ağır derleme adımlarını çalıştırmak için tasarlanmamıştır ve paylaşımlı planlarda bu komutlar çoğu zaman kaynak sınırlarına takılır. En sağlıklı yaklaşım, derlemeyi yerelde ya da CI ortamında yapıp hazır çıktıyı (ör. vendor/, dist/) depoya dahil etmek, .cpanel.yml ile yalnızca kopyalamaktır. Ağır uygulamalar için tam kök (root) yetkisi ve serbest komut çalıştırma isteyen projelerde VDS veya sanal sunucu planlarına geçmek daha doğrudur; dilerseniz sunucu yönetimi hizmetimiz kurulumu sizin adınıza üstlenir.

    Pull ile Güncelleme ve Dal (Branch) Seçimi#

    Depo bir kez klonlandıktan sonra günlük iş akışınız oldukça sadeleşir. Yerelde kod yazar, test eder, GitHub'a gönderir; sunucuda ise sadece "çek ve dağıt" dersiniz. cPanel arayüzünde Manage → Pull or Deploy sekmesindeki Update from Remote butonu arka planda git pull çalıştırır ve uzak depodaki son commit'leri hesabınıza indirir.

    Aynı işlemi SSH üzerinden de yönetebilirsiniz; hatta hangi dalda çalıştığınızı kontrol etmek için komut satırı daha nettir:

    cd ~/repositories/sitem
    git branch                 # aktif dalı gösterir (yıldızlı olan)
    git checkout main          # yayın dalına geç
    git pull origin main       # son değişiklikleri çek
    

    Dal seçimi, canlı dağıtımın en kritik ayrıntılarından biridir. Sunucuda hangi dal checkout edilmişse, Deploy HEAD Commit o dalın son commit'ini yayına alır. Bu yüzden üretim (production) sunucunuzda her zaman kararlı bir dalın (genellikle main veya production) seçili olduğundan emin olun; geliştirme dalını (develop, feature/...) yanlışlıkla deploy etmek, yarım kalmış kodun canlıya çıkmasına yol açar. Farklı ortamları farklı alt alan adlarına bağlayarak ayrı deploylar da kurabilirsiniz:

    # Canlı: main dalı → public_html
    # Test:  develop dalı → test.sitem.com (ayrı bir klon)
    git clone -b develop [email protected]:kullanici/sitem.git ~/repositories/sitem-test
    

    Uzak depoda bir dal silindi ya da yeni bir dal oluşturulduysa, git fetch --all --prune ile yerel referansları tazeleyip git checkout yeni-dal yapabilirsiniz. Bir noktada elle düzenleme yaptıysanız ve pull çakışırsa, sunucudaki yerel değişiklikleri uzak dala göre sıfırlamak en temiz çözümdür:

    git fetch origin
    git reset --hard origin/main   # DİKKAT: yereldeki commit'lenmemiş değişiklikleri siler
    

    Bu komut, sunucudaki depoyu her zaman uzak dalın tam bir kopyası hâline getirir; canlı sunucuda elle dosya kurcalanmadığı, tek doğru kaynağın Git deposu olduğu bir disiplin için idealdir.

    FTP'ye Kıyasla Git ile Dağıtımın Avantajları#

    FTP hâlâ çalışan bir yöntem olsa da, sürüm kontrolüyle dağıtımın yanında birçok yönden geride kalır. Aşağıdaki tablo iki yaklaşımı somut kriterlerle karşılaştırır:

    KriterFTP ile YüklemeGit Version Control
    Versiyon takibiYok; hangi dosyanın yeni olduğu belirsizHer commit kayıtlı, tam geçmiş mevcut
    Geri alma (rollback)Elle eski yedeği yüklemegit checkout / önceki commit'i deploy
    Kısmi/eksik yükleme riskiYüksek (bağlantı koparsa yarım dosya)Düşük; tüm commit atomik iner
    Ekip çalışmasıKim neyi yükledi belirsizYazar, tarih ve açıklama net
    Hassas dosyaların gizlenmesiManuel dikkat gerekir.cpanel.yml ile seçici kopyalama
    OtomasyonNeredeyse yokDeploy scripti ile tek tık
    Transfer hızıHer dosya baştan yüklenirYalnızca değişen kısımlar iner

    En belirgin fark geri alma yeteneğidir. FTP ile bir güncelleme siteyi bozarsa, elinizde eski bir yedek yoksa çaresiz kalırsınız. Git ile ise bozuk commit'ten bir önceki noktaya saniyeler içinde dönebilirsiniz:

    git log --oneline -5           # son commit'leri listele
    git checkout 4f2a9c1           # sorunlu güncellemeden önceki commit'e dön
    # ardından cPanel'de Deploy HEAD Commit
    

    İkinci büyük kazanç verimliliktir: Git yalnızca değişen dosyaları aktarır, tüm siteyi baştan yüklemez. Yüzlerce dosyalık bir projede tek bir CSS satırı değiştirdiğinizde, FTP tüm klasörü karşılaştırmaya çalışırken Git sadece o commit'i indirir. Ayrıca .cpanel.yml sayesinde .git, .env, test dosyaları ve dokümantasyon gibi ziyaretçiye gitmemesi gereken içerik canlı dizinde hiç görünmez — bu, SSL ve web uygulama güvenlik duvarı gibi katmanları tamamlayan pratik bir güvenlik önlemidir. Site taşırken bu düzeni bozmadan aktarmak isterseniz site taşıma hizmetimiz, Git tabanlı yapınızı yeni sunucuda birebir kurar.

    Yaygın Sorunlar ve Çözümleri#

    Git Version Control kurulumunda en sık karşılaşılan aksaklıklar birkaç başlık altında toplanır. Bunları önceden bilmek, saatlerce sürebilecek deneme-yanılmadan kurtarır.

    Kimlik doğrulama hatası (Permission denied / publickey): Özel bir depoyu klonlarken bu hatayı alıyorsanız, SSH anahtarınız ya GitHub'a eklenmemiştir ya da yanlış anahtar kullanılıyordur. ssh -T [email protected] ile bağlantıyı test edin; ~/.ssh/config tanımınızın doğru anahtarı işaret ettiğinden emin olun. HTTPS adresi yerine [email protected]:... biçiminde SSH adresi kullandığınızı kontrol edin.

    Deploy çalışmıyor / .cpanel.yml yok sayılıyor: Dosya adının tam olarak .cpanel.yml olduğundan (başında nokta, sonunda .yml), depo kök dizininde bulunduğundan ve girintilerin sekme değil boşluk olduğundan emin olun. YAML'de tek bir hatalı girinti tüm scripti geçersiz kılar. Ayrıca DEPLOYPATH içindeki kullanıcı adı ve yolun gerçek hesabınızla eşleştiğini doğrulayın.

    Pull sırasında çakışma (merge conflict): Sunucudaki depoda elle değişiklik yaptıysanız git pull çakışabilir. Canlı sunucuda kural olarak dosya düzenlememek en iyisidir; tek doğru kaynak Git deposu olmalıdır. Çakışma oluşmuşsa git reset --hard origin/main ile sunucuyu uzak dala göre sıfırlayın.

    Deploy sonrası dosyalar görünmüyor: Çoğu zaman .cpanel.yml içindeki kopyalama komutu yanlış klasörü işaret eder. cp -R public/. $DEPLOYPATH ile cp -R public $DEPLOYPATH arasındaki farka dikkat edin: ilki klasörün içeriğini, ikincisi klasörün kendisini kopyalar. Deploy geçmişindeki çıktı loglarını okuyarak hangi komutun ne yaptığını görebilirsiniz.

    Kaynak sınırı hatası: composer install veya npm build gibi komutları .cpanel.yml içine koyduysanız ve deploy yarıda kesiliyorsa, bu ağır işleri yerelde yapıp hazır çıktıyı depoya ekleyin. Paylaşımlı planlar bu tür süreçlere sınırlı kaynak ayırır. Düzenli yedek almayı da ihmal etmeyin; yedekleme çözümümüz, deploy öncesi bir geri dönüş noktası tutmanızı kolaylaştırır.

    Sıkça Sorulan Sorular#

    cPanel Git Version Control ile GitHub arasındaki fark nedir?#

    GitHub, kodunuzun barındırıldığı uzak (remote) bir depodur; cPanel Git Version Control ise o depoyu hosting hesabınıza çekip yayına almanızı sağlayan araçtır. İkisi birlikte çalışır: kodunuzu GitHub'da tutar, cPanel'in aracıyla bu kodu sunucunuza klonlar ve git pull ile güncellersiniz. Yani GitHub kaynak, cPanel ise dağıtım tarafıdır.

    Özel (private) bir GitHub deposunu klonlamak için ne gerekiyor?#

    Özel depolar için bir SSH anahtar çifti oluşturup genel anahtarı GitHub'ın SSH keys ya da Deploy keys bölümüne eklemeniz gerekir. Anahtarı cPanel'in Manage SSH Keys ekranından ya da SSH ile ssh-keygen komutuyla üretebilirsiniz. Ardından klonlama adresini HTTPS yerine [email protected]:kullanici/depo.git biçimindeki SSH formatında kullanırsınız. Herkese açık depolarda anahtar gerekmez, HTTPS adresi yeterlidir.

    .cpanel.yml dosyası zorunlu mu?#

    Hayır, zorunlu değildir; ancak otomatik dağıtım için gereklidir. Bu dosya olmadan da depoyu klonlayıp git pull yapabilirsiniz, fakat dosyaların public_html altına kopyalanmasını elle yönetmeniz gerekir. .cpanel.yml eklediğinizde Deploy HEAD Commit butonu, tanımladığınız kopyalama ve düzenleme komutlarını tek tıkla çalıştırır. Otomasyonun ve düzenin anahtarı bu dosyadır.

    Deponun public_html içine mi yoksa ayrı bir dizine mi klonlanması gerekir?#

    Deponuzu ~/repositories/sitem gibi ayrı bir dizine klonlamanız, .cpanel.yml ile de yalnızca gerekli dosyaları public_html altına kopyalamanız önerilir. Doğrudan public_html içine klonlamak, .git klasörünün ve gizli dosyaların ziyaretçilere açık kalmasına yol açar. Ayrı dizin yaklaşımı hem daha güvenli hem de daha düzenlidir.

    Deploy ettikten sonra bir hata olursa nasıl geri dönerim?#

    Git'in en güçlü yanı budur. git log --oneline ile commit geçmişini görüntüler, sorunlu güncellemeden önceki commit'in kimliğini bulur ve git checkout <commit-id> ile o noktaya dönersiniz. Ardından cPanel'de tekrar Deploy HEAD Commit dersiniz; site birkaç saniye içinde eski çalışan hâline döner. FTP'de bunun için elde eski bir yedek tutmak gerekirken, Git bu geçmişi kendisi saklar.

    Git ile WordPress sitesi de dağıtabilir miyim?#

    Evet, ancak dikkat gereken noktalar vardır. WordPress'in tema ve eklenti dosyalarını Git ile yönetmek sağlıklıdır; fakat wp-content/uploads klasörü ve veritabanı sürüm kontrolüne dahil edilmemelidir, çünkü bunlar sürekli değişir. Genellikle tema/eklenti geliştirmesini Git ile takip edip yükleme klasörünü .gitignore ile hariç tutmak en pratik yöntemdir. WordPress'e özel bakım süreçleri için WordPress bakım hizmetimiz de bu akışı destekler.

    Kapanış#

    cPanel Git Version Control, kod dağıtımını "dosya sürükle-bırak" seviyesinden profesyonel bir sürüm kontrol disiplinine taşır. Uzak deponuzu sunucuya klonlar, git pull ile güncellersiniz ve .cpanel.yml sayesinde her dağıtımı tek tıkla, tekrarlanabilir biçimde yaparsınız. Bir hata olduğunda önceki commit'e saniyeler içinde dönmek, hassas dosyaları canlı dizinden uzak tutmak ve yalnızca değişen kısımları aktarmak, bu yaklaşımı FTP'ye açık ara üstün kılar. Git kavramlarında kendinizi tazelemek isterseniz Git temelleri yazımız, cPanel'i bütünüyle tanımak için cPanel nedir rehberimiz iyi bir başlangıçtır.

    Git tabanlı bir dağıtım akışına uygun, SSH ve Git desteği hazır bir altyapı arıyorsanız Clou.TR'nin web hosting planları tam size göre. Daha fazla kaynağa ve tam kök yetkisine ihtiyaç duyan projeler için VDS sunucu çözümlerimizi inceleyebilir, kendi alan adınızı domain sayfamızdan alarak sitenizi baştan sona yönetebilirsiniz. Kurulumu bizim üstlenmemizi isterseniz, ekibimiz depo bağlantısından ilk deploya kadar her adımda yanınızda olur.

    cPanelGit

    Uygulamaya geçmeye hazır mısınız?

    NVMe SSD, ücretsiz SSL ve %99.9 uptime garantisiyle Clou.TR hosting ve sunucu çözümleriyle projenizi hayata geçirin.