Drushとは、Drupal Shellの略で、Drupalをコマンドラインから操作するコマンドラインツールです。複数のDrupalサイトを効率的に管理するAegir hosting systemというプロジェクトの一部として開発されています。
Drushを使うと、コマンドラインからモジュールをインストールしたり、インストール済みのモジュールを更新したり、キャッシュやログをクリアしたりできます。こういった作業をスクリプト化して自動化することも可能です。FTPを使うレンタルサーバのような環境では使えないでしょうが、sshなどでunixのシェルが使える環境の場合は、Drupalの管理を大幅に効率化できます。
実際に動かしている様子はCivicActionsのブログの動画で見ることができます。
Drushのプロジェクトページ(http://drupal.org/project/drush )から最新のバージョンをダウンロードします。なお、DrushはDrupalのバージョンとは関係なく、すべて同じバージョンを使用できます。
$ tar xzf drush-All-Versions-x.x.tar.gz
tarballを適当な場所で展開して、drushディレクトリの中を見てみましょう。drush/drushというのがUnix用の実行スクリプトです(実行スクリプトは内部でPHPコマンドを呼んでいるので、Drushの実行にはphp-cliが必要です)。
このdrushコマンドを呼びやすいように、パスの通った場所にdrushのシンボリックリンクを張るか(ln -s /path/to/drush/drush /usr/bin/drush)、シェルのエイリアスを定義(alias drush='/path/to/drush/drush')しておくと便利です。
なお、Debianではパッケージ化されているので、apt-getでインストールすることもできます(http://packages.debian.org/drush )。
Drushがインストールできたら、さっそく実行してみましょう。Drushはすでに稼働中のDrupalのルートディレクトリから実行します。たとえばDrupalが/var/www/drupalにインストールされているなら、そのディレクトリにcdして、その中でdrushを実行します。オプションやコマンドを付けずに実行すると、drushはヘルプを表示して終了します。
とりあえずDrushが稼働中のDrupalを正しく認識できているか確認するために、drush st(core-status)コマンドを試してみましょう。以下のように、Drupalのバージョンやデータベース情報が取得できていれば成功です。
$ cd /var/www/drupal $ drush st PHP configuration : /etc/php5/cli/php.ini Drupal Root : /var/www/drupal Drupal version : 6.12 Site Path : sites/default Site URI : http://default Database Driver : mysqli Database Hostname : localhost Database Username : example Database Name : example Database Password : example Database : Connected Drupal Bootstrap : Successful Drupal User : Anonymous
うまく接続できない場合や複数のドメインを運用している場合は、-l(--uri)オプションや-r(--root)オプションを調べてみてください。
たとえばリビジョンの差分を表示するDiffモジュールをインストールしてみましょう。モジュールをインストールするには、パッケージをダウンロード(dl, pm-download)して有効(en, pm-enable)にします。drush dlを実行すると、デフォルトではsites/all/modules/ にファイルがダウンロードされます。
$ drush dl diff Project diff (6.x-2.1-alpha1) downloaded to [success] /var/www/drupal/sites/all/modules/.
ダウンロードできたら、drush en(pm-enable)コマンドでモジュールを有効にします。
$ drush en diff The following modules will be enabled: diff Do you really want to continue? (y/n): y Diff was enabled successfully.
これだけでモジュールのインストールが完了しました。権限の設定やモジュールの設定変更は、これまでどおり管理画面から行なってください。
インストールした拡張モジュールをアップグレードするには、drush up(pm-update)コマンドを使用します。pm-updateコマンドは管理画面の入手可能な更新(admin/reports/updates)に相当する機能ですが、そのまま最新版のモジュールをダウンロードして、update.phpを実行することができます。
$ drush up Refreshing update status information ... Done. Update information last refreshed: Fri, 06/12/2009 - 15:15 Update status information on all installed and enabled Drupal modules: Name Installed version Proposed version Status Drupal 6.12 6.12 Up to date Content 6.x-2.3 6.x-2.3 Up to date Construction Kit (CCK) Diff 6.x-2.1-alpha1 6.x-2.1-alpha1 Up to date Views 6.x-2.5 6.x-2.6 SECURITY UPDATE available (省略) Code updates will be made to the following projects: Views [views-6.x-2.6] Do you really want to continue? (y/n):
drush upを実行して古いバージョンが見つかった場合は、利用可能な最新版を示してくれます。すべての拡張モジュールを更新したくない場合は、'drush up <モジュール名>'で特定のモジュールのみを対象にすることもできます。
Drush 3.0からは、Drupalコアのアップグレードにも対応しています。通常のモジュールと同じように、drush upのみでコアもアップグレードできます。モジュールのアップデートでもそうですが、必ずテストサイト等でテストをしてから、慎重にアップグレードしましょう。
drush helpを見ると分かるように、Drushには他にもたくさんのコマンドやオプションがあります(さらに他のモジュールを入れることでコマンドを増やすこともできます)。'drush help <コマンド名>'で各コマンドの詳しい使い方を見ることができます。
とりあえず個人的によく使うコマンドはこんな感じです。
dlコマンドでは'<module>-<version>'形式で最新以外のバージョンを指定したり、CVSからのチェックアウトにも対応しています。
また、コマンドが実行するアクションを確認するだけで実際には反映しない-s(--simulate)オプションや、結果をパイプで渡して処理しやすいように最小限の表示をする-p(--pipe)オプションなども便利です。
DebianではDrushのパッケージが用意されていますが、バージョンが少し古めです。最新の機能を使いたい人は手動で入れた方がいいかもしれません。また、DrupalモジュールをDebianパッケージにするdh-make-drupalというツールもあります。将来的にDrushと何らかの連携もできるかもしれませんが、現時点ではどちらか1つを選んで使った方がいいと思います。
また、Drushとは関係ありませんが、わりと大きなサイトで使っている人にはNagiosでDrupalを監視するNagios monitoringモジュールもおすすめです。
「I heart DRUSH」Tシャツはこちらから買えます。