当サイトのbaserCMS3移設と、つまずいたポイントと
baserCMS3がリリースされて約1ヵ月。ようやくこのサイトも最新版の3.0.1に移行することができました。CakePHPのバージョンアップ+内部アーキテクチャの見直しで、WordPressのように管理画面から一発アップデートというわけにはいかず、なかなか実行に移せなかったのですが
- baserCMS 2.1系 から baserCMS3に移行する | baser CMS - 国産オープンソース!フリー(無料)で『コーポレートサイトにちょうどいいCMS』
http://basercms.net/develop/archives/86 - baserCM2.1.2から 3.0.0へ移行を試してみたよ | 我流天性 がらくた屋
http://blog.cgfm.jp/garyu/archives/3028
?二つの記事に助けられ、正月休みにががっと実行することができました。
移行作業に使った環境
以前の記事(「VagrantでbaserCMS3の動作環境を作ってみました(正式版で)」)で紹介した仮想マシンです。一応、仮想マシンのサーバ環境を示しますと
- OS……Cent OS 6.4
- ウェブサーバ……Apache 2.2.15
- PHP……5.4.23
- MySQL……5.5.35
- phpMyAdmin……4.1.3
- baserCMS……3.0.1
ここに、既存サイトの
- 管理画面-[システム管理]-[データメンテナンス]からバックアップしたデータ
- /app/webroot/files
- /app/webroot/themed/{使用中のテーマ}
をインポートしたり配置したりして作業を進めていきました。
なぜかメンテナンス画面に強制リダイレクト……
冒頭に示した情報源に沿って進めていったのですが、なぜか私の場合、バックアップしたデータを『BcDbMigrator』プラグインでマイグレーション→ダウンロード→[データメンテナンス]でインポート……したところで http://192.168.33.10/index.php/maintenance/index に強制リダイレクトされる状態になってしまいました。
(192.168.33.10 は仮想マシンのIPアドレス)
データベース名やプレフィックスに原因があるのかと、既存サイトと名前・文字列を合わせてみても結果は同じ。うーん弱ったな、ということで別のやり方を探ることにしました。
「固定ページテンプレート読込」で固定ページを移設
バックアップデータのやりとりをあきらめ、新規インストールしなおしたbaserCMSの管理画面-[固定ページ管理]-「固定ページテンプレート読込」で固定ページを移設することに。本サイトでブログを使っていないのと、「データベースと.phpファイルとで固定ページの内容を保持する」というbaserCMSの仕組みに救われた、といったところでしょうか。
ただし、下記の作業を行なう必要があります。
- 使用中のテーマがbaserCMS2用のままなので、「固定ページテンプレート読込」の前に『BcAddonMigrator』プラグインでのマイグレーションを行なう
(これは、本来の手順で移設する際も必要な作業) - 移設できるのは固定ページの内容だけなので、サイト名や説明文などの基本情報を手作業で変更する
- 「固定ページテンプレート読込」の後に「固定ページテンプレート書出」を行なう
(フロントエンドで固定ページを表示中に、ツールバーの「編集する」をクリックするとまったく別のページの編集画面が現われたので、その対処として〔環境によるのかも〕)
独自Helperが「An Internal Error Has Occurred.」を引き起こす
どうやらうまくいったっぽい……と思っていたら新たな問題が。
管理画面にログインしたままフロントエンドを表示させたときには気づかなかったのですが、何かのひょうしにシークレットウィンドウ(Google Chromeのアレですね)で表示させてみたら
An Internal Error Has Occurred.
のメッセージが。「CakePHP An Internal Error Has Occurred.」でググってみたところ、キャッシュファイルが原因であることを示す記事が多かったので、/app/tmp/cache をまるっと削除しても解決せず。ほかに、CakePHPのデバッグモードに言及している記事もあったので試してみるものの、これも解決せず。
で、テーマを切り替えながら原因を絞り込んでいくと、当サイトのテーマファイル群に問題があることが判明しました。テーマディレクトリに組み込んでいた独自のHelperが原因だったようで、Helperディレクトリごと外したら不具合が解消。今すぐ必要なHelperではないので、さしあたりこのまま運用することにしました。
そして本番環境へ。
ここまで来たら、あとは本番環境へ移設するだけです。既存サイトとは別のディレクトリにbaserCMS3を新規インストールして、仮想マシンの
- 管理画面-[システム管理]-[データメンテナンス]からバックアップしたデータ
- /app/webroot/files
- /app/webroot/themed/{使用中のテーマ}
を本番環境にアップロード。ウェブサーバのサイト定義ファイル書き換え(ドキュメントルートの変更)→サーバの再起動 で、ようやくbaserCMS3への移設が終わりました。
baserCMS3での運用開始後、しばらくして気づいたこと
ここまでの手順では、『アップローダープラグイン』を使ってサーバにあげたファイルなどのメタ情報(ファイル名やalt属性の文字列など)がデータベース内にない状態となっています。なので、ファイルの実体がサーバ上にあるにもかかわらず、アップローダー内でサムネイルを参照できません。
そのため、移設前のサイトで使われていたデータベースの中から
- pg_uploader_categories
- pg_uploader_configs
- pg_uploader_files
以上3つのテーブルを、移設先データベースにインポートする必要がありました。
ということで、当サイトにおけるbaserCMS3移設の手順を記しました。変化球気味の移設方法なので、他のかたのケースでこの方法が当てはまるかどうかはわからないことを、ご了承いただければとおもいます。