用 Drush 安裝 Drupal

上星期的 Drupalcamp Taipei 2012,由於擔任 BOF 主持人,參與了一場談到運用 Drush 來操控 Drupal 的討論。來自馬來西亞的 Marc 現場示範如何使用 webenable 上面的試用帳號來開個內建 Drush 的 Drupal 開發環境,並利用 drush 指令來安裝模組和版型等等。

(有趣的是,@John Wilkins 跑來湊一腳,在我的電腦終端機上示範如何結合 drush 和他的版型 Zen,以及他最近一直在談的 Sass。看他兩人不停忙著敲指令來架站與設置版型,讓我真覺得頭腦爆炸。也許這預示了台灣的 Drupal 網站開發終於也要離開手工業而進入工業化時代了)

去年在北卡參加的幾場 Drupalcamp 都有聽過 Drush 的相關應用與潛力,但是當時覺得技術門檻很高,似乎是 geek 專用的 Drupal 架站與佈署工具。這次 Drupalcamp Taipei 2012 沒有主要議程談到 Drush,只有這場 BOF 有提到,顯示出 Drush 目前仍舊是某種「尖端技術」,要在台灣普及還需要一點時間。不過看了兩位高手示範過後,感覺其實好像也沒有那麼難;仗著自己有摸過 Ubuntu 的經驗,就開始研究了一下 Drush。

Drush的簡介是:a command line shell and Unix scripting interface for Drupal (用以建置Drupal的命令列殼層與Unix介面),基本概念就是可以用命令列指令的方式來做到常用的 Drupal 佈署與管理工作。網路上其實有不少的教學影片,教你怎麼運用 Drush。而下面這部影片很生動的告訴你為什麼要使用 Drush 做這些工作:

 

我自己試驗的結果是,就架站這個工作來講,用 Drush 來做真的比較快完成。當然前題是你得熟悉指令和架站流程,不然就會像我一樣花很多時間在查指令或者搞爛了網站。下面我就介紹從怎麼在 Ubuntu 12.04 裡頭的 LAMP 架構裡頭,用 Drush 來建置一個 Drupal 測試站。

一、建置LAMP環境

這部份應該就不用多提,如果你到現在還不了解LAMP架構或不知道該怎麼做,可以參考這篇文章

這裡唯一還需要注意的地方就是要啟用 Apache 裡頭的 rewrite 模組,並且修改虛擬主機的設定檔(應該是在/etc/apache2/sites-available/default),讓簡潔網址功能可以順利啟用(不然你網站架好就只有首頁可以用而已,連結都會失效)。基本上就是把 "AllowOverride None" 改成 "AllowOverride All" 就可以了。

DocumentRoot /home/tky/drupal
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
<Directory /home/tky/drupal/>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
</Directory>

二、安裝 Drush

安裝 Drush 的方法有很多,網路上的影片大多是叫你把 Drush 這個模組下載回來,然後建立命令捷徑,讓你可以在主機中的任何目錄都可以使用 drush 命令。Drupal.org 上的模組專頁則是教你用 pear 指令,直接把 Drush 裝好,連建立捷徑這一步都省了。

在我的 ubuntu 底下,會需要加上 sudo 才能獲得執行這些動作的權限,所以指令是:

$ sudo pear channel-discover pear.drush.org
$ sudo pear install drush/drush

(當然,如果你的主機連 pear 也沒有裝的話,終端機會提示你用指令加裝 pear;裝好之後依次行上面兩個指令,就可以裝好 Drush 了。)

補充:如果你是使用 Ubuntu 10.04 之前的版本,在使用 pear channel-discover pear.drush.org 指令之前,你必須先升級一下 pear channel,否則就會看到以下的錯誤碼:

Discovering channel pear.drush.org over http:// failed with message: channel-add: Cannot open "http://pear.drush.org/channel.xml" (File http://pear.drush.org:80/channel.xml not valid (received: HTTP/1.1 404 Not Found
))
Trying to discover channel pear.drush.org over https:// instead
Discovery of channel "pear.drush.org" failed (channel-add: Cannot open "https://pear.drush.org/channel.xml" (Connection to `pear.drush.org:443' failed: Connection refused))

升級 pear 的指令為;

sudo pear upgrade

三、執行 drush 命令

如果安裝過程順利,就可以直接使用 drush 指令,列出可用的命令:

$ drush

接著你應該會看到終端機裡頭列出了一大堆可以接在 drush 之後的指令

四、用 Drush 下載最新版的 Drupal 7

用 dl 指令把最新版的 Drupal 下載回來( dl 是 download 的縮寫):

$ drush dl drupal

如果你沒有在 drupal 後面加上版本號的的話,drush 就會自動下載最新的推荐版本回來。目前是 7.14 版。你可以把 Drupal 直接下載到你的 home/username 目錄,或者你想要的任何地方,只要到時候去 Apache 的虛擬伺服器那邊設定好正確的路徑就好了。在測試機上我是放在 /home/tky/drupal 裡頭。由於下載回來的時候會多建立一層含有版本號的資料夾(例如 "drupal_7.14" 之類的),請記得將資料夾底下的檔案都搬到正確的地方。

這時候進入我們的 Drupal 根目錄

$ cd /home/tky/drupal

然後輸入以下命令,察看 drupal 與 drush 的狀態

$ drush status

終端機應該會輸出以下畫面,告訴你當前的 Drupal 和 drush 版本為何

 Drupal version         :  7.14                       
 Default theme          :  garland                    
 Administration theme   :  garland                    
 PHP configuration      :  /etc/php5/cli/php.ini      
 Drush version          :  5.4                        
 Drush configuration    :                             
 Drupal root            :  /home/tky/drupal

五、安裝 drupal

接下來就可以透過 si 指令來安裝 Drupal 。 si 是 site-install 的簡寫,不清楚怎麼用這個指令的話,可以用以下的指令來查詢它的用法(其他的命令也是如此)

$ drush si -h

其中最重要的是指定 MySql 資料庫的帳密和位置:

$ drush si standard --db-url=mysql://root:password@localhost/drupal

si 後面加上 "standard" 表示標準安裝。"mysql://root:password@localhost/drupal" 這一段則是表示 MySql 的使用者帳號、密碼以及資料庫位置和名稱。

如果你想要的話,可以在上面那串指令後面繼續加上 "--account-name=你想要的名稱" 和 "--account-pass=你想要的密碼",替你的 uid1 超級用戶設定一個自訂的名稱和密碼。不然 drush 會在安裝 Drupal 的時候自動以 "admin" 作為帳號名稱,並且自動產生一個隨機密碼給你。

輸入以上之令之後,終端機應該會輸出以下內容:

You are about to create a sites/default/files directory and create a sites/default/settings.php file and DROP all tables in your 'test' database. Do you want to continue? (y/n): y

這時輸入 "y",按下enter,系統就會開始安裝 Drupal。整個過程大概1-2分鐘,最後會輸出這些東西:

No tables to drop.                                                                                                                 [ok]
Starting Drupal installation. This takes a few seconds ...                                                                         [ok]
Installation complete.  User name: admin  User password: TmLJ96HHBb

請記得一定要複製你的密碼,最為第一次登入使用,之後再去改密碼就好了。而如果你和我一樣腦殘,常常忘記密碼,你也可以透過drush來重設用戶的密碼:

$ drush upwd admin --password= 你想要的密碼

六、登入網站

剩下的就是在瀏覽器中前往 localhost,造訪我們建立好的 Drupal 網站囉!

整個建置過程不含LAMP架設,算算大概十分鐘不到,如果你熟悉指令的話還會更快。比起去官網下載 Drupal、解壓縮、按步就班輸入這輸入那的安裝流程,真的省事多了。理論上,你還可以寫個腳本或者命令列殼層,在任何其他有安裝 Drush 的伺服器上執行,進行全自動的架站與安裝模組的程序。

當然,一定有人會疑惑:用 Drush 來架站跟一般把常用模組和安裝包打包在一起、然後丟到不同伺服器上面去安裝,有什麼不同呢?

不同就在於 Drush 每次都可以自動下載最新版本的核心和第三方模組,而且用指令來安裝和啟動模組時,會自動解決相依性問題,幫你下載與啟動必要模組。更新資料庫與執行cron也是一鍵搞定。這些工作如果要用人腦評估、手動勾選、想想要花上多少時間啊。

目前有愈來愈多的模組甚至版型都開始支援 Drush 指令,大家可以參考看看

其他的 Drush 教學影片:

 

 

Area: