Drupal5からDrupal6へアップグレード

これはなかなか大変な作業になります。今まで何度かトライして、自分的にも、漸く初めて成功しました。

データベースの大幅な更新を伴ない、サイト自体の全面的な変更を行うことになるので、コンテンツ自体は残して、サイト全体のリニューアルといった場合のみ行うべきものだと思います。

逆にいうと、今後とも長期にサイトの運用を継続し、Drupal6やDrupal7の機能が必要になると見込まれる場合は、避けられない作業になると言えるかも知れません。

基本的な作業の流れはこちらにありますが、これ以外にもテストサイトの構築とviews2と新規テーマ作成による出力設定のやり直しが必要になるはずです。

  1. まず、運用中のDrupal5サイトの追加モジュールに該当するDrupal6モジュールが配布されているかどうかを確認し、なければその機能を代替するモジュールがあるかを検討します。
  2. 運用中のDrupal5サイトのファイルとデータベースのバックアップを取り、Coreと全ての追加モジュールを最新状態にアップデートします。Drupal5ではDrupal6にあるupdate機能がないので、入っていない場合は、Update Statusモジュールをインストールし、全てが最新状態になっているかを確認します。但しこのモジュールはDrupal6へ移行の際、必ず完全にモジュールのアンインストールを行う必要があります。
  3. 次にテストサイトを構築し、全てのファイルとデータベースをコピーします。テストサイトは運用中のサイトのサブドメインで設置すると、ディレクトリの階層構造が同じになり、画像ファイルやリンク先の読み込みができ便利です。
  4. ここからはすべてテストサイトでの作業になります。全ての権限を持つ最初に設定した管理ユーザーでログインし、サイトをメンテナンス状態にし、デフォルトテーマに変更し、全ての追加モジュールをオフにします。上述のように、Update Statusモジュールはオフにするだけでなく、アンインストールします。
  5. 最近のログをチェックしエラーがでていないか確認し、エラーが出ている場合は、Drupal.org等を参考に必要な対処を行います。
  6. この時点で再度、全てのファイルとデータベースのバックアップを取っておくと、この後の作業で問題が生じた場合、作業のやり直しが便利になります。
  7. 全てのDrupal5ファイルを削除し、最新バージョンのDrupal6の展開したファイルをアップロードします。
  8. Drupal5のバックアップからSitesとFilesのディレクトリを元の位置にアップロードし、パーミッションを設定します。
  9. PHPのcgiモード等、.htaccessを変更している場合は、Drupal6の.htaccessファイルにその変更を追加し、php.ini等ルートディレトリに追加したファイルをアップロードします。
  10. update.phpを走らせ、データベースを最新構造にします。
  11. Drupal6の追加モジュールの各最新版をアップロードし、有効化し、再度update.phpを走らせます。
  12. 10-11の段階で、たぶんエラーが発生すると思います。エラーメッセージをよく見て、drupal.orgで対処方法を探すことになります。自分の場合、 webformのデータベースが更新されないようだったので、webformのノードを削除したりしました。safemode云々のエラーメッセージも出たきたのですが、何度か繰り返しているうちに出なくなり、CCKのフィールドやタクソノミー等もきっちり移行できていたので、たぶん問題なさそうです。
  13. テストサイトなので、ここら辺で、サイトをメンテナンス状態から通常に戻しておきましょう。SEO的にはサイト自体をアクセス制限して検索エンジンのテストサイトへのクロールを遮断しておいた方がいいかも知れません。
  14. 出力の核であるviewsはviews1からviews2になるので、Drupal6ではこれまでのviewは使えません。移行ツールもあるようですが、自分の場合上手くいきませんでした。コンテンツと異なりviewsが何10個もある場合は少ないと思います。ここはこれまでのviewはあきらめ、views2で新たに作り直すのが得策だと思います。
  15. テーマを作ります。Drupal5の時のテーマが使えるかも知れませんが、viewも作り直したくらいですから、テーマも最初から作り直した方が早いと思います。
  16. テストサイトを元のDrupal5サイトのドメインと置き換えます。

以上、かなり大変な作業になりますが、やる価値のある作業だと思います。