{"id":37082,"date":"2025-12-27T05:40:51","date_gmt":"2025-12-27T02:40:51","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=37082"},"modified":"2025-12-27T05:40:51","modified_gmt":"2025-12-27T02:40:51","slug":"drusha-baslangic-kilavuzu-drupal-kabugu","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/","title":{"rendered":"Drush&#8217;a Ba\u015flang\u0131\u00e7 K\u0131lavuzu: Drupal Kabu\u011fu"},"content":{"rendered":"<p><body><\/p>\n<h2>Drush&#8217;a Ba\u015flang\u0131\u00e7 K\u0131lavuzu: Drupal Kabu\u011fu<\/h2>\n<p>Drupal, web siteleri ve uygulamalar\u0131 olu\u015fturmak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir i\u00e7erik y\u00f6netim sistemidir (CMS). Ancak, Drupal&#8217;\u0131n tam potansiyelini kullanmak ve geli\u015ftirme s\u00fcre\u00e7lerini h\u0131zland\u0131rmak i\u00e7in sadece web aray\u00fcz\u00fc yeterli olmayabilir. \u0130\u015fte bu noktada Drush devreye girer. Drush, &#8220;Drupal Shell&#8221; kelimelerinin k\u0131saltmas\u0131 olup, Drupal i\u00e7in bir komut sat\u0131r\u0131 aray\u00fcz\u00fcd\u00fcr (CLI). Bu k\u0131lavuz, Drush&#8217;\u0131n ne oldu\u011funu, neden bu kadar \u00f6nemli oldu\u011funu ve Drupal projelerinizde nas\u0131l kullanmaya ba\u015flayaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m a\u00e7\u0131klamaktad\u0131r.<\/p>\n<h2>Giri\u015f: Drush Nedir ve Neden \u00d6nemlidir?<\/h2>\n<p>Drush, Drupal web sitelerini komut sat\u0131r\u0131ndan y\u00f6netmek, geli\u015ftirmek ve bak\u0131m\u0131n\u0131 yapmak i\u00e7in kullan\u0131lan g\u00fc\u00e7l\u00fc, esnek ve a\u00e7\u0131k kaynakl\u0131 bir ara\u00e7t\u0131r. Bir Drupal geli\u015ftiricisi, site kurucusu veya sistem y\u00f6neticisiyseniz, Drush i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde h\u0131zland\u0131racak ve bir\u00e7ok manuel g\u00f6revi otomatikle\u015ftirmenize olanak tan\u0131yacakt\u0131r.<\/p>\n<p>Peki, Drush&#8217;\u0131 bu kadar \u00f6nemli k\u0131lan nedir?<\/p>\n<p>*   <strong>H\u0131z ve Verimlilik:<\/strong> Web aray\u00fcz\u00fcnde birka\u00e7 t\u0131klamayla yapaca\u011f\u0131n\u0131z i\u015flemleri Drush ile tek bir komutla \u00e7ok daha h\u0131zl\u0131 ger\u00e7ekle\u015ftirebilirsiniz. \u00d6rne\u011fin, \u00f6nbelle\u011fi temizlemek, mod\u00fclleri etkinle\u015ftirmek veya devre d\u0131\u015f\u0131 b\u0131rakmak, veritaban\u0131 g\u00fcncellemelerini \u00e7al\u0131\u015ft\u0131rmak saniyeler s\u00fcrer.<br \/>\n*   <strong>Otomasyon:<\/strong> Tekrarlayan g\u00f6revleri otomatikle\u015ftirmek i\u00e7in Drush komutlar\u0131n\u0131 betiklere (script) dahil edebilirsiniz. Bu, s\u00fcrekli entegrasyon\/s\u00fcrekli da\u011f\u0131t\u0131m (CI\/CD) s\u00fcre\u00e7lerinde veya d\u00fczenli bak\u0131m g\u00f6revlerinde hayati \u00f6nem ta\u015f\u0131r.<br \/>\n*   <strong>Uzaktan Y\u00f6netim:<\/strong> Drush, SSH \u00fczerinden uzak Drupal siteleriyle etkile\u015fim kurman\u0131za olanak tan\u0131r. Bu, birden fazla sunucuda veya farkl\u0131 ortamlar (geli\u015ftirme, test, \u00fcretim) aras\u0131nda \u00e7al\u0131\u015f\u0131rken b\u00fcy\u00fck bir avantaj sa\u011flar.<br \/>\n*   <strong>Geli\u015ftirme Ara\u00e7lar\u0131:<\/strong> Drush, mod\u00fcl ve tema geli\u015ftiricileri i\u00e7in de paha bi\u00e7ilmez ara\u00e7lar sunar. \u00d6rne\u011fin, yeni bir mod\u00fcl veya kontrolc\u00fc iskeleti olu\u015fturabilir, veritaban\u0131 tablolar\u0131n\u0131 inceleyebilir veya tek kullan\u0131ml\u0131k bir giri\u015f ba\u011flant\u0131s\u0131 olu\u015fturarak h\u0131zl\u0131ca y\u00f6netici paneline eri\u015febilirsiniz.<br \/>\n*   <strong>Tutarl\u0131l\u0131k:<\/strong> Komut sat\u0131r\u0131 \u00fczerinden yap\u0131lan i\u015flemler, web aray\u00fcz\u00fcne g\u00f6re daha tutarl\u0131 ve tekrarlanabilir sonu\u00e7lar verir. Bu, \u00f6zellikle ekip i\u00e7inde \u00e7al\u0131\u015f\u0131rken veya birden fazla ortam\u0131 y\u00f6netirken \u00f6nemlidir.<\/p>\n<p>K\u0131sacas\u0131, Drush, bir Drupal projesinin ya\u015fam d\u00f6ng\u00fcs\u00fcn\u00fcn her a\u015famas\u0131nda size zaman kazand\u0131racak ve \u00fcretkenli\u011finizi art\u0131racak bir &#8220;\u0130svi\u00e7re \u00c7ak\u0131s\u0131&#8221; gibidir.<\/p>\n<h2>Drush Kurulumu: Ad\u0131m Ad\u0131m Rehber<\/h2>\n<p>Drush&#8217;\u0131 kullanmaya ba\u015flamadan \u00f6nce, sisteminizde belirli \u00f6nko\u015fullar\u0131n kurulu oldu\u011fundan emin olmal\u0131s\u0131n\u0131z. Modern Drupal projeleri genellikle Composer ile y\u00f6netildi\u011finden, Drush&#8217;\u0131 da Composer arac\u0131l\u0131\u011f\u0131yla kurmak en yayg\u0131n ve \u00f6nerilen y\u00f6ntemdir.<\/p>\n<h3>\u00d6nko\u015fullar<\/h3>\n<p>Drush&#8217;\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in a\u015fa\u011f\u0131daki bile\u015fenlere ihtiyac\u0131n\u0131z olacakt\u0131r:<\/p>\n<p>*   <strong>PHP:<\/strong> Drupal&#8217;\u0131n kendisi gibi Drush da PHP ile yaz\u0131lm\u0131\u015ft\u0131r. Drupal s\u00fcr\u00fcm\u00fcn\u00fcze uygun bir PHP s\u00fcr\u00fcm\u00fcn\u00fcn (\u00f6rne\u011fin, Drupal 9\/10 i\u00e7in PHP 8.1 veya \u00fczeri) kurulu ve komut sat\u0131r\u0131ndan eri\u015filebilir oldu\u011fundan emin olun.<br \/>\n    *   Gerekli PHP uzant\u0131lar\u0131: <code>json<\/code>, <code>dom<\/code>, <code>gd<\/code>, <code>mbstring<\/code>, <code>zip<\/code>, <code>xml<\/code>, <code>pdo_mysql<\/code> (veya kulland\u0131\u011f\u0131n\u0131z veritaban\u0131 i\u00e7in ilgili PDO uzant\u0131s\u0131).<br \/>\n*   <strong>Composer:<\/strong> PHP ba\u011f\u0131ml\u0131l\u0131k y\u00f6neticisi Composer, Drush&#8217;\u0131 kurmak ve y\u00f6netmek i\u00e7in temel ara\u00e7t\u0131r. Composer&#8217;\u0131n global olarak kurulu oldu\u011fundan emin olun. Kurulum talimatlar\u0131 i\u00e7in getcomposer.org adresini ziyaret edebilirsiniz.<br \/>\n*   <strong>Git (\u0130ste\u011fe Ba\u011fl\u0131 ama \u00d6nerilir):<\/strong> Projelerinizin s\u00fcr\u00fcm kontrol\u00fc i\u00e7in Git kullanmak, Drush kurulumunuzu ve projenizi daha iyi y\u00f6netmenizi sa\u011flar.<\/p>\n<h3>Composer ile Kurulum (\u00d6nerilen Y\u00f6ntem)<\/h3>\n<p>Modern Drupal projeleri i\u00e7in Drush&#8217;\u0131 proje baz\u0131nda (project-local) kurmak en iyi y\u00f6ntemdir. Bu, her projenin kendi Drush s\u00fcr\u00fcm\u00fcn\u00fc kullanmas\u0131n\u0131 sa\u011flar ve potansiyel s\u00fcr\u00fcm \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nler.<\/p>\n<h4>Proje Baz\u0131nda Kurulum<\/h4>\n<p>1.  <strong>Drupal Projenizin K\u00f6k Dizinine Gidin:<\/strong><\/p>\n<pre><code class=\"language-bash\">cd \/path\/to\/your\/drupal\/project<\/code><\/pre>\n<p>2.  <strong>Drush&#8217;\u0131 Composer ile Kurun:<\/strong><\/p>\n<pre><code class=\"language-bash\">composer require drush\/drush<\/code><\/pre>\n<p>    Bu komut, Drush&#8217;\u0131 projenizin <code>vendor\/drush\/drush<\/code> dizinine indirir ve y\u00fcr\u00fct\u00fclebilir dosyas\u0131n\u0131 <code>vendor\/bin\/drush<\/code> alt\u0131na yerle\u015ftirir.<\/p>\n<p>3.  <strong>Drush&#8217;\u0131 \u00c7al\u0131\u015ft\u0131r\u0131n:<\/strong> Proje baz\u0131nda kurulan Drush&#8217;\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in her zaman tam yolu belirtmeniz gerekir:<\/p>\n<pre><code class=\"language-bash\">vendor\/bin\/drush status<\/code><\/pre>\n<p>    Bu komut, Drupal sitenizin ve Drush kurulumunuzun durumunu g\u00f6sterir.<\/p>\n<h4>Global Kurulum (Alternatif, Daha Az \u00d6nerilir)<\/h4>\n<p>Eski projelerle \u00e7al\u0131\u015f\u0131yorsan\u0131z veya Drush&#8217;\u0131 t\u00fcm sisteminizde global olarak eri\u015filebilir k\u0131lmak istiyorsan\u0131z, global kurulum yapabilirsiniz. Ancak bu, farkl\u0131 Drupal projelerinin farkl\u0131 Drush s\u00fcr\u00fcmleri gerektirmesi durumunda sorunlara yol a\u00e7abilir.<\/p>\n<p>1.  <strong>Drush&#8217;\u0131 Global Olarak Kurun:<\/strong><\/p>\n<pre><code class=\"language-bash\">composer global require drush\/drush<\/code><\/pre>\n<p>2.  <strong>PATH Ortam De\u011fi\u015fkenine Ekleyin:<\/strong> Composer&#8217;\u0131n global bin dizinini (genellikle <code>~\/.composer\/vendor\/bin<\/code> veya <code>~\/.config\/composer\/vendor\/bin<\/code>) sisteminizin PATH ortam de\u011fi\u015fkenine eklemeniz gerekir. Bunun i\u00e7in <code>~\/.bashrc<\/code>, <code>~\/.zshrc<\/code> veya <code>~\/.profile<\/code> dosyan\u0131za a\u015fa\u011f\u0131daki sat\u0131r\u0131 ekleyebilirsiniz:<\/p>\n<pre><code class=\"language-bash\">export PATH=\"$PATH:$HOME\/.composer\/vendor\/bin\"<\/code><\/pre>\n<p>    De\u011fi\u015fiklikleri uygulamak i\u00e7in terminalinizi yeniden ba\u015flat\u0131n veya <code>source ~\/.bashrc<\/code> (veya ilgili dosyan\u0131z) komutunu \u00e7al\u0131\u015ft\u0131r\u0131n.<\/p>\n<p>3.  <strong>Drush&#8217;\u0131 \u00c7al\u0131\u015ft\u0131r\u0131n:<\/strong> Art\u0131k <code>drush<\/code> komutunu do\u011frudan kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">drush status<\/code><\/pre>\n<h3>Kurulumu Do\u011frulama<\/h3>\n<p>Drush&#8217;\u0131n do\u011fru \u015fekilde kurulup kurulmad\u0131\u011f\u0131n\u0131 kontrol etmek i\u00e7in a\u015fa\u011f\u0131daki komutlar\u0131 kullan\u0131n:<\/p>\n<p>*   <strong>S\u00fcr\u00fcm Kontrol\u00fc:<\/strong><\/p>\n<pre><code class=\"language-bash\">drush --version<\/code><\/pre>\n<p>    veya proje baz\u0131nda kuruluysa:<\/p>\n<pre><code class=\"language-bash\">vendor\/bin\/drush --version<\/code><\/pre>\n<p>    Bu, kurulu Drush s\u00fcr\u00fcm\u00fcn\u00fc g\u00f6stermelidir.<\/p>\n<p>*   <strong>Durum Kontrol\u00fc:<\/strong><\/p>\n<pre><code class=\"language-bash\">drush status<\/code><\/pre>\n<p>    veya proje baz\u0131nda kuruluysa:<\/p>\n<pre><code class=\"language-bash\">vendor\/bin\/drush status<\/code><\/pre>\n<p>    Bu komut, Drupal s\u00fcr\u00fcm\u00fc, Drush s\u00fcr\u00fcm\u00fc, veritaban\u0131 ba\u011flant\u0131s\u0131 ve di\u011fer \u00f6nemli sistem bilgilerini i\u00e7eren ayr\u0131nt\u0131l\u0131 bir rapor sunar. E\u011fer bu komutlar ba\u015far\u0131l\u0131 bir \u015fekilde \u00e7al\u0131\u015f\u0131rsa, Drush&#8217;\u0131n\u0131z kullan\u0131ma haz\u0131r demektir!<\/p>\n<h2>Drush Temelleri: \u0130lk Komutlar\u0131n\u0131z<\/h2>\n<p>Drush&#8217;\u0131n temel komut yap\u0131s\u0131n\u0131 ve en s\u0131k kullan\u0131lan komutlar\u0131 \u00f6\u011frenmek, Drupal geli\u015ftirme ve y\u00f6netim s\u00fcre\u00e7lerinizde size b\u00fcy\u00fck kolayl\u0131klar sa\u011flayacakt\u0131r.<\/p>\n<h3>Drush Komut Yap\u0131s\u0131<\/h3>\n<p>Drush komutlar\u0131 genellikle a\u015fa\u011f\u0131daki yap\u0131ya sahiptir:<\/p>\n<pre><code class=\"language-bash\">drush [komut] [arg\u00fcmanlar] [se\u00e7enekler]<\/code><\/pre>\n<p>*   <strong><code>drush<\/code><\/strong>: Drush y\u00fcr\u00fct\u00fclebilir dosyas\u0131. Proje baz\u0131nda kullan\u0131yorsan\u0131z <code>vendor\/bin\/drush<\/code> \u015feklinde olacakt\u0131r.<br \/>\n*   <strong><code>[komut]<\/code><\/strong>: \u00c7al\u0131\u015ft\u0131rmak istedi\u011finiz Drush komutu (\u00f6rne\u011fin, <code>cr<\/code>, <code>en<\/code>, <code>updb<\/code>). Drush 9 ve sonras\u0131 i\u00e7in komutlar genellikle <code>namespace:command<\/code> format\u0131ndad\u0131r (\u00f6rne\u011fin, <code>cache:rebuild<\/code>, <code>pm:enable<\/code>). Ancak bir\u00e7ok eski komutun k\u0131sa versiyonlar\u0131 hala \u00e7al\u0131\u015fmaktad\u0131r.<br \/>\n*   <strong><code>[arg\u00fcmanlar]<\/code><\/strong>: Komutun ihtiya\u00e7 duydu\u011fu de\u011ferler (\u00f6rne\u011fin, bir mod\u00fcl\u00fcn ad\u0131).<br \/>\n*   <strong><code>[se\u00e7enekler]<\/code><\/strong>: Komutun davran\u0131\u015f\u0131n\u0131 de\u011fi\u015ftiren veya ek bilgi sa\u011flayan iste\u011fe ba\u011fl\u0131 parametreler (\u00f6rne\u011fin, <code>--yes<\/code> veya <code>--uri<\/code>).<\/p>\n<h3>Yard\u0131m Alma<\/h3>\n<p>Herhangi bir Drush komutu hakk\u0131nda bilgi almak i\u00e7in <code>help<\/code> komutunu kullanabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">drush help\ndrush help [komut_ad\u0131]<\/code><\/pre>\n<p>\u00d6rne\u011fin, <code>drush help cr<\/code> komutu <code>cache:rebuild<\/code> komutu hakk\u0131nda ayr\u0131nt\u0131l\u0131 bilgi verecektir.<\/p>\n<h3>S\u0131k Kullan\u0131lan Temel Drush Komutlar\u0131<\/h3>\n<p>\u0130\u015fte yeni ba\u015flayanlar i\u00e7in en faydal\u0131 Drush komutlar\u0131ndan baz\u0131lar\u0131:<\/p>\n<h3><code>drush status<\/code> (sts)<\/h3>\n<p>Drupal sitenizin ve Drush kurulumunuzun genel durumunu g\u00f6sterir. Drupal s\u00fcr\u00fcm\u00fc, veritaban\u0131 ad\u0131, Drush k\u00f6k dizini gibi bilgileri i\u00e7erir.<\/p>\n<pre><code class=\"language-bash\">drush status<\/code><\/pre>\n<h3><code>drush cache:rebuild<\/code> (cr)<\/h3>\n<p>Drupal&#8217;\u0131n \u00f6nbelle\u011fini temizler ve yeniden olu\u015fturur. Bu, \u00f6zellikle mod\u00fcl y\u00fckledikten, tema de\u011fi\u015ftirdikten veya yap\u0131land\u0131rma dosyalar\u0131nda de\u011fi\u015fiklik yapt\u0131ktan sonra s\u0131k\u00e7a kullan\u0131lan bir komuttur.<\/p>\n<pre><code class=\"language-bash\">drush cr<\/code><\/pre>\n<h3><code>drush update:database<\/code> (updb)<\/h3>\n<p>Mod\u00fcl g\u00fcncellemelerinden veya yeni mod\u00fcl kurulumlar\u0131ndan sonra veritaban\u0131 g\u00fcncellemelerini \u00e7al\u0131\u015ft\u0131r\u0131r. <code>update.php<\/code> dosyas\u0131n\u0131 taray\u0131c\u0131dan \u00e7al\u0131\u015ft\u0131rmakla e\u015fde\u011ferdir.<\/p>\n<pre><code class=\"language-bash\">drush updb<\/code><\/pre>\n<p>Genellikle <code>--yes<\/code> (<code>-y<\/code>) se\u00e7ene\u011fi ile birlikte kullan\u0131l\u0131r, bu da t\u00fcm onay sorular\u0131n\u0131 otomatik olarak &#8220;evet&#8221; yan\u0131t\u0131yla ge\u00e7menizi sa\u011flar:<\/p>\n<pre><code class=\"language-bash\">drush updb -y<\/code><\/pre>\n<h3><code>drush pm:enable<\/code> (en) \/ <code>drush pm:disable<\/code> (dis)<\/h3>\n<p>Mod\u00fclleri etkinle\u015ftirir veya devre d\u0131\u015f\u0131 b\u0131rak\u0131r. Birden fazla mod\u00fcl\u00fc ayn\u0131 anda etkinle\u015ftirebilirsiniz.<\/p>\n<pre><code class=\"language-bash\">drush en [mod\u00fcl_ad\u0131]\ndrush en node taxonomy user -y # Node, Taxonomy ve User mod\u00fcllerini etkinle\u015ftirir\ndrush dis views_ui # Views UI mod\u00fcl\u00fcn\u00fc devre d\u0131\u015f\u0131 b\u0131rak\u0131r<\/code><\/pre>\n<h3><code>drush pm:list<\/code> (pml)<\/h3>\n<p>Sitenizde y\u00fckl\u00fc t\u00fcm mod\u00fcl ve temalar\u0131n bir listesini g\u00f6sterir. Filtreleme se\u00e7enekleri de mevcuttur.<\/p>\n<pre><code class=\"language-bash\">drush pml # T\u00fcm mod\u00fcl ve temalar\u0131 listeler\ndrush pml --status=enabled # Yaln\u0131zca etkin mod\u00fclleri listeler\ndrush pml --type=module --status=disabled # Devre d\u0131\u015f\u0131 mod\u00fclleri listeler<\/code><\/pre>\n<h3><code>drush user:login<\/code> (uli)<\/h3>\n<p>Y\u00f6netici kullan\u0131c\u0131 i\u00e7in tek kullan\u0131ml\u0131k bir giri\u015f ba\u011flant\u0131s\u0131 olu\u015fturur. Bu, \u015fifrenizi unuttu\u011funuzda veya h\u0131zl\u0131ca y\u00f6netici paneline eri\u015fmeniz gerekti\u011finde \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">drush uli<\/code><\/pre>\n<p>Belirli bir kullan\u0131c\u0131 i\u00e7in ba\u011flant\u0131 olu\u015fturmak isterseniz:<\/p>\n<pre><code class=\"language-bash\">drush uli --name=admin<\/code><\/pre>\n<h3><code>drush site:install<\/code> (si)<\/h3>\n<p>Yeni bir Drupal sitesi kurar. Bu komut, Drupal&#8217;\u0131 s\u0131f\u0131rdan kurmak i\u00e7in kullan\u0131l\u0131r ve kurulum profilini, veritaban\u0131 bilgilerini ve site ayarlar\u0131n\u0131 belirtmenize olanak tan\u0131r.<\/p>\n<pre><code class=\"language-bash\">drush si standard --db-url=mysql:\/\/user:pass@host\/db_name --site-name=\"My Drush Site\" --site-mail=admin@example.com --account-name=admin --account-pass=password -y<\/code><\/pre>\n<p>Bu komut olduk\u00e7a g\u00fc\u00e7l\u00fcd\u00fcr ve otomasyon betiklerinde s\u0131k\u00e7a kullan\u0131l\u0131r.<\/p>\n<h3><code>drush config:export<\/code> (cex) \/ <code>drush config:import<\/code> (cim)<\/h3>\n<p>Drupal 8 ve sonras\u0131 i\u00e7in yap\u0131land\u0131rma y\u00f6netimi (Configuration Management) hayati \u00f6nem ta\u015f\u0131r. Bu komutlar, site yap\u0131land\u0131rmas\u0131n\u0131 dosya sistemine aktarmak (export) veya dosya sisteminden i\u00e7e aktarmak (import) i\u00e7in kullan\u0131l\u0131r.<\/p>\n<pre><code class=\"language-bash\">drush cex # Yap\u0131land\u0131rmay\u0131 sites\/default\/files\/config_HASH dizinine aktar\u0131r\ndrush cim # Yap\u0131land\u0131rmay\u0131 dosya sisteminden i\u00e7e aktar\u0131r<\/code><\/pre>\n<p>Bu komutlar, geli\u015ftirme, test ve \u00fcretim ortamlar\u0131 aras\u0131nda yap\u0131land\u0131rma de\u011fi\u015fikliklerini senkronize etmek i\u00e7in vazge\u00e7ilmezdir.<\/p>\n<h3><code>drush sql:dump<\/code><\/h3>\n<p>Drupal veritaban\u0131n\u0131z\u0131n bir yede\u011fini olu\u015fturur. Bu, \u00f6zellikle b\u00fcy\u00fck bir de\u011fi\u015fiklik yapmadan \u00f6nce veya d\u00fczenli yedekleme i\u015flemleri i\u00e7in \u00f6nemlidir.<\/p>\n<pre><code class=\"language-bash\">drush sql:dump > backup.sql<\/code><\/pre>\n<p>Bu, veritaban\u0131n\u0131 <code>backup.sql<\/code> adl\u0131 bir dosyaya d\u00f6ker.<\/p>\n<h3><code>drush sql:cli<\/code><\/h3>\n<p>Veritaban\u0131na do\u011frudan komut sat\u0131r\u0131 aray\u00fcz\u00fcnden eri\u015fmenizi sa\u011flar. Bu, h\u0131zl\u0131 SQL sorgular\u0131 \u00e7al\u0131\u015ft\u0131rmak veya veritaban\u0131 i\u00e7eri\u011fini incelemek i\u00e7in faydal\u0131d\u0131r.<\/p>\n<pre><code class=\"language-bash\">drush sql:cli<\/code><\/pre>\n<p>Bu komut sizi do\u011frudan MySQL\/MariaDB veya PostgreSQL istemcisine ba\u011flar.<\/p>\n<p>Bu temel komutlar, Drush ile etkile\u015fim kurman\u0131z i\u00e7in sa\u011flam bir ba\u015flang\u0131\u00e7 noktas\u0131 sa\u011flar. Her bir komutun daha fazla se\u00e7ene\u011fi ve yetene\u011fi oldu\u011funu unutmay\u0131n; bunlar\u0131 <code>drush help [komut_ad\u0131]<\/code> ile ke\u015ffedebilirsiniz.<\/p>\n<h2>Drush&#8217;\u0131 Daha Verimli Kullanmak: Geli\u015fmi\u015f \u00d6zellikler ve \u0130pu\u00e7lar\u0131<\/h2>\n<p>Drush&#8217;\u0131n temel komutlar\u0131na hakim olduktan sonra, i\u015f ak\u0131\u015f\u0131n\u0131z\u0131 daha da optimize etmek i\u00e7in baz\u0131 geli\u015fmi\u015f \u00f6zelliklerini ve ipu\u00e7lar\u0131n\u0131 \u00f6\u011frenmek isteyebilirsiniz.<\/p>\n<h3>Takma Adlar (Aliases)<\/h3>\n<p>Drush takma adlar\u0131, uzun komutlar\u0131 k\u0131saltman\u0131za, farkl\u0131 Drupal siteleri aras\u0131nda kolayca ge\u00e7i\u015f yapman\u0131za ve hatta uzak sunuculardaki sitelerle etkile\u015fim kurman\u0131za olanak tan\u0131yan g\u00fc\u00e7l\u00fc bir \u00f6zelliktir.<\/p>\n<h4>Takma Ad Nedir?<\/h4>\n<p>Bir takma ad, bir Drupal sitesini tan\u0131mlayan bir dizi yap\u0131land\u0131rma ayar\u0131d\u0131r. Bu ayarlar genellikle sitenin k\u00f6k dizini (root), URL&#8217;si (uri) ve SSH ba\u011flant\u0131 bilgileri gibi detaylar\u0131 i\u00e7erir.<\/p>\n<h4>Takma Ad Olu\u015fturma<\/h4>\n<p>Takma adlar genellikle YAML dosyalar\u0131nda (<code>.yml<\/code>) tan\u0131mlan\u0131r. Bu dosyalar\u0131 Drush&#8217;\u0131n \u00e7e\u015fitli yerlerde arad\u0131\u011f\u0131 konumlara yerle\u015ftirebilirsiniz:<br \/>\n*   <strong>Proje Baz\u0131nda:<\/strong> <code><DRUPAL_ROOT>\/drush\/sites<\/code> dizini (\u00f6nerilen).<br \/>\n*   <strong>Kullan\u0131c\u0131 Baz\u0131nda:<\/strong> <code>~\/.drush\/sites<\/code> dizini.<br \/>\n*   <strong>Sistem Baz\u0131nda:<\/strong> <code>\/etc\/drush\/sites<\/code> dizini.<\/p>\n<p>\u00d6rnek bir takma ad dosyas\u0131 (<code>drush\/sites\/myproject.site.yml<\/code>):<\/p>\n<pre><code class=\"language-yaml\">local:\n  host: localhost\n  uri: http:\/\/myproject.ddev.site\n  root: \/var\/www\/html\n  paths:\n    drush-script: \/var\/www\/html\/vendor\/bin\/drush\n  ssh:\n    options: '-o StrictHostKeyChecking=no -o PasswordAuthentication=no'\n\ndev:\n  host: dev.example.com\n  user: ssh_user\n  root: \/var\/www\/dev.example.com\/web\n  uri: http:\/\/dev.example.com\n  ssh:\n    options: '-p 2222' # \u00d6zel bir SSH portu varsa<\/code><\/pre>\n<p>Bu \u00f6rnekte <code>local<\/code> ve <code>dev<\/code> ad\u0131nda iki takma ad tan\u0131mlanm\u0131\u015ft\u0131r. <code>local<\/code> genellikle yerel geli\u015ftirme ortam\u0131n\u0131z i\u00e7indir, <code>dev<\/code> ise bir uzak geli\u015ftirme sunucusu i\u00e7indir.<\/p>\n<h4>Takma Adlar\u0131 Kullanma<\/h4>\n<p>Takma adlar\u0131 kullanmak i\u00e7in komutlar\u0131n\u0131z\u0131n ba\u015f\u0131na <code>@<\/code> sembol\u00fc ile takma ad\u0131n ad\u0131n\u0131 eklersiniz:<\/p>\n<pre><code class=\"language-bash\">drush @local status # Yerel sitenin durumunu g\u00f6sterir\ndrush @dev cr # Uzak geli\u015ftirme sunucusundaki sitenin \u00f6nbelle\u011fini temizler\ndrush @dev updb -y # Uzak geli\u015ftirme sunucusundaki sitenin veritaban\u0131n\u0131 g\u00fcnceller<\/code><\/pre>\n<h3>Uzaktan Drush (Remote Drush)<\/h3>\n<p>Takma adlar sayesinde, Drush&#8217;\u0131 SSH \u00fczerinden uzak sunuculardaki Drupal siteleriyle etkile\u015fim kurmak i\u00e7in kullanabilirsiniz. Bu, sunucunuza SSH ile ba\u011flan\u0131p ard\u0131ndan Drush komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131rmak yerine, do\u011frudan yerel makinenizden uzak siteler \u00fczerinde Drush komutlar\u0131 \u00e7al\u0131\u015ft\u0131rman\u0131za olanak tan\u0131r.<\/p>\n<p>*   <strong>\u00d6nko\u015ful:<\/strong> Uzak sunucuda SSH eri\u015fiminiz olmal\u0131 ve Drush&#8217;\u0131n uzak sunucuda kurulu olmas\u0131 gerekmektedir. Ayr\u0131ca, genellikle anahtar tabanl\u0131 kimlik do\u011frulama kullan\u0131lmas\u0131 \u00f6nerilir.<br \/>\n*   <strong>Kullan\u0131m:<\/strong> Yukar\u0131daki takma ad \u00f6rne\u011finde oldu\u011fu gibi, <code>host<\/code>, <code>user<\/code> ve <code>root<\/code> gibi bilgileri i\u00e7eren bir takma ad tan\u0131mlad\u0131ktan sonra, <code>@dev cr<\/code> gibi komutlarla uzak site \u00fczerinde i\u015flem yapabilirsiniz.<\/p>\n<h3>Drush ve Mod\u00fcl\/Tema Geli\u015ftirme<\/h3>\n<p>Drush, mod\u00fcl ve tema geli\u015ftiricileri i\u00e7in de hayat\u0131 kolayla\u015ft\u0131ran ara\u00e7lar sunar.<\/p>\n<h4><code>drush generate<\/code><\/h4>\n<p>Bu komut, yeni bir mod\u00fcl, tema, kontrolc\u00fc, form veya di\u011fer Drupal bile\u015fenlerinin iskeletini olu\u015fturarak geli\u015ftirme s\u00fcrecini h\u0131zland\u0131r\u0131r.<\/p>\n<pre><code class=\"language-bash\">drush generate module # Yeni bir mod\u00fcl olu\u015fturmak i\u00e7in sihirbaz\u0131 ba\u015flat\u0131r\ndrush generate controller # Yeni bir kontrolc\u00fc olu\u015fturur<\/code><\/pre>\n<p>Bu, manuel olarak dosya ve dizin olu\u015fturma zahmetinden kurtar\u0131r.<\/p>\n<h3>Drush ve Yap\u0131land\u0131rma Y\u00f6netimi (Config Management)<\/h3>\n<p>Drupal 8 ve sonras\u0131 i\u00e7in yap\u0131land\u0131rma y\u00f6netimi, Drush ile birle\u015fti\u011finde inan\u0131lmaz derecede g\u00fc\u00e7l\u00fcd\u00fcr.<\/p>\n<p>*   <strong><code>drush config:export<\/code> (cex):<\/strong> Mevcut site yap\u0131land\u0131rmas\u0131n\u0131 dosya sistemine aktar\u0131r. Bu dosyalar Git ile s\u00fcr\u00fcm kontrol\u00fcne al\u0131n\u0131r.<br \/>\n*   <strong><code>drush config:import<\/code> (cim):<\/strong> Dosya sistemindeki yap\u0131land\u0131rma de\u011fi\u015fikliklerini veritaban\u0131na uygular.<br \/>\n*   <strong><code>drush config:diff<\/code>:<\/strong> Mevcut veritaban\u0131 yap\u0131land\u0131rmas\u0131 ile dosya sistemindeki yap\u0131land\u0131rma aras\u0131ndaki farklar\u0131 g\u00f6sterir. Bu, <code>drush cim<\/code> \u00e7al\u0131\u015ft\u0131rmadan \u00f6nce nelerin de\u011fi\u015fece\u011fini g\u00f6rmenizi sa\u011flar.<br \/>\n*   <strong><code>drush config:set<\/code> \/ <code>drush config:get<\/code>:<\/strong> Belirli bir yap\u0131land\u0131rma de\u011ferini komut sat\u0131r\u0131ndan ayarlamak veya almak i\u00e7in kullan\u0131l\u0131r.<\/p>\n<p>Bu komutlar, geli\u015ftirme, test ve canl\u0131 ortamlar aras\u0131nda yap\u0131land\u0131rmay\u0131 senkronize etmek i\u00e7in CI\/CD i\u015f ak\u0131\u015flar\u0131n\u0131n temelini olu\u015fturur.<\/p>\n<h3>Toplu \u0130\u015flemler ve Betikler<\/h3>\n<p>Drush komutlar\u0131n\u0131 bir araya getirerek daha karma\u015f\u0131k g\u00f6revleri otomatikle\u015ftirebilirsiniz. \u00d6rne\u011fin, bir da\u011f\u0131t\u0131m beti\u011fi (deployment script) a\u015fa\u011f\u0131daki ad\u0131mlar\u0131 i\u00e7erebilir:<\/p>\n<pre><code class=\"language-bash\">#!\/bin\/bash\n\n<h2>Proje dizinine git<\/h2>\ncd \/var\/www\/html\n\n<h2>En son kod de\u011fi\u015fikliklerini \u00e7ek<\/h2>\ngit pull\n\n<h2>Composer ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 g\u00fcncelle<\/h2>\ncomposer install\n\n<h2>Veritaban\u0131 g\u00fcncellemelerini \u00e7al\u0131\u015ft\u0131r<\/h2>\nvendor\/bin\/drush updb -y\n\n<h2>Yap\u0131land\u0131rmay\u0131 i\u00e7e aktar<\/h2>\nvendor\/bin\/drush cim -y\n\n<h2>\u00d6nbelle\u011fi temizle<\/h2>\nvendor\/bin\/drush cr<\/code><\/pre>\n<p>Bu t\u00fcr bir betik, canl\u0131 bir siteyi tek bir komutla g\u00fcncellemeyi m\u00fcmk\u00fcn k\u0131lar.<\/p>\n<h3>Hata Ay\u0131klama ve Detayl\u0131 \u00c7\u0131kt\u0131<\/h3>\n<p>Drush komutlar\u0131 \u00e7al\u0131\u015f\u0131rken daha fazla bilgi almak veya sorunlar\u0131 ay\u0131klamak i\u00e7in a\u015fa\u011f\u0131daki se\u00e7enekleri kullanabilirsiniz:<\/p>\n<p>*   <strong><code>--verbose<\/code> (<code>-v<\/code>):<\/strong> Daha ayr\u0131nt\u0131l\u0131 \u00e7\u0131kt\u0131 sa\u011flar.<br \/>\n*   <strong><code>--debug<\/code>:<\/strong> En detayl\u0131 \u00e7\u0131kt\u0131y\u0131 verir, Drush&#8217;\u0131n dahili s\u00fcre\u00e7lerini g\u00f6sterir.<br \/>\n*   <strong><code>--simulate<\/code> (<code>-s<\/code>):<\/strong> Baz\u0131 komutlar i\u00e7in (\u00f6rne\u011fin <code>config:import<\/code>), komutun asl\u0131nda ne yapaca\u011f\u0131n\u0131 g\u00f6sterir ancak de\u011fi\u015fiklikleri uygulamaz.<\/p>\n<pre><code class=\"language-bash\">drush cr -v\ndrush cim --debug<\/code><\/pre>\n<p>Bu geli\u015fmi\u015f \u00f6zellikler, Drush&#8217;\u0131 sadece temel g\u00f6revler i\u00e7in de\u011fil, ayn\u0131 zamanda karma\u015f\u0131k geli\u015ftirme ve y\u00f6netim senaryolar\u0131 i\u00e7in de g\u00fc\u00e7l\u00fc bir ara\u00e7 haline getirir.<\/p>\n<h2>S\u0131k Kar\u015f\u0131la\u015f\u0131lan Sorunlar ve \u00c7\u00f6z\u00fcmleri<\/h2>\n<p>Drush kullan\u0131rken kar\u015f\u0131la\u015fabilece\u011finiz baz\u0131 yayg\u0131n sorunlar ve bunlar\u0131n nas\u0131l \u00e7\u00f6z\u00fclece\u011fi a\u015fa\u011f\u0131da listelenmi\u015ftir:<\/p>\n<h3><code>drush command not found<\/code><\/h3>\n<p>Bu hata genellikle Drush&#8217;\u0131n y\u00fcr\u00fct\u00fclebilir dosyas\u0131n\u0131n sisteminizin PATH ortam de\u011fi\u015fkeninde olmamas\u0131ndan veya yanl\u0131\u015f kurulmas\u0131ndan kaynaklan\u0131r.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   E\u011fer proje baz\u0131nda kurduysan\u0131z, <code>vendor\/bin\/drush<\/code> yolunu kulland\u0131\u011f\u0131n\u0131zdan emin olun.<br \/>\n    *   E\u011fer global olarak kurduysan\u0131z, Composer&#8217;\u0131n global bin dizininin (<code>~\/.composer\/vendor\/bin<\/code> veya <code>~\/.config\/composer\/vendor\/bin<\/code>) PATH&#8217;inize eklendi\u011finden ve terminalinizi yeniden ba\u015flatt\u0131\u011f\u0131n\u0131zdan emin olun.<br \/>\n    *   Drush&#8217;\u0131n ger\u00e7ekten Composer taraf\u0131ndan kuruldu\u011funu kontrol edin (<code>ls ~\/.composer\/vendor\/bin\/drush<\/code>).<\/p>\n<h3>PHP S\u00fcr\u00fcm\u00fc Uyumsuzlu\u011fu<\/h3>\n<p>Drush&#8217;\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 PHP s\u00fcr\u00fcm\u00fc ile Drupal projenizin bekledi\u011fi PHP s\u00fcr\u00fcm\u00fc farkl\u0131 olabilir.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   Terminalinizde <code>php -v<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak varsay\u0131lan PHP s\u00fcr\u00fcm\u00fcn\u00fcz\u00fc kontrol edin.<br \/>\n    *   E\u011fer farkl\u0131 bir PHP s\u00fcr\u00fcm\u00fc kullanman\u0131z gerekiyorsa, bunu Drush&#8217;a <code>--php=\/path\/to\/php<\/code> se\u00e7ene\u011fi ile belirtebilirsiniz. \u00d6rne\u011fin:<\/p>\n<pre><code class=\"language-bash\">drush --php=\/usr\/bin\/php8.2 status<\/code><\/pre>\n<p>    *   Baz\u0131 yerel geli\u015ftirme ortamlar\u0131 (Docker, Lando, DDEV) kendi PHP s\u00fcr\u00fcmlerini y\u00f6netir ve Drush&#8217;\u0131 bu ortamlar i\u00e7inde \u00e7al\u0131\u015ft\u0131rman\u0131z gerekir.<\/p>\n<h3>Bellek Limiti Sorunlar\u0131<\/h3>\n<p>\u00d6zellikle b\u00fcy\u00fck veritaban\u0131 i\u015flemleri veya \u00f6nbellek temizleme gibi yo\u011fun komutlar \u00e7al\u0131\u015ft\u0131r\u0131rken &#8220;Allowed memory size of X bytes exhausted&#8221; hatas\u0131 alabilirsiniz.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   PHP&#8217;nin komut sat\u0131r\u0131 i\u00e7in bellek limitini art\u0131r\u0131n. Bunu <code>php.ini<\/code> dosyan\u0131zda <code>memory_limit<\/code> ayar\u0131n\u0131 de\u011fi\u015ftirerek yapabilirsiniz.<br \/>\n    *   Drush komutunu \u00e7al\u0131\u015ft\u0131r\u0131rken ge\u00e7ici olarak bellek limitini art\u0131rabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">drush --php-options='-d memory_limit=512M' cr<\/code><\/pre>\n<h3>Veritaban\u0131 Ba\u011flant\u0131 Hatalar\u0131<\/h3>\n<p><code>SQLSTATE[HY000] [1045] Access denied for user...<\/code> veya benzeri hatalar, Drush&#8217;\u0131n Drupal veritaban\u0131na ba\u011flanamad\u0131\u011f\u0131n\u0131 g\u00f6sterir.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   <code>sites\/default\/settings.php<\/code> dosyas\u0131ndaki veritaban\u0131 kimlik bilgilerini (kullan\u0131c\u0131 ad\u0131, \u015fifre, veritaban\u0131 ad\u0131, host) kontrol edin.<br \/>\n    *   Veritaban\u0131 sunucusunun \u00e7al\u0131\u015ft\u0131\u011f\u0131ndan ve do\u011fru port \u00fczerinden eri\u015filebilir oldu\u011fundan emin olun.<br \/>\n    *   Kullan\u0131c\u0131n\u0131n belirtilen veritaban\u0131na eri\u015fim izinlerinin oldu\u011fundan emin olun.<\/p>\n<h3>Dosya\/Dizin \u0130zinleri Sorunlar\u0131<\/h3>\n<p>Drush&#8217;\u0131n dosya sistemi \u00fczerinde yazma veya okuma izni olmad\u0131\u011f\u0131nda hatalar meydana gelebilir. \u00d6zellikle <code>sites\/default\/files<\/code> dizini i\u00e7in bu s\u0131k\u00e7a g\u00f6r\u00fcl\u00fcr.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   <code>sites\/default\/files<\/code> dizininin web sunucusu kullan\u0131c\u0131s\u0131 (genellikle <code>www-data<\/code> veya <code>nginx<\/code>) taraf\u0131ndan yaz\u0131labilir oldu\u011fundan emin olun.<br \/>\n    *   Gerekirse izinleri ayarlay\u0131n:<\/p>\n<pre><code class=\"language-bash\">sudo chown -R www-data:www-data \/path\/to\/your\/drupal\/project\/web\/sites\/default\/files\n        sudo chmod -R 0775 \/path\/to\/your\/drupal\/project\/web\/sites\/default\/files<\/code><\/pre>\n<p>    *   <code>settings.php<\/code> dosyas\u0131n\u0131n da do\u011fru izinlere sahip oldu\u011fundan emin olun (genellikle <code>644<\/code> veya <code>444<\/code>).<\/p>\n<h3>Composer Ba\u011f\u0131ml\u0131l\u0131k \u00c7ak\u0131\u015fmalar\u0131<\/h3>\n<p>Yeni bir mod\u00fcl kurarken veya g\u00fcncellerken Composer ba\u011f\u0131ml\u0131l\u0131k \u00e7ak\u0131\u015fmalar\u0131 ya\u015fayabilirsiniz.<br \/>\n*   <strong>\u00c7\u00f6z\u00fcm:<\/strong><br \/>\n    *   <code>composer update<\/code> veya <code>composer require<\/code> komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131rken <code>--with-dependencies<\/code> veya <code>--with-all-dependencies<\/code> se\u00e7eneklerini kullanmay\u0131 deneyin.<br \/>\n    *   <code>composer why-not [paket_ad\u0131]<\/code> komutu ile \u00e7ak\u0131\u015fmaya neden olan ba\u011f\u0131ml\u0131l\u0131klar\u0131 belirleyin.<br \/>\n    *   <code>composer clear-cache<\/code> ile Composer \u00f6nbelle\u011fini temizleyin.<br \/>\n    *   <code>composer.lock<\/code> dosyas\u0131n\u0131 silip <code>composer install<\/code> ile yeniden ba\u011f\u0131ml\u0131l\u0131klar\u0131 kurmay\u0131 deneyin (dikkatli olun, bu durum beklenmedik s\u00fcr\u00fcm g\u00fcncellemelerine yol a\u00e7abilir).<\/p>\n<p>Bu sorun giderme ipu\u00e7lar\u0131, Drush kullan\u0131m\u0131n\u0131z s\u0131ras\u0131nda kar\u015f\u0131la\u015fabilece\u011finiz \u00e7o\u011fu yayg\u0131n sorunu \u00e7\u00f6zmenize yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h2>Drush G\u00fcvenli\u011fi: En \u0130yi Uygulamalar<\/h2>\n<p>Drush g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r ve bu g\u00fc\u00e7, do\u011fru kullan\u0131lmad\u0131\u011f\u0131nda potansiyel g\u00fcvenlik riskleri de ta\u015f\u0131yabilir. Drush&#8217;\u0131 g\u00fcvenli bir \u015fekilde kullanmak i\u00e7in baz\u0131 en iyi uygulamalar \u015funlard\u0131r:<\/p>\n<p>*   <strong>Canl\u0131 Ortamlarda Dikkatli Kullan\u0131m:<\/strong> \u00dcretim ortamlar\u0131nda Drush komutlar\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131rken son derece dikkatli olun. Her komutu \u00e7al\u0131\u015ft\u0131rmadan \u00f6nce ne yapaca\u011f\u0131n\u0131 anlad\u0131\u011f\u0131n\u0131zdan emin olun. \u00d6zellikle <code>--yes<\/code> (<code>-y<\/code>) se\u00e7ene\u011fini kullan\u0131rken iki kez d\u00fc\u015f\u00fcn\u00fcn. Yanl\u0131\u015f bir komut, veritaban\u0131 kayb\u0131na veya site \u00e7\u00f6kmesine neden olabilir.<br \/>\n*   <strong>Minimum Ayr\u0131cal\u0131k Prensibi:<\/strong> Sunucunuzda Drush&#8217;\u0131 \u00e7al\u0131\u015ft\u0131ran kullan\u0131c\u0131n\u0131n yaln\u0131zca ihtiyac\u0131 olan minimum izinlere sahip oldu\u011fundan emin olun. Drush genellikle web sunucusu kullan\u0131c\u0131s\u0131 (\u00f6rne\u011fin, <code>www-data<\/code>) veya \u00f6zel bir da\u011f\u0131t\u0131m kullan\u0131c\u0131s\u0131 taraf\u0131ndan \u00e7al\u0131\u015ft\u0131r\u0131lmal\u0131d\u0131r. <code>root<\/code> kullan\u0131c\u0131s\u0131 olarak Drush \u00e7al\u0131\u015ft\u0131rmaktan ka\u00e7\u0131n\u0131n.<br \/>\n*   <strong>SSH Anahtar Tabanl\u0131 Kimlik Do\u011frulama:<\/strong> Uzak sunucularla Drush takma adlar\u0131 arac\u0131l\u0131\u011f\u0131yla etkile\u015fim kurarken her zaman SSH anahtar tabanl\u0131 kimlik do\u011frulamay\u0131 kullan\u0131n. Parola tabanl\u0131 kimlik do\u011frulama daha az g\u00fcvenlidir ve otomasyonu zorla\u015ft\u0131r\u0131r.<br \/>\n*   <strong>Drush&#8217;\u0131 G\u00fcncel Tutun:<\/strong> Drush&#8217;\u0131n en son stabil s\u00fcr\u00fcm\u00fcn\u00fc kulland\u0131\u011f\u0131n\u0131zdan emin olun. G\u00fcncellemeler genellikle g\u00fcvenlik d\u00fczeltmeleri ve performans iyile\u015ftirmeleri i\u00e7erir. <code>composer update drush\/drush<\/code> komutuyla Drush&#8217;\u0131 g\u00fcncelleyebilirsiniz.<br \/>\n*   <strong><code>settings.php<\/code> Dosyas\u0131n\u0131n G\u00fcvenli\u011fi:<\/strong> Drupal&#8217;\u0131n <code>settings.php<\/code> dosyas\u0131 hassas veritaban\u0131 kimlik bilgilerini i\u00e7erir. Bu dosyan\u0131n do\u011fru izinlere sahip oldu\u011fundan (genellikle <code>644<\/code> veya <code>444<\/code> ve web sunucusu taraf\u0131ndan okunabilir olmal\u0131) ve halka a\u00e7\u0131k web eri\u015fimine kapal\u0131 oldu\u011fundan emin olun.<br \/>\n*   <strong>Drush Komutlar\u0131n\u0131n Kaydedilmesi:<\/strong> \u00d6zellikle canl\u0131 ortamlarda hangi Drush komutlar\u0131n\u0131n ne zaman \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131n\u0131 takip etmek i\u00e7in komut ge\u00e7mi\u015fini (bash history) veya da\u011f\u0131t\u0131m betiklerini kullan\u0131n. Bu, sorun giderme ve denetim i\u00e7in faydal\u0131d\u0131r.<br \/>\n*   <strong>Yedeklemeler:<\/strong> B\u00fcy\u00fck Drush komutlar\u0131n\u0131 (\u00f6zellikle <code>updb<\/code>, <code>cim<\/code> veya <code>sql:query<\/code> gibi veritaban\u0131 etkile\u015fimli olanlar\u0131) \u00e7al\u0131\u015ft\u0131rmadan \u00f6nce daima veritaban\u0131 ve dosya sisteminin yede\u011fini al\u0131n. <code>drush sql:dump<\/code> komutu bu ama\u00e7la kullan\u0131labilir.<\/p>\n<p>Bu g\u00fcvenlik uygulamalar\u0131n\u0131 takip etmek, Drush&#8217;\u0131 kullan\u0131rken sitelerinizin g\u00fcvenli\u011fini sa\u011flaman\u0131za yard\u0131mc\u0131 olacakt\u0131r.<\/p>\n<h2>Sonu\u00e7 ve Gelecek: Drush&#8217;\u0131n Drupal Ekosistemindeki Yeri<\/h2>\n<p>Bu k\u0131lavuz boyunca, Drush&#8217;\u0131n Drupal geli\u015ftiricileri ve y\u00f6neticileri i\u00e7in neden vazge\u00e7ilmez bir ara\u00e7 oldu\u011funu, nas\u0131l kuruldu\u011funu, temel komutlar\u0131n\u0131 ve geli\u015fmi\u015f \u00f6zelliklerini inceledik. Drush, Drupal ile \u00e7al\u0131\u015f\u0131rken h\u0131z, verimlilik, otomasyon ve uzaktan y\u00f6netim gibi bir\u00e7ok avantaj sunar.<\/p>\n<p>Drush&#8217;\u0131n temel faydalar\u0131n\u0131 tekrar \u00f6zetlemek gerekirse:<br \/>\n*   <strong>Zaman Tasarrufu:<\/strong> Tekrarlayan g\u00f6revleri h\u0131zla ger\u00e7ekle\u015ftirir.<br \/>\n*   <strong>Otomasyon Yetene\u011fi:<\/strong> CI\/CD s\u00fcre\u00e7lerini ve bak\u0131m g\u00f6revlerini kolayla\u015ft\u0131r\u0131r.<br \/>\n*   <strong>Esneklik:<\/strong> Yerel, uzak ve \u00e7oklu site ortamlar\u0131nda sorunsuz \u00e7al\u0131\u015f\u0131r.<br \/>\n*   <strong>Geli\u015ftirme Deste\u011fi:<\/strong> Mod\u00fcl ve tema geli\u015ftirme s\u00fcre\u00e7lerini h\u0131zland\u0131r\u0131r.<br \/>\n*   <strong>Tutarl\u0131l\u0131k:<\/strong> Komut sat\u0131r\u0131 \u00fczerinden yap\u0131lan i\u015flemlerle hata oran\u0131n\u0131 d\u00fc\u015f\u00fcr\u00fcr.<\/p>\n<p>Drush, Drupal ekosisteminin temel bir par\u00e7as\u0131 haline gelmi\u015ftir ve gelecekte de bu rol\u00fcn\u00fc s\u00fcrd\u00fcrmesi beklenmektedir. Drupal&#8217;\u0131n s\u00fcrekli geli\u015fimiyle birlikte Drush da yeni \u00f6zellikler ve iyile\u015ftirmelerle g\u00fcncellenmeye devam edecektir.<\/p>\n<p>Drush&#8217;\u0131 \u00f6\u011frenmek, Drupal beceri setinize paha bi\u00e7ilmez bir katk\u0131 sa\u011flayacakt\u0131r. Ba\u015flang\u0131\u00e7ta komut sat\u0131r\u0131 aray\u00fcz\u00fc biraz g\u00f6z korkutucu gelebilir, ancak pratik yaparak ve Drush&#8217;\u0131n kapsaml\u0131 yard\u0131m sistemi ile ke\u015ffederek k\u0131sa s\u00fcrede uzmanla\u015fabilirsiniz. Drupal projelerinizde Drush&#8217;\u0131 aktif olarak kullanmaya ba\u015flayarak, geli\u015ftirme ve y\u00f6netim s\u00fcre\u00e7lerinizde ne kadar b\u00fcy\u00fck bir fark yaratt\u0131\u011f\u0131n\u0131 bizzat deneyimleyin. Drush ile Drupal yolculu\u011funuzda ba\u015far\u0131lar dileriz!<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"Drush&#8217;a Ba\u015flang\u0131\u00e7 K\u0131lavuzu: Drupal Kabu\u011fu\nDrupal, web siteleri ve uygulamalar\u0131 olu\u015fturmak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir i\u00e7erik y\u00f6netim sistemi","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-37082","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Drush&#039;a Ba\u015flang\u0131\u00e7 K\u0131lavuzu: Drupal Kabu\u011fu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Drush&#039;a Ba\u015flang\u0131\u00e7 K\u0131lavuzu: Drupal Kabu\u011fu\" \/>\n<meta property=\"og:description\" content=\"Drush&#039;a Ba\u015flang\u0131\u00e7 K\u0131lavuzu: Drupal Kabu\u011fu Drupal, web siteleri ve uygulamalar\u0131 olu\u015fturmak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir i\u00e7erik y\u00f6netim sistemi\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-12-27T02:40:51+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"20 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Drush&#8217;a Ba\u015flang\u0131\u00e7 K\u0131lavuzu: Drupal Kabu\u011fu\",\"datePublished\":\"2025-12-27T02:40:51+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/\"},\"wordCount\":3380,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/\",\"name\":\"Drush'a Ba\u015flang\u0131\u00e7 K\u0131lavuzu: Drupal Kabu\u011fu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-12-27T02:40:51+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Drush&#8217;a Ba\u015flang\u0131\u00e7 K\u0131lavuzu: Drupal Kabu\u011fu\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Drush'a Ba\u015flang\u0131\u00e7 K\u0131lavuzu: Drupal Kabu\u011fu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/","og_locale":"tr_TR","og_type":"article","og_title":"Drush'a Ba\u015flang\u0131\u00e7 K\u0131lavuzu: Drupal Kabu\u011fu","og_description":"Drush'a Ba\u015flang\u0131\u00e7 K\u0131lavuzu: Drupal Kabu\u011fu Drupal, web siteleri ve uygulamalar\u0131 olu\u015fturmak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir i\u00e7erik y\u00f6netim sistemi","og_url":"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-12-27T02:40:51+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"20 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Drush&#8217;a Ba\u015flang\u0131\u00e7 K\u0131lavuzu: Drupal Kabu\u011fu","datePublished":"2025-12-27T02:40:51+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/"},"wordCount":3380,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/","url":"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/","name":"Drush'a Ba\u015flang\u0131\u00e7 K\u0131lavuzu: Drupal Kabu\u011fu - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-12-27T02:40:51+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/drusha-baslangic-kilavuzu-drupal-kabugu\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Drush&#8217;a Ba\u015flang\u0131\u00e7 K\u0131lavuzu: Drupal Kabu\u011fu"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37082","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=37082"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37082\/revisions"}],"predecessor-version":[{"id":37083,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37082\/revisions\/37083"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37082"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37082"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37082"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}