こんにちは。アクイアさんが行っているアクイア認定 日本語化キャンペーンに乗じてすべての試験を受験して、晴れて Drupal グランドマスターとなった大野です! 日本語版の試験では一番乗り、おそらく日本人では二人目だと思います😏

さて今回は数年に一度くらいの頻度でインストール方法が変わる Drush の最新のインストール方法について解説します。Drush とはターミナル・コンソール上から Drupal をコマンドを使って操作できるソフトウェアのことですが、詳しい解説はGoogle 先生に任せます。また、この解説は macOS や Linux 環境を対象とした解説となっていますのでご注意ください。

Drush 8 からの移り変わり

これまでは開発環境全体で一つの Drush を利用できるようにインストールすることが一般的でした。これは Drush 8 が Drupal 7 と Drupal 8 の両方をサポートしていたからですね。次の図は Drush の各バージョンがサポートする Drupal を示しています。(ソース: https://docs.drush.org/en/master/install/#drupal-compatibility

Drush のバージョン別 Drupal 対応表

Drush 8 は Drupal 8.3 までを正式にサポートしていますが、Drupal 8.4 以降のサポートは「非推薦」となっています。時代は移り変わり Drupal は Composer で管理することが推薦されるようになりました。それに合わせて Drupal 7 のサポートを打ち切った Drush 9 がリリースされ、以降は Composer を使いプロジェクト単位で Drush をインストールする方法しかサポートされなくなりました。つまり Drupal 8 以降で最新の Drush を使いたい場合は Drupal を Composer で管理する必用があり、Drush 8 は Composer 管理できない Drupal 8 のサイトもしくは Drupal 7 のサイト専用と考えたほうがいいでしょう。

Drush のインストール

さて、ここからは Composer 管理された Drupal サイトに Drush をインストールする方法の解説です。

Drupal を管理している composer.json があるディレクトリで次のコマンドを打ちます。

$ composer require drush/drush

以上でインストールは完了です。簡単ですね。Drush の実行ファイルは vendor/bin/drush にインストールされるので、 ./vendor/bin/drush のようにコマンドを打てば Drush を実行することができます。しかし、コレでは一々 Drush へのパスを打たなければいけなくて面倒です。環境変数の PATH に追加して対応する事もできますが、プロジェクトごとにパスを通すのはあまり現実的ではありません。そこで、これまでと同様にパスを入力せずとも drush コマンドだけで実行できる Drush Launcher と言うものを紹介します。

Drush Launcher とは

Drush Launcherdrush コマンドを実行したカレントディレクトリを見て、よしなに Drush を呼び出してくれる Drush のラッパーコマンドです。つまり composer.json があるディレクトリ配下であれば、どこで drush コマンドを実行してもプロジェクトにインストールされた Drush を呼び出してくれるので、一々対パスを考えて打つ必用がないので、素早く Drush を実行することができるのです。

Drush Launcher のインストール方法

次の手順は Drush の公式サイトに書かれたものを抜粋して日本語に翻訳したものです。

  1. コマンドラインで次のようにコマンドを打つか、ブラウザで Drush Launcher のダウンロードページへアクセスして Drush Launcher をダウンロードしてください。

OSX:

$ curl -OL https://github.com/drush-ops/drush-launcher/releases/latest/download/drush.phar

Linux:

$ wget -O drush.phar https://github.com/drush-ops/drush-launcher/releases/latest/download/drush.phar
  1. ダウンロードしたファイルに実行権限を付与します。
$ chmod +x drush.phar
  1. drush.phar を $PATH の環境変数に書かれたパスのディレクトリへ drush という名前にリネーム・移動します。

この例は、殆どのシステムでデフォルトでパスが通っている /usr/local/bin ディレクトリへインストールするものです。

$ mv drush.phar /usr/local/bin/drush

以上でインストールは完了です。composer.json があるディレクトリ配下で drush コマンドを打つだけで Drush が実行できるようになっているはずです。

Composer 管理下にない Drupal サイトで Drush を使いたい場合

開発環境下に Composer 管理していない Drupal サイトが混在している場合は、Drush 8 を別にインストールして Drush Launcher のフォールバック機能を利用することで対応できます。

GitHub の Drush リリース一覧ページ で Drush 8.x.x と書かれたセクションの Assets をクリックして drush.phar をダウンロードします。

Drush 8.3.2 をシェルからダウンロードする例です。

$ curl -OL https://github.com/drush-ops/drush/releases/download/8.3.2/drush.phar

drush.phar に実行権限を付与して単体で実行できるようにします。

$ chmod +x drush.phar

/usr/local/bindrush8 と言う名前でファイルを移動します。

$ mv drush.phar /usr/local/bin/drush8

環境変数 DRUSH_LAUNCHER_FALLBACK に先ほどインストールした Drush 8 のパスをセットします。次は .bashrc に環境変数をセットする例です。

$ echo "export DRUSH_LAUNCHER_FALLBACK=/usr/local/bin/drush8" >> ~/.bashrc

以上の設定で、Composer 管理下の Drush が見つからない場合は DRUSH_LAUNCHER_FALLBACK にセットされた Drush 8 が自動的に呼び出されるようになりました。

余談

Drush はバージョンが上がるたびにセキュリティ的な都合などで便利なコマンドが廃止されたりするんですよね。私はサイトをまるごとバックアップできる drush archvie-dump コマンドを頻繁に使っていたのですが Drush 9 で無くなってしまいました。残念。。

私が Drush のブログを書くのは数回目なので、弊社のブログで過去に何回くらい Drush のインストールについて記事にしてきたのかと見返してみたところ、6年間に渡り5回も記事にしておりました。。これが最後になることを切に願います(笑)

※ これらの手順はいずれも古い方法ですので参考にしないでください