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. バックアップをとる
- 2. サイトをメンテナンスモードに
- 3. 手動で設定したファイルをバックアップ
- 4.「core」「vendor」ディレクトリとトップレベルディレクトリ内のファイルを削除
- 5.deault.settings.phpに変更がある場合(リリースノートで確認)
- 6.新しいコアのダウンロード
- 7.手動でバックアップしたファイルを戻す
- 8.アップデートの実行
- 9.ステータスレポートの確認
- 10.ファイルの残骸を削除
- 11.メンテナンスモードを解除
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.メンテナンスモードを解除
すべて終わったら、もう一度「キャッシュをクリアー」してからメンテナンスモードを解除しましょう。
たぶんうまくできたはず?