Cu, 06/13/2014 - 22:41 By Erdem
drush drupal

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.