Drush (Drupal Shell) Nedir?

Drush nedir?

Drush kelimesi Drupal ve Shell kelimelerinin ilk hecelerinin birleştirilmesiyle oluşturulmuştur. Drupal kabuğu anlamına gelen Drush, Drupal ile geliştirilmiş siteleri kontrol etmek, işletmek ve geliştirmek için kullanılan bir kabuk tabanlı uygulamadır.

Drush ile neler yapabileceklerimizi sonraki bölümlerde ele alacağız fakat bu aşamada Drupal'in çekirdek güncellemesinin zorluğundan yakınanlara iyi bir haberimiz var! Drush en çok sizin yüzünüzü güldürecek.

Drush ile hangi işlemler yapılabilir?

Drush uygulaması ile saniyeler içinde çekirdek, modül ve/veya tema güncellemelerini yapabilirsiniz. Modülleri aktifleştirebilir ve/veya deaktif hale getirebilirsiniz. Modül ve tema indirebilirsiniz. Sitenizin yedeğini alabilir veyahut aldığınız yedeği sitenize geri yükleyebilirsiniz. Zen, Omega, Adaptive gibi popüler taban temaların alt temalarını oluşturabilir, oluşturduğunuz temaları aktifleştirebilirsiniz. Temiz url ye müdehalede bulunabilir, hatta drupal kurulu olmayan bir dizine drupalin en güncel ve stabil sürümünü indirebilirsiniz...

Şimdi yukarıda bahsettiğim işlemleri nasıl yapabileceğimizden bahsedelim. Tabiki önce Drush kurulumunu yapmamız gerek.

Drush kurulumu/güncellemesi

Burada yapacağımız kurulum Ubuntu dağıtımı içindir.

sudo apt-get install php-pear

satırı ile php-pear ı sistemimize yüklüyoruz.

Sonrasında aşağıdaki komutları sırayla uygulayarak drush kurulumumuzu gerçekleştiriyoruz.

pear channel-discover pear.drush.org

pear install drush/drush

drush version

Mevcut drush sürümümüzü güncellemek için ise aşağıdaki komutu kullanıyoruz.

pear upgrade drush/drush

Drush kurulummuzu tamamladıktan sonra gelin bahsettiğimiz işlemleri nasıl yapacağımıza bakmadan önce temel birkaç şey öğrenelim.

Drush ile işlem yapmak için komut satırımıza drush ile başlıyoruz.

Modül ve/veya tema indirmek için download kelimesinin kısaltılmışı olan dl

Modül ve/veya tema akfitleştirmek için için enable kelimesinin kısaltılmışı olan en

Modül ve/veya tema deaktifleştirmek için disable kelimesinin kısaltılmışı olan dis

Çekirdek, modül ve/veya tema güncellemek için update kelimesinin kısaltılmışı olan upgibi kısaltmaları kullanıyoruz.

Gelelim bu işlemleri nasıl yapacağımıza

Drush ile herhangi bir işlem yapmadan içinde bulunduğumuz dizinin doğru dizin olduğundan emin olmak için

drush status

komutunu kullanıyoruz ve sitemizin durumunu gösteren aşağıdaki gibi bir çıktı alıyoruz.

erdem@erdem-ubuntu:/var/www/learn$ sudo drush status

Drupal version : 7.28

Site URI : http://default

Database driver : mysql

Database username : root

Database name : learndblc

Database : Connected

Drupal bootstrap : Successful

Drupal user : Anonymous

Default theme : bartik

Administration theme : seven

PHP executable : /usr/bin/php

PHP configuration : /etc/php5/cli/php.ini

PHP OS : Linux

Drush version : 6.2.0

Drush configuration :

Drush alias files :

Drupal root : /var/www/learn

Site path : sites/default

File directory path : sites/default/files

Temporary file directory path : /tmp

Drush ile çekirdek, modül veya tema güncellemesi yapmak

drush up

komutu ile güncellemesi olan ne var ne yok her şeyi güncelleyebiliyoruz. Evet evet hepsi bu kadar :)

Sadece çekirdek güncellemesi için

drush up drupal

Çekirdek hariç diğer güncellemeleri yapmak için

drush up --no-core

Özellikle sadece bir modül veya temayı güncellemek için(mesela views ten bahsedelim biz)

drush up views

Son örnek ise benim başıma gelen bir olaydan yola çıkarak çok pratik olmasada birden çok modül varsa güncellenmesi gereken ve siz bir tanesini güncellemek istemiyorsanız aşağıdaki komutu kullanabilirsiniz(pcp modülünü güncellemek istemiyoruz mesela).

drush dis -y pcp && drush up -y && drush en -y pcp

komutu ile önce pcp modülünü devre dışı bırakıyoruz. Ardından güncellemeleri yapıyoruz. Sonrasında ise tekrar pcp modülünü aktifleştiriyoruz. Buradan da anlayacağımız gibi drush aktif olmayan modüllerin ya da temaların güncel olup olmadıklarını tarayamıyor ve aktif olmayan modülleri güncelleme dışında bırakıyor.

Burada ek olarak belirtmeliyim ki -y kısmı bize güncelleme, modül/tema aktifleştirme/deaktifleştirme işlemleri sırasında otomatik olarak "yes" cevabını verdiyor. Haliyle tek komutla güncelleme, aktifleştirme/deaktifleştirme işlemlerimizi yapmış oluyoruz.

Drush ile modül veya tema indirmek

drush dl proje_ismi

kalıbını kullanarak indirmek istediğimiz ne varsa indirebiliriz.

Burada proje_ismi dediğimiz kısım işlem yapmak istediğimiz modülün drupal.org sitesindeki projenin url kısmı. Nasıl mı?

Örneğin Administration Menu modülünü indirmek istiyoruz. Drupal.org'daki url si drupal.org/project/admin_menu şeklinde. Bizim proje ismi dediğimiz kısım burada drupal.org/project/ kısmından sonraki url nin devamıdır. Yani Administration Menu modülünü indirmek için

drush dl admin_menu

şeklinde kullanmamız lazım bu komutu.

Drush ın sağladığı kolaylıklardan biri ise tek komutla birden fazla modül/tema indirebilmek ve kurabilmektir.

drush dl admin_menu views ctools panels zen omega

gibi tek bir komut ile admin_menu, views, ctools, panels modülllerini ve zen, omega temalarını indirmiş oluyoruz.

Drush ile modül ve/veya tema aktifleştirmek/deaktirleştirmek

Aktifleştirmek için(views ve administration menu);

drush en -y views admin_menu

Deaktifleştirmek için;

drush dis -y views admin_menu

Drush ile yedek almak

drush archive-dump

komutu ile yedek aldığımızda aşağıdaki gibi bir çıktı vermeli.

root@erdem-ubuntu:/var/www/learn# drush archive-dump

Archive saved to [ok]

/root/drush-backups/archive-dump/20140613170333/learndblc.20140613_170334.tar.gz




Bu şekilde ftp ve veritabanı yedeğini tek komutla saniyeler içinde oluşturabiliyoruz.

Burada görüldüğü gibi /root/drush-backups/archive-dump dizini altına yedek dosyasını oluşturdu.

Eğer yedek dosyasını istediğimiz yere almak istiyorsak aşağıdaki komutu kullanmalıyız.

drush archive-dump default --destination=/istenilen/dizin/yolu/mysite.tar

Drush ile yedeği geri yüklemek

drush archive-restore ./mysite.tar.gz

komutunu kullanarak dosyalarımızı geri yükleyebiliriz.

Veri tabanı ile birlikte geri yükleme yapmak için

drush archive-restore ./example.tar.gz --db-url=mysql://root:pass@127.0.0.1/dbname

komutunu kullanmamız gerekiyor. Tabiki settings.php dosyasında gerekli değişiklikleri yaptıktan sonra.

Drush ile alt tema oluşturmak

Zen temasını indirelim ve alt temasını oluşturalım.

drush dl zen

komutu ile Zen taban temasını indiriyoruz.

Temayı indirdikten sonra bu adresteki adımları uygulayarak alt temamızı oluşturacağız. Her tema için alt tema oluşturma komutları farklı olduğundan proje sayfalarını incelemenizde fayda var.

root@erdem-ubuntu:/var/www/learn# drush en zen

The following extensions will be enabled: zen

Do you really want to continue? (y/n): n

Aborting. [cancel]

root@erdem-ubuntu:/var/www/learn# drush en -y zen

The following extensions will be enabled: zen

Do you really want to continue? (y/n): y

zen was enabled successfully. [ok]

root@erdem-ubuntu:/var/www/learn# drush cc all

'all' cache was cleared. [success]

root@erdem-ubuntu:/var/www/learn# drush zen "Zen Alt Tema" zenalttema

Starter kit for "Zen Alt Tema" created in: /var/www/learn/sites/all/themes/zenalttema




şeklinde Zen Alt Tema adlı alt temamızı oluşturmuş oluyoruz.

Drush ile temiz urlyi kapatmak

Bu makaleyi yazmayı düşündüğüm sıralarda Facebook DrupalTurkiye grubuna gelen bir soru oldu ve siteye giriş yapmadan temiz url nin nasıl kapatılacağını sordu bir arkadaşımız. O sorudan yola çıkarak grupta verdiğim cevabı buradada vereyim. Siteyi bir sunucudan bir diğerine taşıyınca bazı temiz url sorunları ile karşılaşılabiliyor ve siteye giriş yapabilmek için temiz url yi kapatmak gerekebiliyor.

drush vset clean_url 0 --yes

komutunu kullanarak drush ile temiz url yi siteye giriş yapmadan kapatabilir

drush vset clean_url 1 --yes

komutu ile açabiliriz.

Drush ile drupal çekirdeği indirmek

Son olarak bahsettiğim drupal kurulu olmayan bir dizine drupal çekirdeğini indirmek için ise

drush dl drupal

komutunu kullanıyoruz. Böylece bulunduğumuz dizine en güncel ve stabil drupal sürümünü klasör olarak indirmiş oluyoruz.

Şimdilik Drush hakkında söyleyeceklerim bu kadar.

İyi çalışmalar.