{"id":4380,"date":"2026-02-03T19:53:12","date_gmt":"2026-02-03T16:53:12","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/git-ile-wordpress-ve-php-sitelerini-otomatik-deploy-etmek\/"},"modified":"2026-02-03T19:53:12","modified_gmt":"2026-02-03T16:53:12","slug":"git-ile-wordpress-ve-php-sitelerini-otomatik-deploy-etmek","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/git-ile-wordpress-ve-php-sitelerini-otomatik-deploy-etmek\/","title":{"rendered":"Git ile WordPress ve PHP Sitelerini Otomatik Deploy Etmek"},"content":{"rendered":"<div class=\"dchost-blog-content-wrapper\"><p>WordPress ya da \u00f6zel yaz\u0131lm\u0131\u015f bir PHP site \u00fczerinde \u00e7al\u0131\u015f\u0131rken en \u00e7ok zaman kaybettiren ve hata \u00fcreten i\u015f neredeyse her zaman ayn\u0131d\u0131r: g\u00fcncellemeleri canl\u0131 sunucuya ta\u015f\u0131mak. Dosyalar\u0131 FTP ile tek tek s\u00fcr\u00fckleyip b\u0131rakmak, hangi dosyalar\u0131n g\u00fcncel oldu\u011funu hat\u0131rlamaya \u00e7al\u0131\u015fmak, canl\u0131 sitede beyaz ekran g\u00f6rmemek i\u00e7in dua etmek\u2026 Birka\u00e7 m\u00fc\u015fterili k\u00fc\u00e7\u00fck bir ajansken bile yorucu, onlarca WordPress sitesi y\u00f6neten bir ekipte ise s\u00fcrd\u00fcr\u00fclemez hale geliyor.<\/p>\n<p>Git tabanl\u0131 otomatik deploy ve basit bir CI\/CD (Continuous Integration \/ Continuous Delivery) hatt\u0131 kurdu\u011funuzda, bu kaos ortadan kalk\u0131yor. Kod de\u011fi\u015fikliklerini bir branch \u00fczerinde geli\u015ftiriyor, test ediyor, daha sonra tek bir komutla veya otomatik olarak <a href=\"https:\/\/www.dchost.com\/tr\/web-hosting\">payla\u015f\u0131ml\u0131 hosting<\/a> ya da <a href=\"https:\/\/www.dchost.com\/tr\/vps\">VPS<\/a> sunucunuza g\u00fcvenle g\u00f6nderiyorsunuz. \u00dcstelik neyin, ne zaman, kim taraf\u0131ndan canl\u0131ya al\u0131nd\u0131\u011f\u0131 tamamen kay\u0131t alt\u0131nda kal\u0131yor.<\/p>\n<p>Biz DCHost ekibi olarak hem payla\u015f\u0131ml\u0131 hosting hem de VPS taraf\u0131nda Git ile otomatik deploy kuran y\u00fczlerce m\u00fc\u015fteri g\u00f6rd\u00fck. Bu yaz\u0131da, WordPress ve genel PHP projeleri i\u00e7in, Git ile otomatik deploy mant\u0131\u011f\u0131n\u0131; payla\u015f\u0131ml\u0131 hosting ve VPS senaryolar\u0131n\u0131; s\u0131f\u0131r kesinti hedefleyen CI\/CD ak\u0131\u015flar\u0131n\u0131 ad\u0131m ad\u0131m ve ger\u00e7ek\u00e7i \u00f6rneklerle anlataca\u011f\u0131z. Elinizdeki altyap\u0131 ne olursa olsun, yaz\u0131n\u0131n sonunda kendi projeniz i\u00e7in uygulanabilir bir yol haritan\u0131z olsun istiyoruz.<\/p>\n<div id=\"toc_container\" class=\"toc_transparent no_bullets\"><p class=\"toc_title\">\u0130&ccedil;indekiler<\/p><ul class=\"toc_list\"><li><a href=\"#Git_ile_Otomatik_Deploy_ve_CICD_Temelleri\"><span class=\"toc_number toc_depth_1\">1<\/span> Git ile Otomatik Deploy ve CI\/CD Temelleri<\/a><\/li><li><a href=\"#Paylasimli_Hosting_Uzerinde_Git_ile_Otomatik_Deploy\"><span class=\"toc_number toc_depth_1\">2<\/span> Payla\u015f\u0131ml\u0131 Hosting \u00dczerinde Git ile Otomatik Deploy<\/a><ul><li><a href=\"#Paylasimli_hostingte_gercekci_kisitlar\"><span class=\"toc_number toc_depth_2\">2.1<\/span> Payla\u015f\u0131ml\u0131 hostingte ger\u00e7ek\u00e7i k\u0131s\u0131tlar<\/a><\/li><li><a href=\"#cPanel_Git_entegrasyonu_ile_basit_otomatik_deploy\"><span class=\"toc_number toc_depth_2\">2.2<\/span> cPanel Git entegrasyonu ile basit otomatik deploy<\/a><\/li><li><a href=\"#SSH_ile_hook_tabanli_deploy\"><span class=\"toc_number toc_depth_2\">2.3<\/span> SSH ile hook tabanl\u0131 deploy<\/a><\/li><li><a href=\"#Cron_tabanli_deploy\"><span class=\"toc_number toc_depth_2\">2.4<\/span> Cron tabanl\u0131 deploy<\/a><\/li><li><a href=\"#Paylasimli_hostingte_WordPress_icin_ozel_notlar\"><span class=\"toc_number toc_depth_2\">2.5<\/span> Payla\u015f\u0131ml\u0131 hostingte WordPress i\u00e7in \u00f6zel notlar<\/a><\/li><\/ul><\/li><li><a href=\"#VPS_Uzerinde_Git_ile_CICD_ve_Sifir_Kesinti_Deploy\"><span class=\"toc_number toc_depth_1\">3<\/span> VPS \u00dczerinde Git ile CI\/CD ve S\u0131f\u0131r Kesinti Deploy<\/a><ul><li><a href=\"#Temel_mimari_repo_build_release_klasorleri\"><span class=\"toc_number toc_depth_2\">3.1<\/span> Temel mimari: repo, build, release klas\u00f6rleri<\/a><\/li><li><a href=\"#CI_tarafi_GitHub_Actions_ornegi_ile_dusunmek\"><span class=\"toc_number toc_depth_2\">3.2<\/span> CI taraf\u0131: GitHub Actions \u00f6rne\u011fi ile d\u00fc\u015f\u00fcnmek<\/a><\/li><li><a href=\"#VPSte_WordPress_icin_Git_tabanli_mimari\"><span class=\"toc_number toc_depth_2\">3.3<\/span> VPS\u2019te WordPress i\u00e7in Git tabanl\u0131 mimari<\/a><\/li><li><a href=\"#Genel_PHP_projeleri_Laravel_Symfony_ozel_yazilim_icin_notlar\"><span class=\"toc_number toc_depth_2\">3.4<\/span> Genel PHP projeleri (Laravel, Symfony, \u00f6zel yaz\u0131l\u0131m) i\u00e7in notlar<\/a><\/li><\/ul><\/li><li><a href=\"#WordPress_ve_PHP_Siteleri_Icin_Uygulanabilir_CICD_Senaryolari\"><span class=\"toc_number toc_depth_1\">4<\/span> WordPress ve PHP Siteleri \u0130\u00e7in Uygulanabilir CI\/CD Senaryolar\u0131<\/a><ul><li><a href=\"#Senaryo_1_Tek_WordPress_sitesi_olan_kucuk_isletme\"><span class=\"toc_number toc_depth_2\">4.1<\/span> Senaryo 1: Tek WordPress sitesi olan k\u00fc\u00e7\u00fck i\u015fletme<\/a><\/li><li><a href=\"#Senaryo_2_Onlarca_WordPress_sitesi_yoneten_ajans\"><span class=\"toc_number toc_depth_2\">4.2<\/span> Senaryo 2: Onlarca WordPress sitesi y\u00f6neten ajans<\/a><\/li><li><a href=\"#Senaryo_3_Karma_PHPWordPress_projeleri_olan_urun_ekipleri\"><span class=\"toc_number toc_depth_2\">4.3<\/span> Senaryo 3: Karma PHP\/WordPress projeleri olan \u00fcr\u00fcn ekipleri<\/a><\/li><\/ul><\/li><li><a href=\"#Veritabani_Yedek_ve_Rollback_Stratejileri\"><span class=\"toc_number toc_depth_1\">5<\/span> Veritaban\u0131, Yedek ve Rollback Stratejileri<\/a><ul><li><a href=\"#WordPress_veritabani_guncellemeleri\"><span class=\"toc_number toc_depth_2\">5.1<\/span> WordPress veritaban\u0131 g\u00fcncellemeleri<\/a><\/li><li><a href=\"#Laravel_ve_benzeri_frameworklerde_migration_yonetimi\"><span class=\"toc_number toc_depth_2\">5.2<\/span> Laravel ve benzeri framework\u2019lerde migration y\u00f6netimi<\/a><\/li><li><a href=\"#Yedekleme_ve_geri_donus_rollback_pratikleri\"><span class=\"toc_number toc_depth_2\">5.3<\/span> Yedekleme ve geri d\u00f6n\u00fc\u015f (rollback) pratikleri<\/a><\/li><\/ul><\/li><li><a href=\"#Guvenlik_Erisim_Yonetimi_ve_Gizli_Bilgiler\"><span class=\"toc_number toc_depth_1\">6<\/span> G\u00fcvenlik, Eri\u015fim Y\u00f6netimi ve Gizli Bilgiler<\/a><ul><li><a href=\"#SSH_anahtarlari_ve_deploy_kullanicisi\"><span class=\"toc_number toc_depth_2\">6.1<\/span> SSH anahtarlar\u0131 ve deploy kullan\u0131c\u0131s\u0131<\/a><\/li><li><a href=\"#env_ve_API_anahtarlarinin_yonetimi\"><span class=\"toc_number toc_depth_2\">6.2<\/span> .env ve API anahtarlar\u0131n\u0131n y\u00f6netimi<\/a><\/li><li><a href=\"#Loglar_izleme_ve_alarm\"><span class=\"toc_number toc_depth_2\">6.3<\/span> Log\u2019lar, izleme ve alarm<\/a><\/li><\/ul><\/li><li><a href=\"#DCHost_Uzerinde_Git_ile_Otomatik_Deploya_Baslamak\"><span class=\"toc_number toc_depth_1\">7<\/span> DCHost \u00dczerinde Git ile Otomatik Deploy\u2019a Ba\u015flamak<\/a><\/li><\/ul><\/div>\n<h2><span id=\"Git_ile_Otomatik_Deploy_ve_CICD_Temelleri\">Git ile Otomatik Deploy ve CI\/CD Temelleri<\/span><\/h2>\n<p>Git ile otomatik deploy, \u00f6z\u00fcnde tek bir fikre dayan\u0131r: Canl\u0131 sunucuya manuel dosya kopyalamak yerine, kodu Git deposundan \u00e7ekmek veya CI sunucusunun \u00fcretti\u011fi paketi otomatik olarak da\u011f\u0131tmak. Bunun \u00fczerine eklenen CI\/CD kavramlar\u0131 ise s\u00fcreci daha g\u00fcvenli ve tekrar edilebilir hale getirir.<\/p>\n<p>\u00d6nce temel kavramlar\u0131 netle\u015ftirelim:<\/p>\n<ul>\n<li><strong>Git deposu<\/strong>: Kodunuzun tutuldu\u011fu yer. GitHub, GitLab, Bitbucket veya DCHost \u00fczerinde kendi Git sunucunuz olabilir.<\/li>\n<li><strong>Branch (dal)<\/strong>: Farkl\u0131 geli\u015ftirme ak\u0131\u015flar\u0131n\u0131 ay\u0131rd\u0131\u011f\u0131n\u0131z kollar. \u00d6rne\u011fin dev, staging ve main gibi.<\/li>\n<li><strong>Continuous Integration (CI)<\/strong>: Her push sonras\u0131nda otomatik test, kod analizi, build gibi i\u015fleri tetikleyen s\u00fcre\u00e7.<\/li>\n<li><strong>Continuous Delivery \/ Deployment (CD)<\/strong>: CI s\u00fcrecinden ge\u00e7en kodun staging ya da canl\u0131 ortama otomatik veya yar\u0131 otomatik da\u011f\u0131t\u0131lmas\u0131.<\/li>\n<li><strong>Pipeline<\/strong>: Test, build, paketleme, deploy gibi ad\u0131mlardan olu\u015fan otomatik ak\u0131\u015f.<\/li>\n<\/ul>\n<p>Basit bir WordPress veya PHP projesi i\u00e7in tipik bir pipeline \u015f\u00f6yle g\u00f6r\u00fcnebilir:<\/p>\n<ul>\n<li>Geli\u015ftirici kodu localde de\u011fi\u015ftirir, commit eder ve Git deposuna push eder.<\/li>\n<li>CI sistemi (\u00f6rne\u011fin GitHub Actions) testleri \u00e7al\u0131\u015ft\u0131r\u0131r, derlenmesi gereken bir \u015fey varsa derler (SCSS, JS bundling gibi).<\/li>\n<li>Ba\u015far\u0131l\u0131 olursa payla\u015f\u0131ml\u0131 hosting veya VPS sunucuya SSH \u00fczerinden ba\u011flan\u0131r, son s\u00fcr\u00fcm kodu indirir veya rsync ile senkronize eder.<\/li>\n<li>Gerekliyse veritaban\u0131 migration komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r, cache temizler, PHP-FPM veya Nginx yeniden y\u00fcklenir.<\/li>\n<\/ul>\n<p>cPanel, Plesk ve VPS taraf\u0131nda temel Git entegrasyonunu daha \u00f6nce detayl\u0131ca anlatt\u0131\u011f\u0131m\u0131z <a href='https:\/\/www.dchost.com\/blog\/git-ile-otomatik-deploy-cpanel-plesk-ve-vpste-adim-adim-kurulum\/'>Git ile otomatik deploy kurulum rehberine<\/a> de g\u00f6z atabilirsiniz; bu yaz\u0131da ise \u00f6zellikle WordPress ve PHP siteleri i\u00e7in pratik CI\/CD tasar\u0131m\u0131na odaklanaca\u011f\u0131z.<\/p>\n<h2><span id=\"Paylasimli_Hosting_Uzerinde_Git_ile_Otomatik_Deploy\">Payla\u015f\u0131ml\u0131 Hosting \u00dczerinde Git ile Otomatik Deploy<\/span><\/h2>\n<p>Bir\u00e7ok ajans ve geli\u015ftirici i\u00e7in ilk ad\u0131m, mevcut payla\u015f\u0131ml\u0131 hosting hesab\u0131 \u00fczerinde Git ile otomatik deploy kurmak oluyor. Kaynaklar s\u0131n\u0131rl\u0131, root eri\u015fimi yok; ama do\u011fru kurguyla yine de olduk\u00e7a verimli bir ak\u0131\u015f olu\u015fturmak m\u00fcmk\u00fcn.<\/p>\n<h3><span id=\"Paylasimli_hostingte_gercekci_kisitlar\">Payla\u015f\u0131ml\u0131 hostingte ger\u00e7ek\u00e7i k\u0131s\u0131tlar<\/span><\/h3>\n<p>\u00d6nce s\u0131n\u0131rlar\u0131 netle\u015ftirelim:<\/p>\n<ul>\n<li>Root eri\u015fiminiz yok; sistem paketleri, global servisler \u00fczerinde kontrol s\u0131n\u0131rl\u0131.<\/li>\n<li>SSH eri\u015fimi baz\u0131 paketlerde a\u00e7\u0131k, baz\u0131lar\u0131nda kapal\u0131 olabilir. SSH varsa i\u015fler \u00e7ok kolayla\u015f\u0131r.<\/li>\n<li>cPanel veya Plesk gibi kontrol panellerinde Git entegrasyonu olabilir ama her zaman t\u00fcm ihtiya\u00e7lar\u0131 kar\u015f\u0131lamayabilir.<\/li>\n<li>Crontab eri\u015fimi genelde var; belirli aral\u0131klarla script \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/li>\n<\/ul>\n<p>Bu k\u0131s\u0131tlar i\u00e7inde \u00fc\u00e7 ana yakla\u015f\u0131m g\u00f6r\u00fcyoruz:<\/p>\n<ul>\n<li>cPanel \/ Plesk Git entegrasyonu ile otomatik \u00e7ekme<\/li>\n<li>Manuel tetiklenen deploy scripti (SSH ile)<\/li>\n<li>Belirli aral\u0131klarla \u00e7al\u0131\u015fan cron tabanl\u0131 deploy scripti<\/li>\n<\/ul>\n<h3><span id=\"cPanel_Git_entegrasyonu_ile_basit_otomatik_deploy\">cPanel Git entegrasyonu ile basit otomatik deploy<\/span><\/h3>\n<p>E\u011fer hosting hesab\u0131n\u0131zda cPanel kullan\u0131yorsan\u0131z, \u00e7o\u011fu modern s\u00fcr\u00fcmde Git Version Control mod\u00fcl\u00fc bulunur. Temel ak\u0131\u015f:<\/p>\n<ol>\n<li>Git deposunu GitHub \/ GitLab \u00fczerinde olu\u015fturun.<\/li>\n<li>cPanel i\u00e7inden yeni bir Git deposu ekleyin, uzak depo adresini tan\u0131mlay\u0131n.<\/li>\n<li>Deploy etmek istedi\u011finiz klas\u00f6r\u00fc (\u00f6rne\u011fin public_html) work tree olarak ayarlay\u0131n.<\/li>\n<li>Her yeni s\u00fcr\u00fcmde cPanel aray\u00fcz\u00fcnden veya SSH ile ilgili komutu \u00e7al\u0131\u015ft\u0131rarak git pull yap\u0131n.<\/li>\n<\/ol>\n<p>Bu yakla\u015f\u0131m, \u00f6zellikle k\u00fc\u00e7\u00fck WordPress siteleri veya basit PHP projeleri i\u00e7in yeterli olabilir. Yine de tam anlam\u0131yla CI\/CD say\u0131lmaz; \u00e7\u00fcnk\u00fc test, build, backup gibi ad\u0131mlar manuel veya yar\u0131 otomatik kal\u0131r.<\/p>\n<h3><span id=\"SSH_ile_hook_tabanli_deploy\">SSH ile hook tabanl\u0131 deploy<\/span><\/h3>\n<p>SSH eri\u015fiminiz varsa daha esnek ve otomatik bir kurgu kurabilirsiniz. \u00d6rne\u011fin:<\/p>\n<ol>\n<li>Hosting hesab\u0131n\u0131zda, public_html d\u0131\u015f\u0131nda bir dizinde bare repo olu\u015fturun. \u00d6rnek: \/home\/kullanici\/repo\/site.git<\/li>\n<li>Bu repo i\u00e7in post-receive hook yazarak, her push sonras\u0131 kodu public_html dizinine checkout edecek bir script \u00e7al\u0131\u015ft\u0131r\u0131n.<\/li>\n<li>Local geli\u015ftirme makinenizden bu bare repo\u2019ya push yap\u0131n.<\/li>\n<\/ol>\n<p>Basit bir post-receive hook \u00f6rne\u011fi:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">#!\/bin\/bash\nGIT_WORK_TREE=\/home\/kullanici\/public_html git checkout -f\ncd \/home\/kullanici\/public_html\n# \u00d6rne\u011fin cache temizleme veya composer install gibi ek ad\u0131mlar\n<\/code><\/pre>\n<p>Bu y\u00f6ntemle canl\u0131 dosyalar, localden ya da merkezi Git platformundan sunucudaki bare repo\u2019ya push etti\u011finiz anda otomatik g\u00fcncellenir. WordPress temas\u0131 veya eklentisi geli\u015ftiriyorsan\u0131z olduk\u00e7a konforludur.<\/p>\n<h3><span id=\"Cron_tabanli_deploy\">Cron tabanl\u0131 deploy<\/span><\/h3>\n<p>Baz\u0131 projelerde do\u011frudan push ile canl\u0131y\u0131 tetiklemek istemeyebilirsiniz; \u00f6rne\u011fin \u00f6nce staging ortam\u0131nda test etmek istersiniz. Bu durumda payla\u015f\u0131ml\u0131 hostingte a\u015fa\u011f\u0131daki gibi bir yakla\u015f\u0131m kullan\u0131labilir:<\/p>\n<ul>\n<li>Sunucuda normal (bare olmayan) bir repo olu\u015fturun ve origin uzak depo adresini tan\u0131mlay\u0131n.<\/li>\n<li>Cron ile her 5-10 dakikada bir basit bir script \u00e7al\u0131\u015ft\u0131r\u0131n:<\/li>\n<\/ul>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">#!\/bin\/bash\ncd \/home\/kullanici\/public_html\ngit fetch origin\ngit reset --hard origin\/main\n<\/code><\/pre>\n<p>Bu sayede ana branch \u00fczerinde onaylad\u0131\u011f\u0131n\u0131z de\u011fi\u015fiklikler k\u0131sa aral\u0131klarla canl\u0131ya yans\u0131r. Dezavantaj\u0131, s\u0131f\u0131r kesinti ve atomik deploy senaryolar\u0131 i\u00e7in yeterli olmamas\u0131d\u0131r; yine de manuel FTP\u2019den \u00e7ok daha g\u00fcvenlidir.<\/p>\n<h3><span id=\"Paylasimli_hostingte_WordPress_icin_ozel_notlar\">Payla\u015f\u0131ml\u0131 hostingte WordPress i\u00e7in \u00f6zel notlar<\/span><\/h3>\n<p>WordPress projelerinde Git ile deploy yaparken en \u00e7ok kar\u0131\u015ft\u0131r\u0131lan k\u0131s\u0131m, hangi dosyalar\u0131n repoda tutulaca\u011f\u0131 meselesidir. Genel olarak \u015fu yakla\u015f\u0131m\u0131 \u00f6neriyoruz:<\/p>\n<ul>\n<li>core WordPress dosyalar\u0131 (wp-admin, wp-includes) genelde repoda tutulabilir, ancak g\u00fcncelleme y\u00f6netimini iyi kurgulaman\u0131z gerekir.<\/li>\n<li>wp-content\/themes i\u00e7indeki kendi teman\u0131z\u0131 ve \u00f6zel eklentilerinizi mutlaka Git ile y\u00f6netin.<\/li>\n<li>wp-content\/uploads klas\u00f6r\u00fcn\u00fc <strong>repoya eklemeyin<\/strong>; bunu .gitignore ile hari\u00e7 b\u0131rak\u0131n. Bu klas\u00f6r canl\u0131 ortamda kullan\u0131c\u0131 y\u00fcklemeleriyle s\u00fcrekli de\u011fi\u015fir.<\/li>\n<\/ul>\n<p>Payla\u015f\u0131ml\u0131 hostingte staging ortam\u0131 kurmak, \u00f6zellikle WordPress i\u00e7inde kritik bir ad\u0131md\u0131r. cPanel \u00fczerinde alt alan ad\u0131 ve klonlama ad\u0131mlar\u0131n\u0131 detayl\u0131 anlatt\u0131\u011f\u0131m\u0131z <a href='https:\/\/www.dchost.com\/blog\/wordpress-staging-ortami-nasil-kurulur-cpanelde-alt-alan-adi-klonlama-ve-guvenli-yayina-alma\/'>WordPress staging ortam\u0131 kurma rehberini<\/a> mutlaka bu yaz\u0131yla birlikte okuman\u0131z\u0131 \u00f6neririz. Staging ortam\u0131yla birlikte, Git tabanl\u0131 deploy \u00e7ok daha g\u00fcvenli hale gelir.<\/p>\n<h2><span id=\"VPS_Uzerinde_Git_ile_CICD_ve_Sifir_Kesinti_Deploy\">VPS \u00dczerinde Git ile CI\/CD ve S\u0131f\u0131r Kesinti Deploy<\/span><\/h2>\n<p>VPS taraf\u0131na ge\u00e7ti\u011finizde oyun bamba\u015fka bir seviyeye \u00e7\u0131k\u0131yor. Root eri\u015fiminiz, tam dosya sistemi kontrol\u00fcn\u00fcz ve servisleri yeniden ba\u015flatabilme \u00f6zg\u00fcrl\u00fc\u011f\u00fcn\u00fcz var. Bu da ger\u00e7ek anlamda CI\/CD, s\u0131f\u0131r kesinti deploy ve daha geli\u015fmi\u015f mimariler kurman\u0131za izin veriyor.<\/p>\n<h3><span id=\"Temel_mimari_repo_build_release_klasorleri\">Temel mimari: repo, build, release klas\u00f6rleri<\/span><\/h3>\n<p>DCHost VPS \u00fczerinde \u00f6nerdi\u011fimiz klasik yap\u0131, Capistrano benzeri bir release dizin mimarisi:<\/p>\n<ul>\n<li><strong>\/var\/www\/proje\/repo<\/strong>: Sunucudaki Git deposu (bare veya normal olabilir).<\/li>\n<li><strong>\/var\/www\/proje\/releases<\/strong>: Her deploy i\u00e7in ayr\u0131 klas\u00f6r, \u00f6rne\u011fin 2024-02-03_1530 gibi timestamp ile.<\/li>\n<li><strong>\/var\/www\/proje\/current<\/strong>: Nginx \/ Apache\u2019nin k\u00f6k dizini olarak i\u015faret etti\u011fi sembolik link.<\/li>\n<\/ul>\n<p>Deploy s\u0131ras\u0131nda yap\u0131lanlar:<\/p>\n<ol>\n<li>Yeni release klas\u00f6r\u00fc olu\u015fturulur.<\/li>\n<li>\u0130lgili commit bu klas\u00f6re checkout edilir veya CI\u2019nin \u00fcretti\u011fi paket buraya a\u00e7\u0131l\u0131r.<\/li>\n<li>composer install, npm build, asset kopyalama, cache clear gibi ad\u0131mlar bu klas\u00f6rde \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r.<\/li>\n<li>Veritaban\u0131 migration gerekiyorsa uygulan\u0131r.<\/li>\n<li>current sembolik linki yeni release klas\u00f6r\u00fcne g\u00fcncellenir.<\/li>\n<li>PHP-FPM \/ queue worker gibi servisler reload edilir.<\/li>\n<\/ol>\n<p>Bu ak\u0131\u015f sayesinde deploy i\u015flemi, tek bir sembolik link g\u00fcncellemesiyle neredeyse atomik hale gelir; eski release klas\u00f6r\u00fcn\u00fc saklad\u0131\u011f\u0131n\u0131z i\u00e7in rollback de saniyeler s\u00fcrer.<\/p>\n<p>Bu prensibin \u00fczerine kurulu, rsync ve sembolik s\u00fcr\u00fcmlerle s\u0131f\u0131r kesinti da\u011f\u0131t\u0131m\u0131 ad\u0131m ad\u0131m anlatt\u0131\u011f\u0131m\u0131z <a href='https:\/\/www.dchost.com\/blog\/vpse-sifir-kesinti-ci-cd-nasil-kurulur-rsync-sembolik-surumler-ve-systemd-ile-sicacik-bir-yolculuk\/'>VPS\u2019e s\u0131f\u0131r kesinti CI\/CD rehberimize<\/a> mutlaka g\u00f6z at\u0131n; burada ise WordPress ve PHP oda\u011f\u0131nda pratik detaylar\u0131 netle\u015ftirece\u011fiz.<\/p>\n<h3><span id=\"CI_tarafi_GitHub_Actions_ornegi_ile_dusunmek\">CI taraf\u0131: GitHub Actions \u00f6rne\u011fi ile d\u00fc\u015f\u00fcnmek<\/span><\/h3>\n<p>VPS i\u00e7in modern ve yayg\u0131n pratik, deploy i\u015fini Git deposu taraf\u0131ndaki CI sistemine b\u0131rakmakt\u0131r. \u00d6rne\u011fin GitHub Actions ile \u015fu ad\u0131mlar\u0131 kolayl\u0131kla kurgulayabilirsiniz:<\/p>\n<ul>\n<li>main branch\u2019e her push oldu\u011funda tetiklenen workflow<\/li>\n<li>PHP unit testleri, lint ve basit g\u00fcvenlik taramalar\u0131<\/li>\n<li>SCSS\/JS build ad\u0131mlar\u0131 (npm, yarn vs.)<\/li>\n<li>Ortaya \u00e7\u0131kan artefakt\u0131n VPS\u2019e rsync ile g\u00f6nderilmesi<\/li>\n<li>Sunucuda deploy scriptinin tetiklenmesi<\/li>\n<\/ul>\n<p>GitHub Actions ile ger\u00e7ek bir senaryoyu, \u00f6rnek YAML dosyas\u0131yla beraber <a href='https:\/\/www.dchost.com\/blog\/github-actions-ile-vpse-otomatik-deploy-ve-zero-downtime-yayin\/'>GitHub Actions ile VPS\u2019e otomatik deploy ve s\u0131f\u0131r kesinti yay\u0131n<\/a> yaz\u0131m\u0131zda ayr\u0131nt\u0131l\u0131 olarak g\u00f6sterdik. Bu yaz\u0131y\u0131, burada anlatt\u0131\u011f\u0131m\u0131z mimariyle birlikte okursan\u0131z, teoriden prati\u011fe ge\u00e7i\u015f olduk\u00e7a h\u0131zl\u0131 olacakt\u0131r.<\/p>\n<h3><span id=\"VPSte_WordPress_icin_Git_tabanli_mimari\">VPS\u2019te WordPress i\u00e7in Git tabanl\u0131 mimari<\/span><\/h3>\n<p>WordPress\u2019i VPS \u00fczerinde y\u00f6netirken Git ve CI\/CD kullanman\u0131n iki temel yakla\u015f\u0131mdan biriyle yap\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6r\u00fcyoruz:<\/p>\n<ol>\n<li><strong>Klasik yakla\u015f\u0131m:<\/strong> Tam WordPress kurulumunu (core + tema + eklentiler) repoda tutmak.<\/li>\n<li><strong>Composer tabanl\u0131 yakla\u015f\u0131m:<\/strong> WordPress\u2019i bir ba\u011f\u0131ml\u0131l\u0131k olarak y\u00f6neten, daha modern ama daha teknik bir mimari.<\/li>\n<\/ol>\n<p>Klasik senaryo i\u00e7in uygulanabilir bir ak\u0131\u015f \u015f\u00f6yle olabilir:<\/p>\n<ul>\n<li>WordPress core, tema ve kulland\u0131\u011f\u0131n\u0131z \u00f6zel eklentiler Git repoda.<\/li>\n<li>wp-config.php\u2019nin hassas k\u0131s\u0131mlar\u0131 (.env dosyas\u0131ndan okunan) ortam de\u011fi\u015fkenleri ile besleniyor.<\/li>\n<li>wp-content\/uploads klas\u00f6r\u00fc repoda de\u011fil; canl\u0131 ortamda local disk veya Object Storage \u00fczerinde saklan\u0131yor.<\/li>\n<li>Deploy s\u0131ras\u0131nda uploads klas\u00f6r\u00fc dokunulmadan b\u0131rak\u0131l\u0131yor, sadece kod taraf\u0131 g\u00fcncelleniyor.<\/li>\n<\/ul>\n<p>Geli\u015ftirme, staging ve canl\u0131 ortamlar i\u00e7in kaynak ayr\u0131m\u0131 ve veri senkronizasyonu gibi konular\u0131, WordPress ve Laravel odakl\u0131 olarak <a href='https:\/\/www.dchost.com\/blog\/gelistirme-staging-canli-yolculugu-wordpress-ve-laravelde-sifir-kesinti-dagitim-nasil-gercekten-olur\/'>geli\u015ftirme\u2013staging\u2013canl\u0131 yolculu\u011fu rehberimizde<\/a> detayl\u0131 anlatt\u0131k. Oradaki kavramlar\u0131, burada anlatt\u0131\u011f\u0131m\u0131z Git tabanl\u0131 deploy modeliyle birle\u015ftirdi\u011finizde olduk\u00e7a sa\u011flam bir mimari ortaya \u00e7\u0131kar.<\/p>\n<h3><span id=\"Genel_PHP_projeleri_Laravel_Symfony_ozel_yazilim_icin_notlar\">Genel PHP projeleri (Laravel, Symfony, \u00f6zel yaz\u0131l\u0131m) i\u00e7in notlar<\/span><\/h3>\n<p>WordPress d\u0131\u015f\u0131ndaki PHP projelerinde (Laravel, Symfony veya tamamen \u00f6zel bir framework) CI\/CD konusu genellikle \u015fu ad\u0131mlar\u0131 i\u00e7erir:<\/p>\n<ul>\n<li>CI ortam\u0131nda composer install &#8211;no-dev ve production optimizasyonlar\u0131 (config cache, route cache vs.)<\/li>\n<li>\u00d6n u\u00e7 derleme ad\u0131mlar\u0131 (Vite, Webpack, Mix vs.)<\/li>\n<li>Ortaya \u00e7\u0131kan build klas\u00f6rlerinin pakete dahil edilmesi<\/li>\n<li>VPS \u00fczerinde .env dosyalar\u0131n\u0131n ve gizli anahtarlar\u0131n y\u00f6netimi<\/li>\n<\/ul>\n<p>.env ve benzeri gizli bilgileri Git repoda asla tutmamal\u0131s\u0131n\u0131z. Bu konuda DCHost VPS \u00fczerinde pratik \u00f6neriler sundu\u011fumuz <a href='https:\/\/www.dchost.com\/blog\/vpste-env-ve-gizli-anahtar-yonetimi\/'>VPS\u2019te .env ve gizli anahtar y\u00f6netimi<\/a> yaz\u0131m\u0131z\u0131 mutlaka incelemenizi tavsiye ederiz.<\/p>\n<h2><span id=\"WordPress_ve_PHP_Siteleri_Icin_Uygulanabilir_CICD_Senaryolari\">WordPress ve PHP Siteleri \u0130\u00e7in Uygulanabilir CI\/CD Senaryolar\u0131<\/span><\/h2>\n<p>\u015eimdi biraz daha somutla\u015fal\u0131m. Farkl\u0131 profil ve ekipler i\u00e7in \u00fc\u00e7 tipik senaryo \u00e7izelim: tek WordPress sitesi olan k\u00fc\u00e7\u00fck i\u015fletme, birden \u00e7ok m\u00fc\u015fteri sitesi y\u00f6neten ajans ve karma PHP\/WordPress projeleri olan \u00fcr\u00fcn ekipleri.<\/p>\n<h3><span id=\"Senaryo_1_Tek_WordPress_sitesi_olan_kucuk_isletme\">Senaryo 1: Tek WordPress sitesi olan k\u00fc\u00e7\u00fck i\u015fletme<\/span><\/h3>\n<p>Elinizde tek bir WordPress sitesi, payla\u015f\u0131ml\u0131 hosting ve basit bir geli\u015ftirme ak\u0131\u015f\u0131 oldu\u011funu d\u00fc\u015f\u00fcnelim. Bu durumda \u00f6nerdi\u011fimiz minimum kurgu:<\/p>\n<ul>\n<li>Localde geli\u015ftirme (tema \/ child tema, ufak eklentiler).<\/li>\n<li>Kodun Git\u2019te tutulmas\u0131 (en az\u0131ndan tema klas\u00f6r\u00fc seviyesinde).<\/li>\n<li>cPanel Git entegrasyonu veya SSH ile bare repo + post-receive hook.<\/li>\n<li>Canl\u0131ya almadan \u00f6nce staging alt alan\u0131nda testi yap\u0131lm\u0131\u015f branch\u2019ten merge ve deploy.<\/li>\n<\/ul>\n<p>Burada CI taraf\u0131n\u0131 \u00e7ok karma\u015f\u0131kla\u015ft\u0131rmaya gerek yok; \u00f6nemli olan, FTP yerine Git kullanarak her de\u011fi\u015fikli\u011fin kayd\u0131n\u0131n tutulmas\u0131 ve istenirse geri d\u00f6n\u00fclebilmesi. Ayr\u0131ca WordPress yedekleme stratejilerini anlatan <a href='https:\/\/www.dchost.com\/blog\/wordpress-yedekleme-stratejileri-paylasimli-hosting-ve-vpste-otomatik-yedek-ve-geri-yukleme\/'>WordPress yedekleme rehberimizde<\/a> anlatt\u0131\u011f\u0131m\u0131z gibi, d\u00fczenli dosya ve veritaban\u0131 yedekleriyle bu ak\u0131\u015f\u0131 desteklerseniz risk b\u00fcy\u00fck \u00f6l\u00e7\u00fcde azal\u0131r.<\/p>\n<h3><span id=\"Senaryo_2_Onlarca_WordPress_sitesi_yoneten_ajans\">Senaryo 2: Onlarca WordPress sitesi y\u00f6neten ajans<\/span><\/h3>\n<p>Ajans taraf\u0131nda birden fazla m\u00fc\u015fteri, ortak kullan\u0131lan tema\/eklenti paketleri ve yo\u011fun teslim takvimi devreye girer. Burada Git ve CI\/CD, neredeyse mecburi hale gelir. \u00d6rnek bir mimari:<\/p>\n<ul>\n<li>Her m\u00fc\u015fteri i\u00e7in ayr\u0131 Git deposu, ortak paketler (tema\/eklenti) i\u00e7in ayr\u0131 monorepo veya paket deposu.<\/li>\n<li>Geli\u015ftirme, staging, canl\u0131 i\u00e7in ayr\u0131 branch yap\u0131s\u0131 (\u00f6rne\u011fin feature, develop, main).<\/li>\n<li>DCHost \u00fczerindeki payla\u015f\u0131ml\u0131 hosting veya VPS hesaplar\u0131nda staging alt alanlar\u0131.<\/li>\n<li>CI taraf\u0131nda: kod kalitesi kontrol\u00fc, temel testler ve paketleme.<\/li>\n<li>Deploy scriptleriyle her m\u00fc\u015fteri sitesini ilgili sunucuya SSH + rsync \u00fczerinden otomatik da\u011f\u0131tma.<\/li>\n<\/ul>\n<p>Staging ve canl\u0131 ortam ayr\u0131m\u0131n\u0131, \u00f6zellikle y\u00fcksek trafik alan WordPress siteleri i\u00e7in <a href='https:\/\/www.dchost.com\/blog\/blue-green-deployment-ile-woocommerce-ve-laravel-uygulamalarini-sifir-kesintiyle-guncellemek\/'>Blue-Green deployment ile s\u0131f\u0131r kesinti g\u00fcncelleme<\/a> yaz\u0131m\u0131zda daha ileri seviyede anlatt\u0131k. Ajans yap\u0131lar\u0131nda, bu stratejiyi en az\u0131ndan b\u00fcy\u00fck m\u00fc\u015fteriler i\u00e7in uygulaman\u0131z\u0131 \u015fiddetle \u00f6neriyoruz.<\/p>\n<h3><span id=\"Senaryo_3_Karma_PHPWordPress_projeleri_olan_urun_ekipleri\">Senaryo 3: Karma PHP\/WordPress projeleri olan \u00fcr\u00fcn ekipleri<\/span><\/h3>\n<p>Hem WordPress tabanl\u0131 bir pazarlama sitesi, hem de arka tarafta Laravel gibi bir framework ile yaz\u0131lm\u0131\u015f uygulama bar\u0131nd\u0131ran ekiplerde durum biraz daha sofistike. Burada \u00f6nerimiz:<\/p>\n<ul>\n<li>WordPress ve ana uygulama i\u00e7in <strong>ayr\u0131 Git depolar\u0131<\/strong>.<\/li>\n<li>VPS taraf\u0131nda her biri i\u00e7in ayr\u0131 vhost ve ayr\u0131 deploy pipeline.<\/li>\n<li>CI taraf\u0131nda ortak ad\u0131mlar (test, build) ama deploy ad\u0131mlar\u0131n\u0131n proje baz\u0131nda ayr\u0131lmas\u0131.<\/li>\n<li>Ortak kullan\u0131lan servisler (Redis, veritaban\u0131, queue, object storage) i\u00e7in iyi tan\u0131mlanm\u0131\u015f env de\u011fi\u015fkenleri.<\/li>\n<\/ul>\n<p>Bu tip yap\u0131larda CI\/CD ve ortamlara g\u00f6re yap\u0131land\u0131rma konular\u0131n\u0131 daha derinlemesine ele ald\u0131\u011f\u0131m\u0131z <a href='https:\/\/www.dchost.com\/blog\/vpse-sifir-kesinti-ci-cd-nasil-kurulur-rsync-sembolik-surumler-ve-systemd-ile-sicacik-bir-yolculuk\/'>s\u0131f\u0131r kesinti CI\/CD rehberi<\/a> ve <a href='https:\/\/www.dchost.com\/blog\/wordpress-olceklendirme-yol-haritasi-paylasimli-hostingden-yonetilen-wordpress-ve-vps-kume-mimarilerine-gecis\/'>WordPress \u00f6l\u00e7eklendirme yol haritas\u0131<\/a> yaz\u0131lar\u0131 da size yol g\u00f6sterecektir.<\/p>\n<h2><span id=\"Veritabani_Yedek_ve_Rollback_Stratejileri\">Veritaban\u0131, Yedek ve Rollback Stratejileri<\/span><\/h2>\n<p>Ne kadar iyi CI\/CD kurarsan\u0131z kurun, veritaban\u0131 ve geri d\u00f6n\u00fc\u015f plan\u0131n\u0131z zay\u0131fsa canl\u0131 ortamda risk halen y\u00fcksektir. WordPress ve genel PHP projeleri i\u00e7in dikkat edilmesi gereken ba\u015fl\u0131klar\u0131 \u00f6zetleyelim.<\/p>\n<h3><span id=\"WordPress_veritabani_guncellemeleri\">WordPress veritaban\u0131 g\u00fcncellemeleri<\/span><\/h3>\n<p>WordPress\u2019te veritaban\u0131 de\u011fi\u015fiklikleri genelde iki kaynaktan gelir:<\/p>\n<ul>\n<li>Core, tema ve eklenti g\u00fcncellemelerinin otomatik veritaban\u0131 migration\u2019lar\u0131.<\/li>\n<li>\u00d6zel geli\u015ftirme yapt\u0131\u011f\u0131n\u0131z eklenti veya temadaki \u015fema de\u011fi\u015fiklikleri.<\/li>\n<\/ul>\n<p>CI\/CD hatt\u0131 kurdu\u011funuzda \u015fu prensiplere dikkat edin:<\/p>\n<ul>\n<li>Deploy \u00f6ncesinde mutlaka tam veritaban\u0131 yede\u011fi al\u0131n (mysqldump veya benzeri).<\/li>\n<li>B\u00fcy\u00fck \u015fema de\u011fi\u015fikliklerini yo\u011fun trafik d\u0131\u015f\u0131 saatlere planlay\u0131n.<\/li>\n<li>\u00d6zel eklentileriniz i\u00e7in versiyon bazl\u0131 upgrade scriptleri yaz\u0131n; b\u00f6ylece ayn\u0131 migration iki kez \u00e7al\u0131\u015fmaz.<\/li>\n<\/ul>\n<h3><span id=\"Laravel_ve_benzeri_frameworklerde_migration_yonetimi\">Laravel ve benzeri framework\u2019lerde migration y\u00f6netimi<\/span><\/h3>\n<p>Framework tabanl\u0131 PHP projelerinde (Laravel, Symfony vb.) veritaban\u0131 \u015fema de\u011fi\u015fiklikleri migration dosyalar\u0131yla y\u00f6netilir. CI\/CD pipeline\u2019\u0131n\u0131za genelde \u015fu ad\u0131m\u0131 eklemeniz gerekir:<\/p>\n<pre class=\"language-bash line-numbers\"><code class=\"language-bash\">php artisan migrate --force\n<\/code><\/pre>\n<p>Ancak bu komutun da riskleri var; \u00e7ok uzun s\u00fcren migration i\u015flemleri canl\u0131 sitede lock ve yava\u015flamaya sebep olabilir. B\u00fcy\u00fck de\u011fi\u015fikliklerde, \u00f6nceden planlanm\u0131\u015f bak\u0131m pencereleri ve okuma-yazma ayr\u0131m\u0131 gibi mimari kararlar devreye girer. Bu seviyede ihtiya\u00e7lar\u0131n\u0131z varsa, veritaban\u0131 replikasyon ve y\u00fcksek eri\u015filebilirlik konular\u0131n\u0131 ele ald\u0131\u011f\u0131m\u0131z yaz\u0131lara da g\u00f6z atman\u0131z\u0131 \u00f6neririz.<\/p>\n<h3><span id=\"Yedekleme_ve_geri_donus_rollback_pratikleri\">Yedekleme ve geri d\u00f6n\u00fc\u015f (rollback) pratikleri<\/span><\/h3>\n<p>Sa\u011fl\u0131kl\u0131 bir CI\/CD hatt\u0131n\u0131n ayr\u0131lmaz par\u00e7as\u0131 yedek ve rollback mekanizmalar\u0131d\u0131r. Genel \u00f6neriler:<\/p>\n<ul>\n<li>Dosya taraf\u0131nda: VPS\u2019te her release klas\u00f6r\u00fcn\u00fc, en az\u0131ndan birka\u00e7 s\u00fcr\u00fcm boyunca saklay\u0131n; rollback i\u00e7in sadece sembolik linki geri alman\u0131z yeterli olsun.<\/li>\n<li>Veritaban\u0131 taraf\u0131nda: Her \u00fcretim deploy\u2019undan hemen \u00f6nce otomatik dump al\u0131n ve saklama politikalar\u0131n\u0131z\u0131 (RPO\/RTO) netle\u015ftirin.<\/li>\n<li>Payla\u015f\u0131ml\u0131 hostingte: cPanel yedeklerinizi CI\/CD ile entegre d\u00fc\u015f\u00fcn\u00fcn; \u00f6rne\u011fin deploy sonras\u0131nda otomatik yedek tetikleyebilirsiniz.<\/li>\n<\/ul>\n<p>Yedek stratejilerini genel olarak planlamak i\u00e7in, farkl\u0131 i\u015f y\u00fckleri i\u00e7in haz\u0131rlad\u0131\u011f\u0131m\u0131z <a href='https:\/\/www.dchost.com\/blog\/yedekleme-stratejisi-nasil-planlanir-blog-e-ticaret-ve-saas-siteleri-icin-rpo-rto-rehberi\/'>RPO\/RTO odakl\u0131 yedekleme rehberini<\/a> de okuman\u0131z\u0131 \u00f6neririz.<\/p>\n<h2><span id=\"Guvenlik_Erisim_Yonetimi_ve_Gizli_Bilgiler\">G\u00fcvenlik, Eri\u015fim Y\u00f6netimi ve Gizli Bilgiler<\/span><\/h2>\n<p>SSH ile otomatik deploy ve CI\/CD kullan\u0131rken g\u00fcvenlik taraf\u0131n\u0131 ihmal etmek, kazand\u0131\u011f\u0131n\u0131z t\u00fcm avantajlar\u0131 tek hamlede s\u0131f\u0131rlayabilir. DCHost \u00fczerinde g\u00f6rd\u00fc\u011f\u00fcm\u00fcz ba\u015far\u0131l\u0131 kurulumlar\u0131n ortak noktalar\u0131 \u015funlar:<\/p>\n<h3><span id=\"SSH_anahtarlari_ve_deploy_kullanicisi\">SSH anahtarlar\u0131 ve deploy kullan\u0131c\u0131s\u0131<\/span><\/h3>\n<ul>\n<li>Deploy i\u015flemleri i\u00e7in ayr\u0131 bir Linux kullan\u0131c\u0131s\u0131 tan\u0131mlay\u0131n (\u00f6rne\u011fin deploy).<\/li>\n<li>Bu kullan\u0131c\u0131 i\u00e7in g\u00fc\u00e7l\u00fc, m\u00fcmk\u00fcnse yaln\u0131zca SSH anahtarlar\u0131yla giri\u015fe izin verin.<\/li>\n<li>CI sisteminizin public anahtar\u0131n\u0131 sadece bu kullan\u0131c\u0131ya ekleyin; root\u2019a do\u011frudan eri\u015fim vermeyin.<\/li>\n<li>Bu kullan\u0131c\u0131n\u0131n sadece gerekli dizinlere eri\u015fimi ve gerekti\u011finde sudo ile k\u0131s\u0131tl\u0131 komut \u00e7al\u0131\u015ft\u0131rma yetkisi olsun.<\/li>\n<\/ul>\n<h3><span id=\"env_ve_API_anahtarlarinin_yonetimi\">.env ve API anahtarlar\u0131n\u0131n y\u00f6netimi<\/span><\/h3>\n<p>Daha \u00f6nce de vurgulad\u0131\u011f\u0131m\u0131z gibi, .env dosyalar\u0131 ve di\u011fer gizli bilgiler kesinlikle Git deposunda olmamal\u0131. Bunun yerine:<\/p>\n<ul>\n<li>VPS \u00fczerinde .env dosyas\u0131 sadece sunucuda tutulmal\u0131, CI pipeline\u2019\u0131 bu dosyaya hi\u00e7 dokunmamal\u0131.<\/li>\n<li>Payla\u015f\u0131ml\u0131 hostingte de benzer \u015fekilde, yap\u0131land\u0131rma dosyalar\u0131n\u0131 repodan ay\u0131r\u0131n.<\/li>\n<li>Gerekti\u011finde secret manager veya \u015fifreli vault \u00e7\u00f6z\u00fcmleri kullan\u0131n.<\/li>\n<\/ul>\n<p>Bu konuda, ger\u00e7ek senaryolar \u00fczerinden giden <a href='https:\/\/www.dchost.com\/blog\/vpste-env-ve-gizli-anahtar-yonetimi\/'>VPS\u2019te gizli anahtar y\u00f6netimi<\/a> yaz\u0131m\u0131zdaki \u00f6nerileri CI\/CD tasar\u0131m\u0131n\u0131za mutlaka entegre edin.<\/p>\n<h3><span id=\"Loglar_izleme_ve_alarm\">Log\u2019lar, izleme ve alarm<\/span><\/h3>\n<p>Bir deploy ba\u015far\u0131s\u0131z oldu\u011funda veya beklenmedik bir yava\u015flama ya\u015fand\u0131\u011f\u0131nda, olay\u0131 h\u0131zl\u0131 te\u015fhis edebilmek i\u00e7in log ve izleme katman\u0131 \u015fart:<\/p>\n<ul>\n<li>Web sunucusu (Nginx\/Apache) loglar\u0131n\u0131 merkezi bir yerde toplay\u0131n.<\/li>\n<li>PHP hata loglar\u0131n\u0131 CI\/CD sonras\u0131 \u00f6zellikle yak\u0131ndan izleyin.<\/li>\n<li>Uptime ve response time \u00f6l\u00e7\u00fcmleri i\u00e7in basit bir monitoring arac\u0131 kullan\u0131n.<\/li>\n<\/ul>\n<p>DCHost blogda VPS izleme ve alarm kurulumuna \u00f6zel haz\u0131rlad\u0131\u011f\u0131m\u0131z rehberler, bu konuda sa\u011flam bir ba\u015flang\u0131\u00e7 yapman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h2><span id=\"DCHost_Uzerinde_Git_ile_Otomatik_Deploya_Baslamak\">DCHost \u00dczerinde Git ile Otomatik Deploy\u2019a Ba\u015flamak<\/span><\/h2>\n<p>Buraya kadar anlatt\u0131\u011f\u0131m\u0131z t\u00fcm kavramlar, ister payla\u015f\u0131ml\u0131 hosting ister VPS kullan\u0131n, DCHost altyap\u0131s\u0131 \u00fczerinde uygulanabilir. Payla\u015f\u0131ml\u0131 hosting paketlerimizde cPanel ve SSH eri\u015fimi sayesinde basit Git tabanl\u0131 ak\u0131\u015flar\u0131 rahatl\u0131kla kurabilirsiniz. Daha kapsaml\u0131 CI\/CD ve s\u0131f\u0131r kesinti hedefleyen mimariler i\u00e7in ise DCHost VPS \u00e7\u00f6z\u00fcmleri, root eri\u015fimi ve esnek kaynak planlamas\u0131yla size geni\u015f bir hareket alan\u0131 sunar.<\/p>\n<p>\u00d6zetlemek gerekirse:<\/p>\n<ul>\n<li>FTP ile manuel dosya kopyalamay\u0131 b\u0131rak\u0131p, kodu her zaman Git ile y\u00f6netmeye ge\u00e7in.<\/li>\n<li>\u00d6nce staging ortam\u0131 kurup, sonra canl\u0131 deploy\u2019u otomatikle\u015ftirin.<\/li>\n<li>Payla\u015f\u0131ml\u0131 hostingte basit hook veya cron tabanl\u0131 senaryolarla ba\u015flay\u0131n.<\/li>\n<li>VPS\u2019e ge\u00e7ti\u011finizde release klas\u00f6rleri, sembolik linkler ve CI pipeline\u2019lar\u0131 ile s\u0131f\u0131r kesinti hedefine yakla\u015f\u0131n.<\/li>\n<li>Her zaman yedek, rollback ve g\u00fcvenlik (SSH, .env, eri\u015fim yetkileri) taraf\u0131n\u0131 ihmal etmeyin.<\/li>\n<\/ul>\n<p>DCHost olarak, Git ile otomatik deploy ve CI\/CD kurgular\u0131n\u0131 ger\u00e7ek projelerde her g\u00fcn g\u00f6r\u00fcyoruz; bu y\u00fczden nelerin sahada i\u015fe yarad\u0131\u011f\u0131n\u0131, nelerin sadece teoride kald\u0131\u011f\u0131n\u0131 iyi biliyoruz. E\u011fer mevcut WordPress veya PHP siteniz i\u00e7in bu ge\u00e7i\u015fi planl\u0131yorsan\u0131z, uygun DCHost payla\u015f\u0131ml\u0131 hosting ya da VPS plan\u0131n\u0131 se\u00e7ip yukar\u0131daki ad\u0131mlarla k\u00fc\u00e7\u00fckten ba\u015flay\u0131n. \u0130htiya\u00e7lar b\u00fcy\u00fcd\u00fck\u00e7e, blogumuzda payla\u015ft\u0131\u011f\u0131m\u0131z daha ileri seviye rehberlerle mimarinizi ad\u0131m ad\u0131m olgunla\u015ft\u0131rabilirsiniz.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>WordPress ya da \u00f6zel yaz\u0131lm\u0131\u015f bir PHP site \u00fczerinde \u00e7al\u0131\u015f\u0131rken en \u00e7ok zaman kaybettiren ve hata \u00fcreten i\u015f neredeyse her zaman ayn\u0131d\u0131r: g\u00fcncellemeleri canl\u0131 sunucuya ta\u015f\u0131mak. Dosyalar\u0131 FTP ile tek tek s\u00fcr\u00fckleyip b\u0131rakmak, hangi dosyalar\u0131n g\u00fcncel oldu\u011funu hat\u0131rlamaya \u00e7al\u0131\u015fmak, canl\u0131 sitede beyaz ekran g\u00f6rmemek i\u00e7in dua etmek\u2026 Birka\u00e7 m\u00fc\u015fterili k\u00fc\u00e7\u00fck bir ajansken bile yorucu, onlarca [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4381,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-4380","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-teknoloji"],"_links":{"self":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/4380","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/comments?post=4380"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/4380\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/4381"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=4380"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=4380"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=4380"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}