Drupalコアのアップグレード

セキュリティアップグレードがありました。

そのため、6.13⇒6.14へアップグレードを行いました。
また、ついでに拡張モジュールのアップグレードもあわせて行いました。

コアモジュールのアップグレードは初めてだったので、備忘録をかねてその手順を記載しておきます。
 

コアモジュールのアップグレード手順

※私の環境では、ブログ用と動画用の2つのサイトをDrupalで運用しています。そのため、複数サイトのアップグレード手順になります。
※[サイト共通]と記載した作業は、個別に実施する必要がない作業です。なお[サイト個別]と記載した作業は、サイトごとに実施する必要があります。
※使用しているレンタルサーバは、さくらインターネットのレンタルサーバになりますので、一般的な方法とは異なる箇所があります。
※基本的には、コアモジュールに付属のUPGRADE.TXTの手順に従っています。
※初めてであるため確実にできる方法で実施していますので、作業効率は悪いと思います。

1.バックアップ(サイト共通)

カスタマイズしている箇所や万が一のことを考慮して、データベースとDrupalディレクトリのバックアップを取ります。

①データベースのバックアップ

cronで日次バックアップを実行しているので、特に更新していなければそのを使えばよいと思いますが、すぐに済む作業なので一応、作業直前でバックアップを取得しました。
cronで実行しているスクリプトを使うと世代管理がくるってしまう恐れがあるので、phpmyadmin2からデータベースすべてのバックアップを取得しました。
バックアップはSQLでローカルPC上に作成しました。

②Drupalディレクトリのバックアップ

最小のバックアップでよいのであれば、変更したファイルだけでよいと思いますが、把握できていない場合もあるのですべてのバックアップを取得しました。
サーバ上の使用可能容量が、すでに50%未満になっていたため、バックアップはローカルPC上に作成しました。
容量の問題で圧縮ができず、WinSCPでフォルダーごとそのままコピーを実施しました。
約6GBのサイズであったため、3時間ほどかかりました。
※アップグレード作業で一番時間がかかるのがこのバックアップ作業だと思います。2番以降の作業は慣れれば30分以内で終わると思います。

以下2~5の作業は、サイト個別作業です。

2.サイト管理者でログイン(サイト個別)

一番最初に登録したユーザ(ユーザID=1)でログインします。Drupalのインストール時に作成したユーザです。
これは、必須ではないようですがそうしたほうが良いと思います。
※これ以降の作業が完了するまで絶対にログアウトはしないでください。

3.サイトメンテナンスをオフラインにする(サイト個別)

アップデート作業中に、他の登録ユーザや匿名ユーザがアクセスできないようにサイトをメンテナンスモードに設定します。
[管理セクション]⇒[サイトの環境設定]⇒[サイトメンテナンス]にアクセスし、[オフライン]に設定します。

念のため、CRONメンテナンスタスクを自動実行しているのであれば、停止しておきます。

4.標準テーマへの変更(サイト個別)

カスタムテーマに変更している場合は、標準テーマに戻します。
標準テーマは、Garland や Bluemarineです。私は、Garlandに戻しました。
念のため、インストールしたカスタムテーマはすべて、有効のチェックをはずしました。

5.拡張モジュールの無効化(サイト個別)

[管理セクション]⇒[サイトの構築]⇒[モジュール]にアクセスします。
無効化する前に、12番の作業で元の状態にもどせるようスクリーンショットをとりました。
スクリーンショットは、Ctrl+Alt+PrintScreenでアクティブウィンドウの画像を取り込めます。
それを、ワードパットに貼り付けていきました。
1回では拡張モジュールすべてを画像で取り込めませんので、スクロールしながらすべて取れるまで繰り返します。

拡張モジュールを使用している場合は、すべて無効にします。
なお、念のためコア(必須)以外すべて無効にしました。

※依存関係があるため、一度にすべてを無効化できません。チェックをはずせるものから順番に無効化してすべて無効化できるまで繰り返します。

ここまでが、サイト個別作業になります。2番に戻り別のサイトでも実施してください。

6番を実施する前にかならず、それぞれのサイトで2~5を実施してください。

6.不要なファイルの削除(サイト共通)

Drupalコアモジュールに含まれる旧バージョン(6.13)のファイルを削除します。
上書きすれば早いと思いますが、今回は確実にということで、削除することにしました。
※何を削除するかは新しいDrupalコアモジュールに何が含まれているかとそのファイルは現行バージョンでカスタマイズしたかどうかで判断しました。

削除したフォルダおよびファイル

①miscフォルダ
②modulesフォルダ
③themesフォルダ
④profiles/defaultフォルダ(Japaneseフォルダはそのままにしました)
⑤includes以下33ファイル(6.14に存在しているファイルのみ削除しています)
actions.inc batch.inc bootstrap.inc cache.inc cache-install.inc common.inc database.inc database.mysql.inc database.mysqli.inc database.mysql-common.inc database.pgsql.inc file.inc form.inc image.gd.inc image.inc install.inc install.mysql.inc install.mysqli.inc install.pgsql.inc language.inc locale.inc mail.inc menu.inc module.inc pager.inc path.inc session.inc tablesort.inc theme.inc theme.maintenance.inc unicode.inc xmlrpc.inc xmlrpcs.inc
⑥以下6ファイル
cron.php index.php install.php robots.txt update.php xmlrpc.php
⑦以下はリネーム
.htaccess

※sitesとfiles以下は特に更新がありませんので、そのままにしています。

7.新しいバージョン(6.14)のコアモジュールをアップロード(サイト共通)

・ローカルPCでダウロードしたコアモジュールを展開します。

アップロードするフォルダおよびファイル

・以下のフォルダおよびファイルを所定の場所にアップロードします。
※6で削除したフォルダまたはファイルです。
※アップロードに使用するFTPソフトに依存しますが、同じ名前のフォルダーが存在する場合、上書きで追加してくれるのか既存フォルダを削除して置き換えてしまうのか不安でしたので、確実にするため、それぞれ個別にアップロードしました。
①miscフォルダ
②modulesフォルダ
③themesフォルダ
④profiles/defaultフォルダ
⑤includes以下すべてのファイル
⑥以下7ファイル
cron.php index.php install.php robots.txt update.php xmlrpc.php .htaccess
※sitesとfilesは更新がありませんので、アップロードしません。
※scriptsフォルダ、robots.txt以外の~.txtファイルは、そもそもアップロードする必要はありませんので除外しています。

8.カスタマイズしていたファイルを編集(サイト共通)

.htaccessをさくらインターネット用に変更していたので、⑥でリネームしたファイルを参考に編集しました。
※ファイル比較をして、カスタマイズした箇所だけ異なるのであれば、リネームしたファイルを戻すだけでよいと思います。

9.???

何をするのかわからないのでスルー

以下10~14の作業は、サイト個別作業です。

10.アップグレードの実施(サイト個別)

このままではアップグレードプログラムが実行できないので、まずupdate.phpにアクセスできるように各サイトのsettings.phpファイル内を一時的に変更します。

変更前:$update_free_access = FALSE;
変更後:$update_free_access = TRUE;

※アップグレード完了後に元に戻します。

ブラウザーに以下のURLを入力してアップグレードを実行します。
[DrupalサイトURL]/update.php
※上記変更をしてもページエラーが表示される場合は、.htaccessファイルの内容が以前と変わってしまっている可能性がありますので、再度確認してみてください。

アップグレードが完了したら、[管理セクション]⇒[リポート]⇒[現状報告]でエラーがないか確認してください。
※settings.phpファイル内の変更箇所を元に戻していないとエラーが表示されます。

11.アップグレードする拡張モジュールの導入(サイト共通またはサイト個別)

※modulesをall以下に導入している場合は、サイト共通になります。各サイトディレクトリのmodulesに導入している場合は、サイト個別になります。
アップグレード後のDrupalコアモジュールのバージョンで既存の拡張モジュールがサポートしていなければ、ここでサポートしているバージョンを導入します。
今回、バージョン6.13から6.14へのアップグレードなので通常は気にせずスルーでよいと思います。

以下の拡張モジュールを入れ替えました。※カスタマイズした既存のモジュールは念のためリネームしてバックアップを作成しておきます。それ以外は削除しました。
fckeditor-6.x-1.4
date-6.x-2.4
thickbox-6.x-1.5
views_bulk_operations-6.x-1.8

※fckeditorは、GeSHiProプラグイン用にfckeditor.config.jsをカスタマイズしていますので、リネームしたファイルを参照して編集しました。

12.拡張モジュールの有効化(サイト個別)

[管理セクション]⇒[サイトの構築]⇒[モジュール]にアクセスします。
5番の作業で作成したスクリーンショットを参照してモジュールを有効化します。
※すべて一度に有効化しても問題ありません。

画面上のupdate.phpのリンクをクリックして、拡張モジュールのアップグレードを実行します。
アップグレードが完了したら、[管理セクション]⇒[リポート]⇒[現状報告]でエラーがないか確認してください。

13.テーマの有効化(サイト個別)

[管理セクション]⇒[サイトの構築]⇒[テーマ]にアクセスします。
4番の作業で変更した場合は、元のテーマに戻します。

14.サイトメンテナンスをオンラインにする(サイト個別)

念のため、サイトのホームページにアクセスして、問題なく表示されることを確認します。
問題なければ、[管理セクション]⇒[サイトの環境設定]⇒[サイトメンテナンス]にアクセスし、[オフライン]に設定します。

3番で停止していたCRONメンテナンスタスクを自動実行されるように元に戻します。

ここまでがサイト個別作業になります。10番にもどり別のサイトでも実施してください。


以上でアップグレード作業は完了です。

文章だけだとわかりにくいかと思いますので、あわせて以下の動画も参考にしてください。
(動画はDrupalコアモジュール6.2⇒6.3へのアップグレードです)