最近のお買い物(2025/01)でも触れたように、記憶が鮮明なうちにサイト移行作業について書いておきたいと思います。
このサイトは2016年の開設時からCMSとしてDrupal 7を使ってきました。当時Drupal 8もありましたがまだモジュールなどが揃っていない印象だったので7を選んだのです。
そのDrupal 7は何度かのEOL延期を経てDrupal 8よりも長生きしたのですが遂に2025年1月5にEOLを迎えました。
いずれ移行しなくてはということで2023年終わりごろよりDrupal 10を動かし始めていましたが、調べれば調べるほど単純な入れ替えは出来ず面倒なことがわかり、なかなか本番の移行に進めないでいました。待っていれば移行ツールも進歩するだろうしなどと考えているうちに忘れてしまい……
今年になってアップデート通知が「もうEOLだよん」になって思い出して慌てたのでした。
そこからサイトのお引越しに書いた計画で進めたのですが……
「3. 新サイトへのコンテンツ移行」が大変でした。
まずは内蔵のMigrate機能で移行を試みました。これはDrupal 6,7のデータベースを読んで可能なかぎり自動変換してくれるのですが、GUIから何度実行しても途中でエラーになってしまいます。変換されたものを見てみると記事の本文は変換されているようですがテーマ・カテゴリーといった分類が空っぽだったりしてこのままでは使えません。
いろいろ調べているとGUIではエラーになるよという話も出てきて、コマンドラインツールであるdrushから実行してみることにします。ただこのdrush、7時代にうまくインストールできなかったんですよね。
これまで手動インストールしていたDrupal自体も含めてPHPのパッケージツールcomposerでインストールし直すことにしました。
これでMigrateでエラーが出ることは無くなったのですが、やはり分類の移行がうまく行っていないようです。
ここでいくつかの選択肢を考え始めました。
- 本文以外は諦めて手動でデータ移行する
- 移行が容易とされるBackdrop CMSへ移行する
- 内蔵ツールを諦めてAcquia Migrate Accelerateを使用する
1.ははっきり言って最後の手段です。
2.はDrupal 7からforkしたプロジェクトらしく簡単そうに見えたのですが、うちの特殊事情が邪魔をしました。
NetBSD - Apache - PostgreSQL - PHP
PHPさえ動けばNetBSDはあまり障害にならないのですが、PostgreSQLはBackdrop CMSでサポートされていませんでした。この機会にMySQLあたりへ移行でもいいのですが、今度はデータベース間の移行方法を考えなくてはなりません。
3.も良さそうですがこれはDrupal 9にしか移行できない(9→10は容易らしいけど)・Drupal自体を入れるところからの自動ツール・これ自体を入れるためにまた何か必要なものがある・ちょっと古いPHPが必要、といった調べなくてはならないことが大量にあります。それを調べているうちにもう1.でもいいかもと思えてきまして……
分類を手動で移行するにあたってIDを元と同じにできないと大量の本文を修正する羽目になるので、任意のIDで作成できるか試したところ元のIDは使用済み扱いで続番しか使えませんでした。中途半端に移行してしまっているのかと見てみるといつの間にか移行完了しているではないですか。
何で最初は移行失敗に見えたのだろう?
もしかして一気に変換せずに裏で少しづつやっていたのか? (検索インデックスみたいに)
なにはともあれ数の多いデータ移行は出来たみたいなので、これをベースに残りは手修正で何とかしていく方法で進めることにしました。
(続く)
コメントを追加