{"id":4722,"date":"2026-02-07T20:11:58","date_gmt":"2026-02-07T17:11:58","guid":{"rendered":"https:\/\/www.dchost.com\/blog\/laravel-ve-node-js-icin-staging-ortami-kurulumu-veritabani-senkronizasyonu-env-ve-ci-cd\/"},"modified":"2026-02-07T20:11:58","modified_gmt":"2026-02-07T17:11:58","slug":"laravel-ve-node-js-icin-staging-ortami-kurulumu-veritabani-senkronizasyonu-env-ve-ci-cd","status":"publish","type":"post","link":"https:\/\/www.dchost.com\/blog\/laravel-ve-node-js-icin-staging-ortami-kurulumu-veritabani-senkronizasyonu-env-ve-ci-cd\/","title":{"rendered":"Laravel ve Node.js \u0130\u00e7in Staging Ortam\u0131 Kurulumu: Veritaban\u0131 Senkronizasyonu, .env ve CI\/CD"},"content":{"rendered":"<div class=\"dchost-blog-content-wrapper\"><div id=\"toc_container\" class=\"toc_transparent no_bullets\"><p class=\"toc_title\">\u0130&ccedil;indekiler<\/p><ul class=\"toc_list\"><li><a href=\"#Laravel_ve_Nodejs_Projelerinde_Neden_Staging_Ortami_Sart_Hale_Geldi\"><span class=\"toc_number toc_depth_1\">1<\/span> Laravel ve Node.js Projelerinde Neden Staging Ortam\u0131 \u015eart Hale Geldi?<\/a><\/li><li><a href=\"#Staging_Ortaminin_Temel_Mimarisi_Laravel_ve_Nodejs_Acisindan_Farklar\"><span class=\"toc_number toc_depth_1\">2<\/span> Staging Ortam\u0131n\u0131n Temel Mimarisi: Laravel ve Node.js A\u00e7\u0131s\u0131ndan Farklar<\/a><ul><li><a href=\"#Tek_Sunucu_mu_Ayri_VPS_mi\"><span class=\"toc_number toc_depth_2\">2.1<\/span> Tek Sunucu mu Ayr\u0131 VPS mi?<\/a><\/li><li><a href=\"#Laravel_Staging_Ortaminin_Tipik_Bilesenleri\"><span class=\"toc_number toc_depth_2\">2.2<\/span> Laravel Staging Ortam\u0131n\u0131n Tipik Bile\u015fenleri<\/a><\/li><li><a href=\"#Nodejs_Staging_Ortaminin_Tipik_Bilesenleri\"><span class=\"toc_number toc_depth_2\">2.3<\/span> Node.js Staging Ortam\u0131n\u0131n Tipik Bile\u015fenleri<\/a><\/li><\/ul><\/li><li><a href=\"#Veritabani_Senkronizasyonu_Canli_Veriyi_Staginge_Tasirken_Yapilmasi_ve_Yapilmamasi_Gerekenler\"><span class=\"toc_number toc_depth_1\">3<\/span> Veritaban\u0131 Senkronizasyonu: Canl\u0131 Veriyi Staging\u2019e Ta\u015f\u0131rken Yap\u0131lmas\u0131 ve Yap\u0131lmamas\u0131 Gerekenler<\/a><ul><li><a href=\"#Oncelik_Ayri_Veritabani_ve_Ayri_Kullanici\"><span class=\"toc_number toc_depth_2\">3.1<\/span> \u00d6ncelik: Ayr\u0131 Veritaban\u0131 ve Ayr\u0131 Kullan\u0131c\u0131<\/a><\/li><li><a href=\"#Senaryo_Analizi_Ne_Tur_Senkronizasyona_Ihtiyaciniz_Var\"><span class=\"toc_number toc_depth_2\">3.2<\/span> Senaryo Analizi: Ne T\u00fcr Senkronizasyona \u0130htiyac\u0131n\u0131z Var?<\/a><\/li><li><a href=\"#MySQLMariaDB_ve_PostgreSQL_Icin_Temel_Senkronizasyon_Yontemi\"><span class=\"toc_number toc_depth_2\">3.3<\/span> MySQL\/MariaDB ve PostgreSQL \u0130\u00e7in Temel Senkronizasyon Y\u00f6ntemi<\/a><\/li><li><a href=\"#Kisisel_Veriler_ve_KVKKGDPR_Maskeleme_Zorunlulugu\"><span class=\"toc_number toc_depth_2\">3.4<\/span> Ki\u015fisel Veriler ve KVKK\/GDPR: Maskeleme Zorunlulu\u011fu<\/a><\/li><li><a href=\"#Laravel_Ozelinde_Migration_ve_Seeder_Stratejisi\"><span class=\"toc_number toc_depth_2\">3.5<\/span> Laravel \u00d6zelinde: Migration ve Seeder Stratejisi<\/a><\/li><li><a href=\"#Nodejs_Ozelinde_ORM_Migration_Araclarini_Disiplinli_Kullanmak\"><span class=\"toc_number toc_depth_2\">3.6<\/span> Node.js \u00d6zelinde: ORM Migration Ara\u00e7lar\u0131n\u0131 Disiplinli Kullanmak<\/a><\/li><\/ul><\/li><li><a href=\"#env_Ortam_Degiskenleri_ve_Secret_Yonetimi_Staging_ile_Canliyi_Ayirmanin_Incelikleri\"><span class=\"toc_number toc_depth_1\">4<\/span> .env, Ortam De\u011fi\u015fkenleri ve Secret Y\u00f6netimi: Staging ile Canl\u0131y\u0131 Ay\u0131rman\u0131n \u0130ncelikleri<\/a><ul><li><a href=\"#env_Kopyalama_Hatalari_En_Riskli_Alanlar\"><span class=\"toc_number toc_depth_2\">4.1<\/span> .env Kopyalama Hatalar\u0131: En Riskli Alanlar<\/a><\/li><li><a href=\"#Staging_Icin_Ornek_Laravel_env_Yapisi\"><span class=\"toc_number toc_depth_2\">4.2<\/span> Staging \u0130\u00e7in \u00d6rnek Laravel .env Yap\u0131s\u0131<\/a><\/li><li><a href=\"#VPS_Uzerinde_Guvenli_Secret_Yonetimi\"><span class=\"toc_number toc_depth_2\">4.3<\/span> VPS \u00dczerinde G\u00fcvenli Secret Y\u00f6netimi<\/a><\/li><\/ul><\/li><li><a href=\"#Laravel_Icin_Adim_Adim_Staging_Ortami_Kurulumu\"><span class=\"toc_number toc_depth_1\">5<\/span> Laravel \u0130\u00e7in Ad\u0131m Ad\u0131m Staging Ortam\u0131 Kurulumu<\/a><ul><li><a href=\"#1_Domain_DNS_ve_SSL_Kurulumu\"><span class=\"toc_number toc_depth_2\">5.1<\/span> 1. Domain, DNS ve SSL Kurulumu<\/a><\/li><li><a href=\"#2_Ayri_Veritabani_ve_Kullanici_Olusturma\"><span class=\"toc_number toc_depth_2\">5.2<\/span> 2. Ayr\u0131 Veritaban\u0131 ve Kullan\u0131c\u0131 Olu\u015fturma<\/a><\/li><li><a href=\"#3_Uygulama_Kodunu_Cekmek\"><span class=\"toc_number toc_depth_2\">5.3<\/span> 3. Uygulama Kodunu \u00c7ekmek<\/a><\/li><li><a href=\"#4_Bagimliliklarin_Kurulumu\"><span class=\"toc_number toc_depth_2\">5.4<\/span> 4. Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Kurulumu<\/a><\/li><li><a href=\"#5_envstaging_Olusturma_ve_Laravel_Ayarlari\"><span class=\"toc_number toc_depth_2\">5.5<\/span> 5. .env.staging Olu\u015fturma ve Laravel Ayarlar\u0131<\/a><\/li><li><a href=\"#6_Migration_Seeder_ve_Storage_Ayarlari\"><span class=\"toc_number toc_depth_2\">5.6<\/span> 6. Migration, Seeder ve Storage Ayarlar\u0131<\/a><\/li><li><a href=\"#7_Queue_Scheduler_ve_Horizon\"><span class=\"toc_number toc_depth_2\">5.7<\/span> 7. Queue, Scheduler ve Horizon<\/a><\/li><\/ul><\/li><li><a href=\"#Nodejs_Icin_Adim_Adim_Staging_Ortami_Kurulumu\"><span class=\"toc_number toc_depth_1\">6<\/span> Node.js \u0130\u00e7in Ad\u0131m Ad\u0131m Staging Ortam\u0131 Kurulumu<\/a><ul><li><a href=\"#1_Nodejs_Runtime_ve_Kullanici_Yapisi\"><span class=\"toc_number toc_depth_2\">6.1<\/span> 1. Node.js Runtime ve Kullan\u0131c\u0131 Yap\u0131s\u0131<\/a><\/li><li><a href=\"#2_Kodun_Cekilmesi_ve_Bagimliliklarin_Kurulumu\"><span class=\"toc_number toc_depth_2\">6.2<\/span> 2. Kodun \u00c7ekilmesi ve Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Kurulumu<\/a><\/li><li><a href=\"#3_envstaging_ve_Konfigurasyon\"><span class=\"toc_number toc_depth_2\">6.3<\/span> 3. .env.staging ve Konfig\u00fcrasyon<\/a><\/li><li><a href=\"#4_PM2_veya_systemd_ile_Surec_Yonetimi\"><span class=\"toc_number toc_depth_2\">6.4<\/span> 4. PM2 veya systemd ile S\u00fcre\u00e7 Y\u00f6netimi<\/a><\/li><li><a href=\"#5_Nginx_Reverse_Proxy_ve_SSL\"><span class=\"toc_number toc_depth_2\">6.5<\/span> 5. Nginx Reverse Proxy ve SSL<\/a><\/li><\/ul><\/li><li><a href=\"#CICD_ile_Laravel_ve_Nodejs_Staging_Ortamini_Otomatiklestirmek\"><span class=\"toc_number toc_depth_1\">7<\/span> CI\/CD ile Laravel ve Node.js Staging Ortam\u0131n\u0131 Otomatikle\u015ftirmek<\/a><ul><li><a href=\"#Branch_Stratejisi_ve_Deploy_Tetikleyicileri\"><span class=\"toc_number toc_depth_2\">7.1<\/span> Branch Stratejisi ve Deploy Tetikleyicileri<\/a><\/li><li><a href=\"#Pipeline_Asamalari_Build_Test_Deploy\"><span class=\"toc_number toc_depth_2\">7.2<\/span> Pipeline A\u015famalar\u0131: Build, Test, Deploy<\/a><\/li><li><a href=\"#Zero-Downtime_ve_Blue-Green_Yaklasimlari\"><span class=\"toc_number toc_depth_2\">7.3<\/span> Zero-Downtime ve Blue-Green Yakla\u015f\u0131mlar\u0131<\/a><\/li><\/ul><\/li><li><a href=\"#Staging_Ortaminda_Guvenlik_Performans_ve_SEO_Detaylari\"><span class=\"toc_number toc_depth_1\">8<\/span> Staging Ortam\u0131nda G\u00fcvenlik, Performans ve SEO Detaylar\u0131<\/a><ul><li><a href=\"#Guvenlik_Staging_de_Uretim_Kadar_Ciddi_Olmali\"><span class=\"toc_number toc_depth_2\">8.1<\/span> G\u00fcvenlik: Staging de \u00dcretim Kadar Ciddi Olmal\u0131<\/a><\/li><li><a href=\"#SEO_Stagingin_Arama_Motorlarina_Sizmasini_Engellemek\"><span class=\"toc_number toc_depth_2\">8.2<\/span> SEO: Staging\u2019in Arama Motorlar\u0131na S\u0131zmas\u0131n\u0131 Engellemek<\/a><\/li><li><a href=\"#Performans_Nasil_Olsa_Test_Demeyin\"><span class=\"toc_number toc_depth_2\">8.3<\/span> Performans: \u201cNas\u0131l Olsa Test\u201d Demeyin<\/a><\/li><\/ul><\/li><li><a href=\"#DCHost_Uzerinde_Ornek_Staging_Mimarileri\"><span class=\"toc_number toc_depth_1\">9<\/span> DCHost \u00dczerinde \u00d6rnek Staging Mimarileri<\/a><ul><li><a href=\"#Senaryo_1_Tek_VPSte_Canli_Staging_KucukOrta_Projeler\"><span class=\"toc_number toc_depth_2\">9.1<\/span> Senaryo 1: Tek VPS\u2019te Canl\u0131 + Staging (K\u00fc\u00e7\u00fck\/Orta Projeler)<\/a><\/li><li><a href=\"#Senaryo_2_Ayri_VPSte_Staging_Buyuyen_ve_Kritik_Projeler\"><span class=\"toc_number toc_depth_2\">9.2<\/span> Senaryo 2: Ayr\u0131 VPS\u2019te Staging (B\u00fcy\u00fcyen ve Kritik Projeler)<\/a><\/li><\/ul><\/li><li><a href=\"#Ozet_ve_Sonraki_Adimlar\"><span class=\"toc_number toc_depth_1\">10<\/span> \u00d6zet ve Sonraki Ad\u0131mlar<\/a><\/li><\/ul><\/div>\n<h2><span id=\"Laravel_ve_Nodejs_Projelerinde_Neden_Staging_Ortami_Sart_Hale_Geldi\">Laravel ve Node.js Projelerinde Neden Staging Ortam\u0131 \u015eart Hale Geldi?<\/span><\/h2>\n<p>Laravel veya Node.js ile ciddi bir proje geli\u015ftiriyorsan\u0131z, geli\u015ftirme ortam\u0131ndan do\u011frudan canl\u0131ya deploy yapmak bir noktadan sonra kumar oynamakla ayn\u0131 \u015fey oluyor. Ekip b\u00fcy\u00fcd\u00fck\u00e7e, feature say\u0131s\u0131 artt\u0131k\u00e7a, veritaban\u0131 \u015femas\u0131 s\u0131k s\u0131k de\u011fi\u015ftik\u00e7e ve \u00f6zellikle \u00f6deme, entegrasyon, kimlik do\u011frulama gibi kritik ak\u0131\u015flar devreye girdik\u00e7e araya mutlaka tutarl\u0131 bir <strong>staging ortam\u0131<\/strong> koyman\u0131z gerekiyor.<\/p>\n<p>Biz DCHost taraf\u0131nda onlarca Laravel, Node.js ve karma yap\u0131larda ayn\u0131 sorunu g\u00f6r\u00fcyoruz: Canl\u0131ya \u00e7\u0131kan her k\u00fc\u00e7\u00fck de\u011fi\u015fiklik, loglara ve destek taleplerine bak\u0131ld\u0131\u011f\u0131nda asl\u0131nda staging ortam\u0131nda yakalanabilecek t\u00fcrden hatalardan kaynaklan\u0131yor. Bu y\u00fczden geli\u015ftirme\u2013test\u2013canl\u0131 hatt\u0131n\u0131 mimari olarak do\u011fru kurmak, sadece kod kalitesi de\u011fil, <strong>m\u00fc\u015fteri deneyimi ve gelir kayb\u0131<\/strong> a\u00e7\u0131s\u0131ndan da kritik. Bu hatt\u0131n genel resmini g\u00f6rmek istiyorsan\u0131z, \u00f6nce <a href=\"https:\/\/www.dchost.com\/blog\/gelistirme-test-ve-canli-ortamlar-icin-hosting-mimarisi\/\">geli\u015ftirme, test ve canl\u0131 ortamlar i\u00e7in hosting mimarisi rehberimize<\/a> g\u00f6z atman\u0131z faydal\u0131 olur.<\/p>\n<p>Bu yaz\u0131da oda\u011f\u0131m\u0131z \u00e7ok net: Laravel ve Node.js uygulamalar\u0131 i\u00e7in staging ortam\u0131n\u0131 <strong>do\u011fru kurmak<\/strong>. \u00d6zellikle \u00fc\u00e7 konuyu derinlemesine ele alaca\u011f\u0131z:<\/p>\n<ul>\n<li>Canl\u0131 ve staging veritaban\u0131 aras\u0131ndaki <strong>sa\u011fl\u0131kl\u0131 ve g\u00fcvenli senkronizasyon<\/strong> stratejileri,<\/li>\n<li>.env ve di\u011fer <strong>ortam de\u011fi\u015fkenlerinin<\/strong> staging\u2019e \u00f6zel, g\u00fcvenli \u015fekilde y\u00f6netimi,<\/li>\n<li>Git tabanl\u0131 <strong>CI\/CD hatlar\u0131yla<\/strong> staging ortam\u0131na otomatik deploy ve iste\u011fe ba\u011fl\u0131 canl\u0131ya ge\u00e7i\u015f (blue-green benzeri yakla\u015f\u0131mlar dahil).<\/li>\n<\/ul>\n<p>Hedefimiz, DCHost \u00fczerinde kulland\u0131\u011f\u0131n\u0131z <a href=\"https:\/\/www.dchost.com\/tr\/vps\">VPS<\/a>, dedicated veya colocation altyap\u0131n\u0131zda <strong>tekrarlanabilir, dok\u00fcmante ve otomasyona uygun<\/strong> bir staging mimarisi kurabilmeniz.<\/p>\n<h2><span id=\"Staging_Ortaminin_Temel_Mimarisi_Laravel_ve_Nodejs_Acisindan_Farklar\">Staging Ortam\u0131n\u0131n Temel Mimarisi: Laravel ve Node.js A\u00e7\u0131s\u0131ndan Farklar<\/span><\/h2>\n<p>\u00d6nce mimariyi netle\u015ftirelim. Staging ortam\u0131, canl\u0131ya m\u00fcmk\u00fcn oldu\u011funca benzeyen ama risk alabilece\u011finiz, ayn\u0131 zamanda <strong>SEO, g\u00fcvenlik ve veri gizlili\u011fi<\/strong> a\u00e7\u0131s\u0131ndan izole tutulmu\u015f bir ortamd\u0131r.<\/p>\n<h3><span id=\"Tek_Sunucu_mu_Ayri_VPS_mi\">Tek Sunucu mu Ayr\u0131 VPS mi?<\/span><\/h3>\n<p>DCHost\u2019ta pratikte \u00fc\u00e7 ana yakla\u015f\u0131m g\u00f6r\u00fcyoruz:<\/p>\n<ul>\n<li><strong>Ayn\u0131 VPS\/Dedicated \u00fczerinde ayr\u0131 vhost + ayr\u0131 veritaban\u0131:<\/strong> K\u00fc\u00e7\u00fck\u2013orta \u00f6l\u00e7ekli projelerde s\u0131k kullan\u0131l\u0131r. Maliyet d\u00fc\u015f\u00fck, y\u00f6netim kolayd\u0131r; ama kaynak payla\u015f\u0131m\u0131 ve g\u00fcvenlik taraf\u0131nda daha dikkatli olman\u0131z gerekir.<\/li>\n<li><strong>Ayr\u0131, k\u00fc\u00e7\u00fck bir staging VPS\u2019i:<\/strong> Canl\u0131 \u00fcretim VPS\u2019iniz g\u00fc\u00e7l\u00fc, staging ise daha d\u00fc\u015f\u00fck kaynakl\u0131 olabilir. \u0130zolasyon ve g\u00fcvenlik a\u00e7\u0131s\u0131ndan daha temizdir, \u00f6zellikle Laravel queue, Node.js worker, WebSocket gibi ek bile\u015fenler varsa tavsiye edilir.<\/li>\n<li><strong>Kurumsal yap\u0131lar i\u00e7in ayr\u0131lm\u0131\u015f staging cluster\u2019lar\u0131:<\/strong> \u00c7oklu mikroservis, ayr\u0131 veritaban\u0131 sunucusu, cache cluster\u2019\u0131 olan yap\u0131larda staging de ayn\u0131 \u015fekilde katmanl\u0131 kurulur. Bu senaryoda genelde dedicated + DCHost colocation gibi karma mimariler devreye girer.<\/li>\n<\/ul>\n<h3><span id=\"Laravel_Staging_Ortaminin_Tipik_Bilesenleri\">Laravel Staging Ortam\u0131n\u0131n Tipik Bile\u015fenleri<\/span><\/h3>\n<p>Laravel i\u00e7in staging ortam\u0131nda genelde \u015fu bile\u015fenler bulunur:<\/p>\n<ul>\n<li>Web sunucusu (Nginx veya Apache),<\/li>\n<li>PHP-FPM havuzu (genellikle production\u2019a yak\u0131n versiyon ve ayarlarla),<\/li>\n<li>MySQL\/MariaDB veya PostgreSQL veritaban\u0131,<\/li>\n<li>Queue ve cache i\u00e7in Redis veya Memcached,<\/li>\n<li>\u0130ste\u011fe ba\u011fl\u0131 olarak Laravel Horizon, Scheduler (cron) ve ek arka plan i\u015fler.<\/li>\n<\/ul>\n<p>Bu bile\u015fenlerin staging\u2019deki ayarlar\u0131n\u0131n production\u2019a <strong>m\u00fcmk\u00fcn oldu\u011funca yak\u0131n<\/strong> olmas\u0131, \u201csadece staging\u2019de \u00e7al\u0131\u015fan ama canl\u0131da patlayan\u201d veya tam tersi durumlar\u0131n \u00f6n\u00fcne ge\u00e7er. Detayl\u0131 PHP-FPM, OPcache ve queue optimizasyonlar\u0131 i\u00e7in <a href=\"https:\/\/www.dchost.com\/blog\/laravel-prod-ortam-optimizasyonu-nasil-yapilir-php%e2%80%91fpm-opcache-octane-queue-horizon-ve-redisi-el-ele-calistirmak\/\">Laravel prod ortam optimizasyonu rehberimizi<\/a> referans alabilirsiniz; staging ile canl\u0131 aras\u0131ndaki farklar\u0131 oradaki ayarlar\u0131 baz alarak minimize etmek iyi bir stratejidir.<\/p>\n<h3><span id=\"Nodejs_Staging_Ortaminin_Tipik_Bilesenleri\">Node.js Staging Ortam\u0131n\u0131n Tipik Bile\u015fenleri<\/span><\/h3>\n<p>Node.js taraf\u0131nda ise tablo biraz farkl\u0131:<\/p>\n<ul>\n<li>Node.js runtime (genellikle LTS s\u00fcr\u00fcm),<\/li>\n<li>Uygulamay\u0131 ayakta tutan PM2 veya systemd servisleri,<\/li>\n<li>\u00d6n tarafta reverse proxy (Nginx),<\/li>\n<li>Veritaban\u0131 (MySQL, PostgreSQL, MongoDB vb.),<\/li>\n<li>Ger\u00e7ek zamanl\u0131 ihtiya\u00e7 varsa WebSocket veya Socket.IO endpoint\u2019leri.<\/li>\n<\/ul>\n<p>Node.js\u2019i staging ve production\u2019da ayn\u0131 kal\u0131pla y\u00f6netmek i\u00e7in, <a href=\"https:\/\/www.dchost.com\/blog\/node-jsi-canliya-alirken-panik-yapma-pm2-systemd-nginx-ssl-ve-sifir-kesinti-deploy-nasil-kurulur\/\">Node.js\u2019i canl\u0131ya al\u0131rken PM2, systemd ve Nginx ile nas\u0131l y\u00f6netmeniz gerekti\u011fini anlatt\u0131\u011f\u0131m\u0131z rehberdeki<\/a> yap\u0131lar\u0131n birebir staging\u2019e uyarlanmas\u0131n\u0131 \u00f6neriyoruz. Versiyon farklar\u0131, farkl\u0131 build komutlar\u0131, farkl\u0131 Nginx kurallar\u0131 staging\/canl\u0131 aras\u0131nda ne kadar az olursa, s\u00fcrpriz o kadar az olur.<\/p>\n<h2><span id=\"Veritabani_Senkronizasyonu_Canli_Veriyi_Staginge_Tasirken_Yapilmasi_ve_Yapilmamasi_Gerekenler\">Veritaban\u0131 Senkronizasyonu: Canl\u0131 Veriyi Staging\u2019e Ta\u015f\u0131rken Yap\u0131lmas\u0131 ve Yap\u0131lmamas\u0131 Gerekenler<\/span><\/h2>\n<p>Laravel ve Node.js projelerinde staging ortam\u0131 kurman\u0131n en kritik k\u0131sm\u0131 veritaban\u0131d\u0131r. \u0130ki u\u00e7 hata \u00e7ok yayg\u0131nd\u0131r:<\/p>\n<ul>\n<li><strong>Staging ve canl\u0131 ayn\u0131 veritaban\u0131n\u0131 kullan\u0131yor:<\/strong> Bu, staging ortam\u0131n\u0131 neredeyse anlams\u0131z hale getirir ve canl\u0131 veriyi riske atar.<\/li>\n<li><strong>Staging veritaban\u0131 haftalarca g\u00fcncellenmiyor:<\/strong> Bu sefer de staging&#8217;de \u00e7al\u0131\u015fan her \u015fey canl\u0131da bamba\u015fka davranabilir, \u00e7\u00fcnk\u00fc veri yap\u0131s\u0131 (schema + data) eskimi\u015ftir.<\/li>\n<\/ul>\n<h3><span id=\"Oncelik_Ayri_Veritabani_ve_Ayri_Kullanici\">\u00d6ncelik: Ayr\u0131 Veritaban\u0131 ve Ayr\u0131 Kullan\u0131c\u0131<\/span><\/h3>\n<p>Her \u015feyden \u00f6nce staging i\u00e7in <strong>ayr\u0131 bir veritaban\u0131<\/strong> ve <strong>ayr\u0131 bir veritaban\u0131 kullan\u0131c\u0131s\u0131<\/strong> tan\u0131mlaman\u0131z gerekir. \u00d6rne\u011fin:<\/p>\n<ul>\n<li>Canl\u0131: <code>project_prod<\/code>, kullan\u0131c\u0131: <code>project_prod_user<\/code><\/li>\n<li>Staging: <code>project_staging<\/code>, kullan\u0131c\u0131: <code>project_staging_user<\/code><\/li>\n<\/ul>\n<p>Bu hem g\u00fcvenlik hem de yanl\u0131\u015fl\u0131kla staging\u2019den canl\u0131 veriyi silmeyi engellemek i\u00e7in temel bir \u00f6nlemdir.<\/p>\n<h3><span id=\"Senaryo_Analizi_Ne_Tur_Senkronizasyona_Ihtiyaciniz_Var\">Senaryo Analizi: Ne T\u00fcr Senkronizasyona \u0130htiyac\u0131n\u0131z Var?<\/span><\/h3>\n<p>Veritaban\u0131 senkronizasyonu i\u00e7in tek bir do\u011fru yok; senaryoya g\u00f6re strateji de\u011fi\u015fir:<\/p>\n<ul>\n<li><strong>Fonksiyonel testler:<\/strong> Yeni \u00f6zelliklerin ger\u00e7ek\u00e7i veride nas\u0131l davrand\u0131\u011f\u0131n\u0131 g\u00f6rmek istiyorsunuz. Burada canl\u0131 verinin <em>anonimle\u015ftirilmi\u015f<\/em> ve zaman zaman staging\u2019e aktar\u0131ld\u0131\u011f\u0131 bir d\u00fczen gerekir.<\/li>\n<li><strong>Y\u0131k\u0131c\u0131 testler (delete, migration, b\u00fcy\u00fck refactor):<\/strong> Veri kayb\u0131 ya\u015fanabilir. Burada staging verisi <strong>tek y\u00f6nl\u00fc<\/strong> olarak canl\u0131dan \u00e7ekilmeli, staging\u2019den canl\u0131ya hi\u00e7bir zaman yaz\u0131lmamal\u0131.<\/li>\n<li><strong>Performans ve \u00f6l\u00e7ek testleri:<\/strong> B\u00fcy\u00fck veri setleriyle, indeks ve sorgu optimizasyonu yapmak i\u00e7in canl\u0131ya m\u00fcmk\u00fcn oldu\u011funca yak\u0131n hacimde veri gerekir.<\/li>\n<\/ul>\n<h3><span id=\"MySQLMariaDB_ve_PostgreSQL_Icin_Temel_Senkronizasyon_Yontemi\">MySQL\/MariaDB ve PostgreSQL \u0130\u00e7in Temel Senkronizasyon Y\u00f6ntemi<\/span><\/h3>\n<p>En yayg\u0131n ve g\u00fcvenli senaryo, canl\u0131dan staging\u2019e periyodik olarak <strong>tam yedek + geri y\u00fckleme<\/strong> yakla\u015f\u0131m\u0131d\u0131r:<\/p>\n<ol>\n<li>Canl\u0131 veritaban\u0131ndan dump al\u0131n:\n<ul>\n<li>MySQL\/MariaDB i\u00e7in: <code>mysqldump --single-transaction project_prod &gt; prod.sql<\/code><\/li>\n<li>PostgreSQL i\u00e7in: <code>pg_dump -Fc -d project_prod -f prod.dump<\/code><\/li>\n<\/ul>\n<\/li>\n<li>Dump dosyas\u0131nda anonimle\u015ftirme\/maskeleme uygulay\u0131n (a\u015fa\u011f\u0131daki ba\u015fl\u0131kta).<\/li>\n<li>Staging veritaban\u0131n\u0131 <strong>drop + recreate<\/strong> veya truncate edip tekrar olu\u015fturun.<\/li>\n<li>Maskelenmi\u015f dump\u2019\u0131 staging veritaban\u0131na geri y\u00fckleyin.<\/li>\n<\/ol>\n<p>MySQL taraf\u0131nda yedek alma\/geri y\u00fckleme i\u00e7in daha geli\u015fmi\u015f se\u00e7enekler ve Point-in-Time Recovery senaryolar\u0131 i\u00e7in <a href=\"https:\/\/www.dchost.com\/blog\/mysql-mariadb-yedekleme-stratejileri-mysqldump-mi-xtrabackup-mi-ve-point%e2%80%91in%e2%80%91time-recovery-ne-zaman\/\">MySQL\/MariaDB yedekleme stratejileri rehberimizden<\/a> strateji se\u00e7ebilirsiniz. Staging senkronizasyonu da asl\u0131nda o yedekleme rutinlerinin kontroll\u00fc bir kullan\u0131m \u015fekli.<\/p>\n<h3><span id=\"Kisisel_Veriler_ve_KVKKGDPR_Maskeleme_Zorunlulugu\">Ki\u015fisel Veriler ve KVKK\/GDPR: Maskeleme Zorunlulu\u011fu<\/span><\/h3>\n<p>Canl\u0131 veriyi staging\u2019e ta\u015f\u0131rken, \u00f6zellikle Avrupa veya T\u00fcrkiye merkezli projelerde KVKK\/GDPR gere\u011fi <strong>ki\u015fisel verileri maskelemek<\/strong> neredeyse zorunlu hale geliyor. \u00d6nerilen yakla\u015f\u0131m:<\/p>\n<ul>\n<li><strong>E-posta adresleri:<\/strong> <code>user123@example.com<\/code> yerine <code>user123+staging@example.test<\/code> gibi dummy adresler \u00fcretin.<\/li>\n<li><strong>Telefon numaralar\u0131:<\/strong> Son birka\u00e7 haneyi sabit veya 0 ile de\u011fi\u015ftirin.<\/li>\n<li><strong>\u0130sim, soyisim:<\/strong> Rastgele ama tutarl\u0131 isimler kullan\u0131n; anonimla\u015ft\u0131rma k\u00fct\u00fcphaneleri i\u015f g\u00f6rebilir.<\/li>\n<li><strong>TC kimlik no, adres vb.:<\/strong> M\u00fcmk\u00fcnse staging\u2019e hi\u00e7 ta\u015f\u0131may\u0131n; gerekiyorsa rastgelele\u015ftirin.<\/li>\n<\/ul>\n<p>Bu maskeleme i\u015flemini SQL scriptleriyle veya ayr\u0131 bir \u201csanitize\u201d arac\u0131yla otomatikle\u015ftirip CI\/CD hatt\u0131na ba\u011flayabilirsiniz. KVKK ve veri yerelle\u015ftirme y\u00fck\u00fcml\u00fcl\u00fcklerini daha b\u00fct\u00fcnsel g\u00f6rmek isterseniz, <a href=\"https:\/\/www.dchost.com\/blog\/kvkk-ve-gdpr-uyumlu-hosting-secimi-turkiye-avrupa-ve-abd-veri-merkezleri-arasinda-veri-yerellestirme-stratejisi\/\">KVKK ve GDPR uyumlu hosting se\u00e7imi rehberimize<\/a> de bakman\u0131z\u0131 \u00f6neririz.<\/p>\n<h3><span id=\"Laravel_Ozelinde_Migration_ve_Seeder_Stratejisi\">Laravel \u00d6zelinde: Migration ve Seeder Stratejisi<\/span><\/h3>\n<p>Laravel\u2019de staging veritaban\u0131n\u0131 y\u00f6netirken \u015fu prensipler \u00e7ok i\u015finizi kolayla\u015ft\u0131r\u0131r:<\/p>\n<ul>\n<li><strong>T\u00fcm \u015fema de\u011fi\u015fiklikleri migration \u00fczerinden gitmeli:<\/strong> Staging\u2019de manuel tablo\/kolon eklemeyin. <code>php artisan migrate<\/code> staging ve canl\u0131da ayn\u0131 sonucu \u00fcretmeli.<\/li>\n<li><strong>Seed\u2019leri ay\u0131r\u0131n:<\/strong> <code>DatabaseSeeder<\/code> i\u00e7inde \u201csadece demo data\u201d \u00fcreten k\u0131sm\u0131 ayr\u0131 bir seeder s\u0131n\u0131f\u0131na ta\u015f\u0131y\u0131n ve staging\u2019de manuel \u00e7a\u011f\u0131r\u0131n. Canl\u0131da sadece zorunlu sistem verilerini seed edin.<\/li>\n<li><strong>.env tabanl\u0131 kontrol:<\/strong> Baz\u0131 seed\u2019lerin sadece <code>APP_ENV=staging<\/code> iken \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayabilirsiniz.<\/li>\n<\/ul>\n<h3><span id=\"Nodejs_Ozelinde_ORM_Migration_Araclarini_Disiplinli_Kullanmak\">Node.js \u00d6zelinde: ORM Migration Ara\u00e7lar\u0131n\u0131 Disiplinli Kullanmak<\/span><\/h3>\n<p>Node.js taraf\u0131nda genellikle Sequelize, TypeORM, Prisma, Knex gibi ORM\/migration ara\u00e7lar\u0131 kullan\u0131l\u0131yor. Burada da ayn\u0131 prensip ge\u00e7erli:<\/p>\n<ul>\n<li>T\u00fcm tablo\/kolon de\u011fi\u015fiklikleri migration dosyalar\u0131 \u00fczerinden ilerlemeli.<\/li>\n<li>Staging ve canl\u0131da <strong>ayn\u0131 migration komutu<\/strong> \u00e7al\u0131\u015fmal\u0131 (\u00f6rne\u011fin <code>npm run migrate<\/code>).<\/li>\n<li>Seed veya fixture datay\u0131, ortam bazl\u0131 ko\u015fullarla sadece staging\u2019de \u00e7al\u0131\u015ft\u0131rmal\u0131s\u0131n\u0131z (\u00f6rne\u011fin <code>NODE_ENV=staging<\/code> kontrol\u00fc).<\/li>\n<\/ul>\n<h2><span id=\"env_Ortam_Degiskenleri_ve_Secret_Yonetimi_Staging_ile_Canliyi_Ayirmanin_Incelikleri\">.env, Ortam De\u011fi\u015fkenleri ve Secret Y\u00f6netimi: Staging ile Canl\u0131y\u0131 Ay\u0131rman\u0131n \u0130ncelikleri<\/span><\/h2>\n<p>Staging ortam\u0131 kurarken en s\u0131k yap\u0131lan hatalardan biri, canl\u0131daki <code>.env<\/code> dosyas\u0131n\u0131 kopyalay\u0131p birka\u00e7 sat\u0131r\u0131n\u0131 de\u011fi\u015ftirmek. Bu yakla\u015f\u0131m k\u0131sa vadede h\u0131zl\u0131 g\u00f6r\u00fcnse de, orta vadede <strong>ger\u00e7ek m\u00fc\u015fterilere staging\u2019den mail atma<\/strong> veya <strong>test \u00f6demesini ger\u00e7ek POS\u2019a d\u00fc\u015f\u00fcrme<\/strong> gibi tats\u0131z senaryolara yol a\u00e7\u0131yor.<\/p>\n<h3><span id=\"env_Kopyalama_Hatalari_En_Riskli_Alanlar\">.env Kopyalama Hatalar\u0131: En Riskli Alanlar<\/span><\/h3>\n<p>Canl\u0131 <code>.env<\/code> dosyas\u0131n\u0131 staging\u2019e kopyalarken \u00f6zellikle \u015fu alanlar\u0131 <strong>asla<\/strong> birebir ta\u015f\u0131may\u0131n:<\/p>\n<ul>\n<li><strong>Mail ayarlar\u0131:<\/strong> SMTP host, kullan\u0131c\u0131 ad\u0131, \u015fifre, g\u00f6nderici adresi. Staging i\u00e7in ayr\u0131 bir test kutusu kullan\u0131n veya mail\u2019i tamamen devre d\u0131\u015f\u0131 b\u0131rak\u0131n.<\/li>\n<li><strong>\u00d6deme altyap\u0131s\u0131:<\/strong> API key, secret, webhook URL\u2019leri. Staging\u2019de mutlaka sandbox\/TEST ortam anahtarlar\u0131n\u0131 kullan\u0131n.<\/li>\n<li><strong>3. parti entegrasyonlar:<\/strong> SMS servisleri, CRM, ERP, muhasebe yaz\u0131l\u0131mlar\u0131, kargo entegrasyonlar\u0131 vb. i\u00e7in staging hesab\u0131 kullan\u0131n.<\/li>\n<li><strong>Log ve hata izleme:<\/strong> Sentry, Rollbar vb. ara\u00e7larda staging\u2019i ayr\u0131 bir proje olarak tan\u0131mlay\u0131n; production ile loglar\u0131 kar\u0131\u015ft\u0131rmay\u0131n.<\/li>\n<\/ul>\n<h3><span id=\"Staging_Icin_Ornek_Laravel_env_Yapisi\">Staging \u0130\u00e7in \u00d6rnek Laravel .env Yap\u0131s\u0131<\/span><\/h3>\n<p>Laravel taraf\u0131nda staging i\u00e7in tipik bir yap\u0131 \u015f\u00f6yle olabilir:<\/p>\n<ul>\n<li><code>APP_ENV=staging<\/code><\/li>\n<li><code>APP_DEBUG=true<\/code> (ama herkese a\u00e7\u0131k hata sayfalar\u0131 yerine, loglamay\u0131 zenginle\u015ftirip kullan\u0131c\u0131ya genel bir hata g\u00f6sterin)<\/li>\n<li><code>APP_URL=https:\/\/staging.example.com<\/code><\/li>\n<li><code>DB_DATABASE=project_staging<\/code><\/li>\n<li><code>MAIL_*<\/code> de\u011fi\u015fkenleri staging\u2019e \u00f6zel test sunucusuna i\u015faret etmeli<\/li>\n<li><code>PAYMENT_*<\/code> de\u011fi\u015fkenleri sandbox ortam\u0131 kullanmal\u0131<\/li>\n<\/ul>\n<p>Debug\u2019u tamamen a\u00e7mak yerine, \u00fcretimdekine benzer ama daha konu\u015fkan bir log seviyesi belirlemek genelde daha sa\u011fl\u0131kl\u0131. B\u00f6ylece staging\u2019de g\u00f6r\u00fclen hata mesajlar\u0131 loglarda detayl\u0131, kullan\u0131c\u0131 taraf\u0131nda ise sade kal\u0131r.<\/p>\n<h3><span id=\"VPS_Uzerinde_Guvenli_Secret_Yonetimi\">VPS \u00dczerinde G\u00fcvenli Secret Y\u00f6netimi<\/span><\/h3>\n<p>.env dosyalar\u0131n\u0131 Git deposuna hi\u00e7 koymamak, staging ve production i\u00e7in ayr\u0131 <code>.env<\/code> dosyalar\u0131n\u0131 sadece sunucuda saklamak art\u0131k end\u00fcstri standard\u0131. VPS taraf\u0131nda gizli anahtarlar\u0131n g\u00fcvenli y\u00f6netimi i\u00e7in:<\/p>\n<ul>\n<li>.env dosyalar\u0131n\u0131 sadece uygulama kullan\u0131c\u0131s\u0131n\u0131n okuyabilece\u011fi izinlerle saklay\u0131n.<\/li>\n<li>CI\/CD hatt\u0131n\u0131zda SSH key ve production secret\u2019lar\u0131n\u0131 <strong>CI gizli de\u011fi\u015fkenleri<\/strong> (secret store) i\u00e7inde tutun.<\/li>\n<li>M\u00fcmk\u00fcnse .env yerine systemd unit veya container ortam de\u011fi\u015fkenleri kullanarak merkezi bir secrets y\u00f6netimi kurun.<\/li>\n<\/ul>\n<p>Bu konuda daha derin ve uygulamal\u0131 bir rehbere ihtiyac\u0131n\u0131z varsa, <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 staging\/canl\u0131 ayr\u0131m\u0131n\u0131 g\u00fcvenli kurman\u0131z i\u00e7in iyi bir referans noktas\u0131d\u0131r.<\/p>\n<h2><span id=\"Laravel_Icin_Adim_Adim_Staging_Ortami_Kurulumu\">Laravel \u0130\u00e7in Ad\u0131m Ad\u0131m Staging Ortam\u0131 Kurulumu<\/span><\/h2>\n<p>\u015eimdi teoriyi prati\u011fe \u00e7evirelim ve tipik bir DCHost VPS \u00fczerinde Laravel staging ortam\u0131n\u0131 ad\u0131m ad\u0131m kural\u0131m.<\/p>\n<h3><span id=\"1_Domain_DNS_ve_SSL_Kurulumu\">1. Domain, DNS ve SSL Kurulumu<\/span><\/h3>\n<ul>\n<li>Staging i\u00e7in genellikle <code>staging.example.com<\/code> gibi bir alt alan ad\u0131 kullan\u0131n.<\/li>\n<li>DNS kayd\u0131n\u0131 staging sunucusuna (veya ayn\u0131 sunucuysa ilgili IP\u2019ye) y\u00f6nlendirin.<\/li>\n<li>Let\u2019s Encrypt veya kurumsal <a href=\"https:\/\/www.dchost.com\/tr\/ssl\">SSL sertifikas\u0131<\/a> ile HTTPS\u2019i staging\u2019de de zorunlu hale getirin.<\/li>\n<li>Staging alan ad\u0131n\u0131 mutlaka <code>noindex<\/code> etiketleriyle ve\/veya parola korumas\u0131yla arama motorlar\u0131ndan izole edin. Bunun i\u00e7in <a href=\"https:\/\/www.dchost.com\/blog\/staging-ve-test-ortamlari-icin-noindex-parola-ve-ip-kisitlama-stratejileri\/\">staging ve test ortamlar\u0131 i\u00e7in noindex, parola ve IP k\u0131s\u0131tlama stratejileri<\/a> rehberimizdeki \u00f6rnekleri uygulayabilirsiniz.<\/li>\n<\/ul>\n<h3><span id=\"2_Ayri_Veritabani_ve_Kullanici_Olusturma\">2. Ayr\u0131 Veritaban\u0131 ve Kullan\u0131c\u0131 Olu\u015fturma<\/span><\/h3>\n<p>MySQL\/MariaDB i\u00e7in basit\u00e7e:<\/p>\n<ul>\n<li>Yeni bir veritaban\u0131 olu\u015fturun: <code>project_staging<\/code><\/li>\n<li>Sadece bu veritaban\u0131na yetkili yeni bir kullan\u0131c\u0131 tan\u0131mlay\u0131n.<\/li>\n<li>Gerekirse IP k\u0131s\u0131tlamalar\u0131yla sadece staging sunucusundan ba\u011flant\u0131ya izin verin.<\/li>\n<\/ul>\n<h3><span id=\"3_Uygulama_Kodunu_Cekmek\">3. Uygulama Kodunu \u00c7ekmek<\/span><\/h3>\n<p>Staging i\u00e7in genellikle <strong>develop<\/strong> veya <strong>staging<\/strong> dal\u0131 kullan\u0131l\u0131r:<\/p>\n<ul>\n<li>Sunucuda uygulama kullan\u0131c\u0131s\u0131na ge\u00e7in.<\/li>\n<li>Git deposunu <code>\/var\/www\/project-staging<\/code> gibi bir dizine klonlay\u0131n.<\/li>\n<li>\u0130lgili dal\u0131 (<code>git checkout staging<\/code> gibi) \u00e7ekin.<\/li>\n<\/ul>\n<h3><span id=\"4_Bagimliliklarin_Kurulumu\">4. Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Kurulumu<\/span><\/h3>\n<p>Production\u2019a yak\u0131n bir staging i\u00e7in:<\/p>\n<ul>\n<li><code>composer install --no-dev --optimize-autoloader<\/code><\/li>\n<li>\u00d6n y\u00fcz derlemesi varsa: <code>npm ci<\/code> ard\u0131ndan <code>npm run build<\/code><\/li>\n<\/ul>\n<p>Burada hedef, staging\u2019de de canl\u0131ya m\u00fcmk\u00fcn oldu\u011funca benzeyen build \u00e7\u0131kt\u0131lar\u0131 \u00fcretmek.<\/p>\n<h3><span id=\"5_envstaging_Olusturma_ve_Laravel_Ayarlari\">5. .env.staging Olu\u015fturma ve Laravel Ayarlar\u0131<\/span><\/h3>\n<p>Canl\u0131 <code>.env<\/code> dosyas\u0131n\u0131 referans al\u0131p, staging i\u00e7in <code>.env.staging<\/code> haz\u0131rlay\u0131n ve staging sunucusunda <code>.env<\/code> ad\u0131yla kaydedin. Ard\u0131ndan:<\/p>\n<ul>\n<li><code>php artisan key:generate<\/code><\/li>\n<li><code>php artisan config:clear<\/code> ve <code>php artisan config:cache<\/code><\/li>\n<li><code>php artisan route:cache<\/code> ve gerekiyorsa <code>php artisan view:cache<\/code><\/li>\n<\/ul>\n<p>Staging\u2019de debug seviyesini daha y\u00fcksek ama kullan\u0131c\u0131ya yans\u0131mayacak \u015fekilde ayarlamak, log analizi i\u00e7in b\u00fcy\u00fck rahatl\u0131k sa\u011flar.<\/p>\n<h3><span id=\"6_Migration_Seeder_ve_Storage_Ayarlari\">6. Migration, Seeder ve Storage Ayarlar\u0131<\/span><\/h3>\n<ul>\n<li><code>php artisan migrate --force<\/code> (CI\/CD \u00fczerinden otomatik tetiklenecek \u015fekilde de kurabilirsiniz).<\/li>\n<li>Gerekiyorsa staging\u2019e \u00f6zel seed\u2019leri manuel \u00e7al\u0131\u015ft\u0131r\u0131n.<\/li>\n<li><code>php artisan storage:link<\/code> ile dosya linklerini olu\u015fturun.<\/li>\n<li>Storage ve cache dizinlerinin izinlerini do\u011fru ayarlay\u0131n.<\/li>\n<\/ul>\n<h3><span id=\"7_Queue_Scheduler_ve_Horizon\">7. Queue, Scheduler ve Horizon<\/span><\/h3>\n<p>Laravel projelerinde staging ortam\u0131nda da queue ve scheduler\u2019\u0131 m\u00fcmk\u00fcn oldu\u011funca production\u2019a benzer \u00e7al\u0131\u015ft\u0131rmak iyi bir pratiktir:<\/p>\n<ul>\n<li>Supervisor veya systemd ile <code>php artisan queue:work<\/code> s\u00fcre\u00e7lerini staging\u2019de de aya\u011fa kald\u0131r\u0131n.<\/li>\n<li>Cron ile <code>php artisan schedule:run<\/code> tetikleyin.<\/li>\n<li>Horizon kullan\u0131yorsan\u0131z, dashboard eri\u015fimini IP veya parola ile s\u0131n\u0131rlay\u0131n.<\/li>\n<\/ul>\n<p>Queue ve Horizon\u2019un VPS kaynak kullan\u0131m\u0131 \u00fczerindeki etkisini anlamak i\u00e7in, <a href=\"https:\/\/www.dchost.com\/blog\/laravel-horizon-ve-queue-isleri-icin-vps-kaynak-planlama\/\">Laravel Horizon ve queue i\u015fleri i\u00e7in VPS kaynak planlama rehberimiz<\/a> staging ve canl\u0131 kaynaklar\u0131n\u0131 hesaplarken elinizi g\u00fc\u00e7lendirecektir.<\/p>\n<h2><span id=\"Nodejs_Icin_Adim_Adim_Staging_Ortami_Kurulumu\">Node.js \u0130\u00e7in Ad\u0131m Ad\u0131m Staging Ortam\u0131 Kurulumu<\/span><\/h2>\n<p>Node.js taraf\u0131nda da benzer mant\u0131\u011f\u0131 takip ediyoruz, fakat runtime ve process y\u00f6netimi farkl\u0131 oldu\u011fu i\u00e7in ad\u0131mlar biraz de\u011fi\u015fiyor.<\/p>\n<h3><span id=\"1_Nodejs_Runtime_ve_Kullanici_Yapisi\">1. Node.js Runtime ve Kullan\u0131c\u0131 Yap\u0131s\u0131<\/span><\/h3>\n<ul>\n<li>Sunucuda LTS s\u00fcr\u00fcm bir Node.js kurun (nvm veya paket y\u00f6neticisiyle).<\/li>\n<li>Uygulama i\u00e7in ayr\u0131 bir sistem kullan\u0131c\u0131s\u0131 (\u00f6rne\u011fin <code>nodeapp<\/code>) olu\u015fturun.<\/li>\n<li>Staging kodlar\u0131n\u0131 bu kullan\u0131c\u0131n\u0131n home veya proje dizininde tutun.<\/li>\n<\/ul>\n<h3><span id=\"2_Kodun_Cekilmesi_ve_Bagimliliklarin_Kurulumu\">2. Kodun \u00c7ekilmesi ve Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Kurulumu<\/span><\/h3>\n<ul>\n<li>Git deposunu <code>\/var\/www\/node-staging<\/code> gibi bir dizine klonlay\u0131n.<\/li>\n<li><code>git checkout staging<\/code> veya ilgili dal\u0131 se\u00e7in.<\/li>\n<li><code>npm ci --only=production<\/code> ile sadece production ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 kurun (staging\u2019i de production\u2019a \u00e7ok yak\u0131n tutmak i\u00e7in).<\/li>\n<\/ul>\n<h3><span id=\"3_envstaging_ve_Konfigurasyon\">3. .env.staging ve Konfig\u00fcrasyon<\/span><\/h3>\n<p>Laravel\u2019de oldu\u011fu gibi, Node.js taraf\u0131nda da staging\u2019e \u00f6zel bir <code>.env<\/code> kullan\u0131n:<\/p>\n<ul>\n<li><code>NODE_ENV=staging<\/code> (baz\u0131 framework\u2019ler sadece <code>production<\/code> ve <code>development<\/code> tan\u0131r; yine de staging i\u00e7in ayr\u0131 env de\u011fi\u015fkenleri ekleyebilirsiniz).<\/li>\n<li>Veritaban\u0131, cache, mail, \u00f6deme ve entegrasyon ayarlar\u0131n\u0131n staging\u2019e \u00f6zel oldu\u011fundan emin olun.<\/li>\n<li>Staging URL\u2019lerini (\u00d6rn. API base URL, frontend URL) net \u015fekilde ay\u0131r\u0131n.<\/li>\n<\/ul>\n<h3><span id=\"4_PM2_veya_systemd_ile_Surec_Yonetimi\">4. PM2 veya systemd ile S\u00fcre\u00e7 Y\u00f6netimi<\/span><\/h3>\n<p>Node.js uygulamas\u0131n\u0131 staging\u2019de aya\u011fa kald\u0131rmak i\u00e7in:<\/p>\n<ul>\n<li>PM2 kullan\u0131yorsan\u0131z <code>ecosystem.config.js<\/code> i\u00e7inde <code>staging<\/code> ortam\u0131 tan\u0131m\u0131 yap\u0131n.<\/li>\n<li>systemd kullan\u0131yorsan\u0131z, ayr\u0131 bir service dosyas\u0131yla (\u00f6rne\u011fin <code>nodeapp-staging.service<\/code>) staging portunu ve \u00e7al\u0131\u015fma dizinini belirtin.<\/li>\n<li>Loglar\u0131 staging i\u00e7in ayr\u0131 bir dizinde veya ayr\u0131 bir log index\u2019inde tutun.<\/li>\n<\/ul>\n<p>PM2\/systemd, Nginx ve s\u0131f\u0131r kesinti deploy mimarisi i\u00e7in ad\u0131m ad\u0131m \u00f6rnek kurulum istiyorsan\u0131z, <a href=\"https:\/\/www.dchost.com\/blog\/node-jsi-canliya-alirken-panik-yapma-pm2-systemd-nginx-ssl-ve-sifir-kesinti-deploy-nasil-kurulur\/\">Node.js\u2019i canl\u0131ya al\u0131rken panik yapma rehberimizde<\/a> anlat\u0131lan \u00fcretim kal\u0131b\u0131n\u0131 staging\u2019e birebir uygulayabilirsiniz.<\/p>\n<h3><span id=\"5_Nginx_Reverse_Proxy_ve_SSL\">5. Nginx Reverse Proxy ve SSL<\/span><\/h3>\n<p>Laravel\u2019de oldu\u011fu gibi, Node.js staging ortam\u0131nda da:<\/p>\n<ul>\n<li>Nginx\u2019te <code>staging.example.com<\/code> i\u00e7in ayr\u0131 bir server blo\u011fu olu\u015fturun.<\/li>\n<li>Upstream olarak Node.js uygulaman\u0131z\u0131n portunu i\u015faret edin.<\/li>\n<li>Let\u2019s Encrypt sertifikas\u0131 ve <code>HTTPS &gt; HTTP<\/code> y\u00f6nlendirmelerini staging i\u00e7in de kurun.<\/li>\n<li>Gerekirse HTTP basic auth veya IP k\u0131s\u0131tlamas\u0131yla staging\u2019i d\u0131\u015f d\u00fcnyaya kapat\u0131n.<\/li>\n<\/ul>\n<h2><span id=\"CICD_ile_Laravel_ve_Nodejs_Staging_Ortamini_Otomatiklestirmek\">CI\/CD ile Laravel ve Node.js Staging Ortam\u0131n\u0131 Otomatikle\u015ftirmek<\/span><\/h2>\n<p>Staging ortam\u0131n\u0131 bir kere kurmak yeterli de\u011fil; as\u0131l de\u011fer, <strong>her commit\u2019te veya belirli dallara push etti\u011finizde otomatik g\u00fcncellenmesi<\/strong> ile ortaya \u00e7\u0131k\u0131yor. Burada devreye CI\/CD hatlar\u0131 giriyor.<\/p>\n<h3><span id=\"Branch_Stratejisi_ve_Deploy_Tetikleyicileri\">Branch Stratejisi ve Deploy Tetikleyicileri<\/span><\/h3>\n<p>Laravel ve Node.js projelerinde s\u0131k g\u00f6rd\u00fc\u011f\u00fcm\u00fcz basit ama etkili ak\u0131\u015f \u015f\u00f6yle:<\/p>\n<ul>\n<li><strong>feature\/* dallar\u0131:<\/strong> Geli\u015ftiriciye \u00f6zel; PR a\u00e7\u0131l\u0131nca CI testleri \u00e7al\u0131\u015f\u0131r.<\/li>\n<li><strong>develop veya staging dal\u0131:<\/strong> Bu dala merge edildi\u011finde staging ortam\u0131na otomatik deploy.<\/li>\n<li><strong>main\/master:<\/strong> Tag veya belirli ko\u015fullarda production\u2019a deploy.<\/li>\n<\/ul>\n<p>B\u00f6ylece staging ortam\u0131, canl\u0131ya \u00e7\u0131kmadan \u00f6nce t\u00fcm feature\u2019lar\u0131n topland\u0131\u011f\u0131 ve <strong>m\u00fc\u015fteri\/\u00fcr\u00fcn ekibi taraf\u0131ndan da test edildi\u011fi<\/strong> bir ara durak haline gelir.<\/p>\n<h3><span id=\"Pipeline_Asamalari_Build_Test_Deploy\">Pipeline A\u015famalar\u0131: Build, Test, Deploy<\/span><\/h3>\n<p>Basitle\u015ftirilmi\u015f bir CI pipeline\u2019\u0131 \u015fu ad\u0131mlardan olu\u015fabilir:<\/p>\n<ol>\n<li><strong>Build:<\/strong>\n<ul>\n<li>Laravel i\u00e7in: <code>composer install<\/code>, <code>npm ci<\/code>, <code>npm run build<\/code><\/li>\n<li>Node.js i\u00e7in: <code>npm ci<\/code>, <code>npm test<\/code> (varsa), <code>npm run build<\/code><\/li>\n<\/ul>\n<\/li>\n<li><strong>Test:<\/strong>\n<ul>\n<li>Unit test, integration test, lint i\u015flemleri.<\/li>\n<li>Ba\u015far\u0131s\u0131z olursa deploy a\u015famas\u0131 hi\u00e7 \u00e7al\u0131\u015fmaz.<\/li>\n<\/ul>\n<\/li>\n<li><strong>Deploy:<\/strong>\n<ul>\n<li>SSH ile staging sunucusuna ba\u011flanma,<\/li>\n<li>Kodu <code>git pull<\/code> veya <code>rsync<\/code> ile g\u00fcncelleme,<\/li>\n<li>Migration, cache, build komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rma,<\/li>\n<li>Laravel i\u00e7in queue worker\u2019lar\u0131, Node.js i\u00e7in PM2\/systemd s\u00fcre\u00e7lerini reload\/restart etme.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p>Bu mant\u0131\u011f\u0131 Git tabanl\u0131 t\u00fcm CI sistemlerinde kurabilirsiniz. \u00d6zellikle GitHub kullan\u0131yorsan\u0131z, <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 zero\u2011downtime yay\u0131n rehberimizde<\/a> \u00f6rnek workflow dosyalar\u0131 ve rsync + sembolik s\u00fcr\u00fcm stratejilerini detayl\u0131 anlatt\u0131k. Oradaki \u00f6rnekleri Laravel ve Node.js staging ortam\u0131n\u0131za direkt uyarlayabilirsiniz.<\/p>\n<h3><span id=\"Zero-Downtime_ve_Blue-Green_Yaklasimlari\">Zero-Downtime ve Blue-Green Yakla\u015f\u0131mlar\u0131<\/span><\/h3>\n<p>Staging ortam\u0131nda bile s\u0131f\u0131r kesinti hedeflemek, canl\u0131ya ge\u00e7i\u015f mimarisini de \u00e7ok kolayla\u015ft\u0131r\u0131r. \u00d6rne\u011fin:<\/p>\n<ul>\n<li><strong>Blue-Green:<\/strong> Ayn\u0131 sunucuda iki farkl\u0131 dizinde (blue\/green) uygulamay\u0131 tutup, Nginx\u2019teki symlink\u2019i de\u011fi\u015ftirerek h\u0131zl\u0131 switch yapmak.<\/li>\n<li><strong>Canary:<\/strong> Trafi\u011fin k\u00fc\u00e7\u00fck bir y\u00fczdesini yeni s\u00fcr\u00fcme y\u00f6nlendirmek, sorun yoksa yava\u015f yava\u015f art\u0131rmak.<\/li>\n<\/ul>\n<p>Laravel taraf\u0131nda bu yakla\u015f\u0131mlar\u0131n canl\u0131 WooCommerce ve Laravel projelerinde nas\u0131l kullan\u0131ld\u0131\u011f\u0131n\u0131 g\u00f6rmek isterseniz, <a href=\"https:\/\/www.dchost.com\/blog\/blue-green-deployment-ile-woocommerce-ve-laravel-uygulamalarini-sifir-kesintiyle-guncellemek\/\">blue-green deployment ile Laravel uygulamalar\u0131n\u0131 s\u0131f\u0131r kesintiyle g\u00fcncelleme rehberimizde<\/a> uygulamal\u0131 \u00f6rnekler bulabilirsiniz. Ayn\u0131 prensipleri Node.js taraf\u0131nda da birebir uygulamak m\u00fcmk\u00fcn.<\/p>\n<h2><span id=\"Staging_Ortaminda_Guvenlik_Performans_ve_SEO_Detaylari\">Staging Ortam\u0131nda G\u00fcvenlik, Performans ve SEO Detaylar\u0131<\/span><\/h2>\n<p>Staging ortam\u0131 \u00e7o\u011fu zaman \u201cnas\u0131l olsa test sistemi\u201d diye biraz sal\u0131nan bir alan oluyor; fakat yanl\u0131\u015f yap\u0131land\u0131r\u0131lm\u0131\u015f bir staging, hem g\u00fcvenlik hem SEO hem de performans taraf\u0131nda ba\u015f\u0131n\u0131z\u0131 a\u011fr\u0131tabilir.<\/p>\n<h3><span id=\"Guvenlik_Staging_de_Uretim_Kadar_Ciddi_Olmali\">G\u00fcvenlik: Staging de \u00dcretim Kadar Ciddi Olmal\u0131<\/span><\/h3>\n<ul>\n<li>Staging alan ad\u0131n\u0131 mutlaka <strong>parola<\/strong> veya <strong>IP k\u0131s\u0131tlamas\u0131<\/strong> ile koruyun.<\/li>\n<li>Admin panel ve API endpoint\u2019lerinde canl\u0131daki WAF\/Rate limiting kurallar\u0131n\u0131n benzerini kullan\u0131n.<\/li>\n<li>Veritaban\u0131 eri\u015fimlerini IP veya private network ile s\u0131n\u0131rlay\u0131n.<\/li>\n<li>Hassas verileri staging\u2019e <strong>maskelemeden<\/strong> ta\u015f\u0131may\u0131n.<\/li>\n<\/ul>\n<h3><span id=\"SEO_Stagingin_Arama_Motorlarina_Sizmasini_Engellemek\">SEO: Staging\u2019in Arama Motorlar\u0131na S\u0131zmas\u0131n\u0131 Engellemek<\/span><\/h3>\n<ul>\n<li><code>&lt;meta name=\"robots\" content=\"noindex, nofollow\" \/&gt;<\/code> kullan\u0131n.<\/li>\n<li>robots.txt i\u00e7inde staging alan ad\u0131n\u0131 engelleyin.<\/li>\n<li>Sitemap \u00fcretimini staging\u2019de devre d\u0131\u015f\u0131 b\u0131rak\u0131n veya ayr\u0131 bir path\u2019e al\u0131n.<\/li>\n<li>Staging URL\u2019lerinin production URL\u2019lerine canonical vermemesine dikkat edin.<\/li>\n<\/ul>\n<p>Bu konuyu daha operasyonel seviyede g\u00f6rmek i\u00e7in, tekrar <a href=\"https:\/\/www.dchost.com\/blog\/staging-ve-test-ortamlari-icin-noindex-parola-ve-ip-kisitlama-stratejileri\/\">staging ve test ortamlar\u0131 i\u00e7in noindex ve parola koruma yaz\u0131m\u0131zdaki<\/a> .htaccess\/Nginx \u00f6rneklerine bakabilirsiniz.<\/p>\n<h3><span id=\"Performans_Nasil_Olsa_Test_Demeyin\">Performans: \u201cNas\u0131l Olsa Test\u201d Demeyin<\/span><\/h3>\n<p>Staging ortam\u0131 canl\u0131 kadar g\u00fc\u00e7l\u00fc olmak zorunda de\u011fil, ama performans karakteristi\u011fi benzer olmal\u0131:<\/p>\n<ul>\n<li>PHP-FPM, Node.js worker, veritaban\u0131 ve cache i\u00e7in <strong>benzer s\u00fcr\u00fcm ve benzer konfig<\/strong> kullan\u0131n.<\/li>\n<li>Y\u00fck testlerini staging\u2019de yaparken CPU, RAM, I\/O ve veritaban\u0131 metriklerini canl\u0131dakiyle k\u0131yaslay\u0131n.<\/li>\n<li>CDN, cache ve HTTP\/2\/3 gibi optimizasyonlar\u0131 staging\u2019de de aktif tutun; canl\u0131ya ge\u00e7erken s\u00fcrpriz ya\u015famay\u0131n.<\/li>\n<\/ul>\n<h2><span id=\"DCHost_Uzerinde_Ornek_Staging_Mimarileri\">DCHost \u00dczerinde \u00d6rnek Staging Mimarileri<\/span><\/h2>\n<p>DCHost altyap\u0131s\u0131nda Laravel ve Node.js projeleri i\u00e7in s\u0131k kulland\u0131\u011f\u0131m\u0131z iki temel staging senaryosunu \u00f6zetleyelim.<\/p>\n<h3><span id=\"Senaryo_1_Tek_VPSte_Canli_Staging_KucukOrta_Projeler\">Senaryo 1: Tek VPS\u2019te Canl\u0131 + Staging (K\u00fc\u00e7\u00fck\/Orta Projeler)<\/span><\/h3>\n<ul>\n<li>1 adet NVMe VPS (\u00f6rne\u011fin 2\u20134 vCPU, 4\u20138 GB RAM)<\/li>\n<li>\u0130ki ayr\u0131 vhost: <code>example.com<\/code> (canl\u0131) ve <code>staging.example.com<\/code><\/li>\n<li>\u0130ki ayr\u0131 veritaban\u0131 ve kullan\u0131c\u0131.<\/li>\n<li>Laravel ve\/veya Node.js i\u00e7in ayr\u0131 process\/pool tan\u0131mlar\u0131.<\/li>\n<li>CDN ve e-posta gibi entegrasyonlar canl\u0131\/staging olarak ayr\u0131 anahtarlarla y\u00f6netilir.<\/li>\n<\/ul>\n<p>Maliyet avantajl\u0131d\u0131r ve tek sunucu y\u00f6netimi isteyen ekipler i\u00e7in idealdir. Kaynak planlamas\u0131 yaparken canl\u0131 trafi\u011fin tepe noktalar\u0131n\u0131 ve staging\u2019de yap\u0131lacak y\u00fck testlerini birlikte hesaplamak gerekir.<\/p>\n<h3><span id=\"Senaryo_2_Ayri_VPSte_Staging_Buyuyen_ve_Kritik_Projeler\">Senaryo 2: Ayr\u0131 VPS\u2019te Staging (B\u00fcy\u00fcyen ve Kritik Projeler)<\/span><\/h3>\n<ul>\n<li>1 adet production VPS veya <a href=\"https:\/\/www.dchost.com\/tr\/fiziksel-sunucu\">dedicated sunucu<\/a>,<\/li>\n<li>1 adet daha k\u00fc\u00e7\u00fck kaynakl\u0131 staging VPS,<\/li>\n<li>Veritaban\u0131 ya her VPS\u2019te ayr\u0131, ya da payla\u015f\u0131lan ama ayr\u0131 instance olarak kurulmu\u015f olabilir.<\/li>\n<li>CI\/CD hatt\u0131 staging ve production i\u00e7in ayr\u0131 deploy job\u2019lar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r.<\/li>\n<\/ul>\n<p>Bu mimari, \u00f6zellikle e-ticaret, SaaS veya y\u00fcksek trafikli Node.js API\u2019lerinde <strong>canl\u0131 kayna\u011f\u0131n\u0131 staging testlerinden tamamen yal\u0131tmak<\/strong> i\u00e7in idealdir. Trafik patlamalar\u0131, kampanya d\u00f6nemleri veya b\u00fcy\u00fck schema de\u011fi\u015fiklikleri \u00f6ncesinde staging\u2019e ekstra kaynak ge\u00e7ici olarak tan\u0131mlay\u0131p test yapmak da \u00e7ok kolayla\u015f\u0131r.<\/p>\n<h2><span id=\"Ozet_ve_Sonraki_Adimlar\">\u00d6zet ve Sonraki Ad\u0131mlar<\/span><\/h2>\n<p>Laravel ve Node.js projelerinde staging ortam\u0131 kurmak, ilk bak\u0131\u015fta \u201cekstra i\u015f\u201d gibi g\u00f6r\u00fcnse de, do\u011fru kurguland\u0131\u011f\u0131nda asl\u0131nda canl\u0131 ortam\u0131 sakinle\u015ftiren ve geli\u015ftirici ekibin \u00f6zg\u00fcvenini art\u0131ran bir g\u00fcvenlik katman\u0131 haline geliyor. Ayr\u0131 veritaban\u0131, tutarl\u0131 migration\/seed stratejisi, dikkatle haz\u0131rlanm\u0131\u015f <code>.env<\/code> dosyalar\u0131 ve otomatik \u00e7al\u0131\u015fan CI\/CD hatlar\u0131 sayesinde \u201ccanl\u0131ya \u00e7\u0131karken tedirgin olmak\u201d yerini, <strong>\u00f6l\u00e7\u00fclebilir ve tekrarlanabilir<\/strong> bir s\u00fcre\u00e7 deneyimine b\u0131rak\u0131yor.<\/p>\n<p>DCHost olarak amac\u0131m\u0131z, Laravel ve Node.js projelerinizi sadece bar\u0131nd\u0131rmak de\u011fil; <strong>geli\u015ftirme\u2013staging\u2013canl\u0131<\/strong> hatt\u0131n\u0131z\u0131 birlikte tasarlayarak operasyonel y\u00fck\u00fcn\u00fcz\u00fc azaltmak. Staging ortam\u0131n\u0131z\u0131 kurarken:<\/p>\n<ul>\n<li>\u00d6nce mimariyi ve veri senkronizasyon stratejinizi k\u00e2\u011f\u0131t \u00fczerinde netle\u015ftirin.<\/li>\n<li>Sonra .env ve secret y\u00f6netimini g\u00fcvenli hale getirin.<\/li>\n<li>Son olarak da Git tabanl\u0131 CI\/CD hatt\u0131yla staging ve production deploy\u2019lar\u0131n\u0131 otomatikle\u015ftirin.<\/li>\n<\/ul>\n<p>E\u011fer mevcut Laravel veya Node.js projeniz i\u00e7in DCHost \u00fczerinde staging ortam\u0131 kurgulamak istiyorsan\u0131z, altyap\u0131n\u0131z\u0131 ve kod taban\u0131n\u0131z\u0131 birlikte inceleyerek size \u00f6zel bir yol haritas\u0131 \u00e7\u0131karabiliriz. \u0130sterseniz \u00f6nce yukar\u0131da link verdi\u011fimiz rehberleri okuyup kendi tasla\u011f\u0131n\u0131z\u0131 olu\u015fturun, ard\u0131ndan destek ekibimizle beraber bunu DCHost VPS, dedicated veya colocation altyap\u0131n\u0131z \u00fczerinde ad\u0131m ad\u0131m hayata ge\u00e7irelim.<\/p>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>\u0130&ccedil;indekiler1 Laravel ve Node.js Projelerinde Neden Staging Ortam\u0131 \u015eart Hale Geldi?2 Staging Ortam\u0131n\u0131n Temel Mimarisi: Laravel ve Node.js A\u00e7\u0131s\u0131ndan Farklar2.1 Tek Sunucu mu Ayr\u0131 VPS mi?2.2 Laravel Staging Ortam\u0131n\u0131n Tipik Bile\u015fenleri2.3 Node.js Staging Ortam\u0131n\u0131n Tipik Bile\u015fenleri3 Veritaban\u0131 Senkronizasyonu: Canl\u0131 Veriyi Staging\u2019e Ta\u015f\u0131rken Yap\u0131lmas\u0131 ve Yap\u0131lmamas\u0131 Gerekenler3.1 \u00d6ncelik: Ayr\u0131 Veritaban\u0131 ve Ayr\u0131 Kullan\u0131c\u01313.2 Senaryo Analizi: Ne [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":4723,"comment_status":"","ping_status":"","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26],"tags":[],"class_list":["post-4722","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\/4722","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=4722"}],"version-history":[{"count":0,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/posts\/4722\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media\/4723"}],"wp:attachment":[{"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/media?parent=4722"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/categories?post=4722"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dchost.com\/blog\/wp-json\/wp\/v2\/tags?post=4722"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}