Drupalコアアップデートを手動で[Debian]

環境はGoogle Compute EngineのVMインスタンス、LAMPスタック(Debian 9, Apache 2.4, MySQL 5.7, PHP 7.0)です。Drupal 8.3.7から8.5.1にアップデートしました。

先日やばいセキュリティアップデートのあったDrupal。

WordPressみたいにボタンでぽちっとコアアップデートできたらいいのですが、Drupalの場合初心者には敷居が高いですよね。
www.drupal.org

公式の案内をみると、将来的にはGUIでのアップデートを準備しているものの、現時点ではComposerか手動でサーバー内のファイルを直接いじるしかありません。
www.drupal.org

Composerでのアップデートは初心者にはなにかと敷居が高く、手動でのアップデートをしました。

作業を始める前に、Drupalに管理アカウントでログインしていることを確認してください。

1. バックアップをとる

必須の作業ではないですが、やらないでアップデートしてどこかでミスした場合は自己責任で青ざめてください。

サイトの設定をエクスポート(Drupal管理画面より)

Drupal管理画面の
環境設定 > 設定の同期 > エクスポート
からtarファイルをダウンロードしておきます。

ここまでは簡単。

サイトのキャッシュをクリア

Drupal管理画面の
環境設定 > パフォーマンス
より、「すべてのキャッシュをクリアー」しておきます。

これで余分なキャッシュを一緒にバックアップしてしまわずにすみます。

サイトのディレクトリをtar.gzでバックアップ

ここからサーバーにアクセスします。

Drupalをインストールしているディレクトリをまるごとバックアップしておきましょう。
だいたいは /var/www/html に入っているかと思いますので、ここをまるごとバックアップします。

まずはインストールディレクトリ(html)の親ディレクトリに移動

cd /var/www

ディレクトリ「html」をまるごとtar.gzファイルにアーカイブします。

sudo tar -czvf htmlbackup.tar.gz html

そうしたらいまつくったアーカイブファイルを、どこでもいいのですがとりあえず自分のユーザーフォルダにいれておきます。

sudo mv -i htmlbackup.tar.gz /home/ユーザー名

念のためアクセス権を400(管理者読み込みのみ)にしておきます。

sudo chmod 400 /home/ユーザー名/htmlbackup.tar.gz

これでバックアップはOK。なにかあったらとりあえずいまつくったアーカイブファイルをダウンロードしてしまえばいいのです。

2. サイトをメンテナンスモードに

ふたたびDrupalサイトの管理画面での操作。
環境設定 > メンテナンスモード
から「サイトをメンテナンスモードにする」にチェックをいれて「設定を保存」をクリック。

これで、一般の訪問者はサイトの普段のページにアクセスできなくなりました。

3. 手動で設定したファイルをバックアップ

インストールディレクトリ(/var/www/html)内の設定ファイル(.htaccessやsettings.phpなど)を手動で設定している場合は、ダウンロードしておきます。

SSLの設定などApacheの設定ファイルは別の場所にあるのでそのままで大丈夫です。

僕と同じようにGoogle Compute EngineのVMインスタンスなら、SSH画面の右上のメニューの「ダウンロード」から、
/var/www/html/sites/default/settings.php

/var/www/html/.htaccess
をダウンロードしておけば大丈夫です。

4.「core」「vendor」ディレクトリとトップレベルディレクトリ内のファイルを削除

続いて、インストールディレクトリ(/var/www/html)直下のファイルたちと「core」と「vendor」ディレクトリをぜんぶ削除します。なんか不安ですが、大丈夫。

インストールディレクトリ(html)に移動

cd /var/www/html

直下のディレクトリたちとファイルたちの存在を確認します。

ls -la

「core」と「vendor」ディレクトリを削除

sudo rm -rf core vendor

直下のファイルを削除

sudo rm -f *.* .*

5.deault.settings.phpに変更がある場合(リリースノートで確認)

インストールするコアのバージョンのページでリリースノートを確認します。

8.5.1ならこちら。
www.drupal.org

もしリリースノートに「deault.settings.phpに変更があるよ!」と言われた場合は追加の作業が必要。今回は必要なかったので、ここは解説しません。

必要なこちらのページの 6. に説明が載ってます。
www.drupal.org

6.新しいコアのダウンロード

さて、いよいよ本題です。新しいバージョンのコアをダウンロードします。

インストールディレクトリ(html)に移動

cd /var/www/html

drupal-8.5.1.tar.gzをダウンロード。バージョンによってここは変えてください。

sudo wget https://www.drupal.org/files/projects/drupal-8.5.1.tar.gz

ダウンロードしたtar.gzファイルをその場に展開。

sudo tar -zxvf drupal-8.5.1.tar.gz

作成された「drupal-8.5.1」ディレクトリの中身を、インストールディレクトリ(html)直下にコピー

sudo cp -rip drupal-8.5.1/* /var/www/html

7.手動でバックアップしたファイルを戻す

3.でバックアップした設定ファイルを戻します。
Google Compute EngineのVMインスタンスの場合は、SSH画面の右上のメニューの「アップロード」から、さきほどダウンロードしたファイルをアップロード。

.htaccessファイルはダウンロードした時にファイル名が変更されている可能性があるので、あらかじめ「htaccess.txt」というファイル名に変更してからアップロードします。

今回は
/home/ユーザー名
にアップロードしたとします。

そうしたら、

インストールディレクトリ(html)に移動

cd /var/www/html

アップロードしたsettings.phpファイルを元の場所( /var/www/html/sites/default)へ

sudo mv -i /home/ユーザー名/settings.php /var/www/html/sites/default


アップロードしたhtaccess.txtファイルを、ファイル名を元にもどしつつ元の場所( /var/www/html直下)へ

sudo mv -i /home/ユーザー名/htaccess.txt .htaccess

8.アップデートの実行

ついにアップデートです。この作業はコマンドラインでなく、普通のブラウザで自分のDrupalサイトにアクセスして行います。

まず、Drupalに管理アカウントでログインしていることを確認します。
そうしたらそのブラウザで

サイト名/update.php

にアクセスします。

アップデート画面に入り、いろいろきかれるのですべてOKします。

これでうまくいけばアップデート成功です。

9.ステータスレポートの確認

Drupal管理画面の
レポート > サイトの状態
をチェックしましょう。

エラーがなければ成功です。

10.ファイルの残骸を削除

最後に
先ほどダウンロードしたファイルの残骸を削除します。

インストールディレクトリ(html)に移動

cd /var/www/html

ダウンロードしたアーカイブファイルを削除

sudo rm drupal-8.5.1.tar.gz

アーカイブを展開したフォルダを削除

sudo rm -rf drupal-8.5.1/

11.メンテナンスモードを解除

すべて終わったら、もう一度「キャッシュをクリアー」してからメンテナンスモードを解除しましょう。


たぶんうまくできたはず?