Drushを使おう

Drushとは

Drushとは、Drupal Shellの略で、Drupalをコマンドラインから操作するコマンドラインツールです。複数のDrupalサイトを効率的に管理するAegir hosting systemというプロジェクトの一部として開発されています。

Drushを使うと、コマンドラインからモジュールをインストールしたり、インストール済みのモジュールを更新したり、キャッシュやログをクリアしたりできます。こういった作業をスクリプト化して自動化することも可能です。FTPを使うレンタルサーバのような環境では使えないでしょうが、sshなどでunixのシェルが使える環境の場合は、Drupalの管理を大幅に効率化できます。

実際に動かしている様子はCivicActionsのブログの動画で見ることができます。

Drushのインストール

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がインストールできたら、さっそく実行してみましょう。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)オプションを調べてみてください。

Drushを使ってモジュールをインストール

たとえばリビジョンの差分を表示する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を使ってモジュールをアップグレード

インストールした拡張モジュールをアップグレードするには、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コマンド

drush helpを見ると分かるように、Drushには他にもたくさんのコマンドやオプションがあります(さらに他のモジュールを入れることでコマンドを増やすこともできます)。'drush help <コマンド名>'で各コマンドの詳しい使い方を見ることができます。

とりあえず個人的によく使うコマンドはこんな感じです。

  • モジュールのダウンロード: drush pm-download (dl) <modules>
  • モジュールの有効化: drush pm-enable (en) <modules>
  • 最新版の確認と更新: pm-update (up)
  • キャシュのクリア: drush cache-clear (cc)
  • ログの確認: drush watchdog-show (ws)
  • update.phpの実行: drush pm-updatecode (upc)
  • その他の使い方(ヘルプ): 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シャツはこちらから買えます。

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2010年06月04日 00:26