baserCMS 3 beta を試す(Vagrant)
baserCMSの開発ブログでbaserCMS 3 beta入りのVagrantのboxが配布されていたので
VagrantでbaserCMSのお手軽環境構築 | baser CMS - 国産オープンソース!フリー(無料)で『コーポレートサイトにちょうどいいCMS』
早速試してみました。
Vagrantとは?
Vagrantは仮想マシンの環境をまるごとboxファイルとして管理し、配布することが出来るツールです。
Vagrantを利用して開発環境を共通化することで、あっちの環境で動いたのにこちらでは動かないという悪夢から解放されます。
今回はbaserCMS 3 beta が動く環境を簡単に再現できる仮想マシンのBoxファイルが配布されています。
Vagrantのインストール(Windows)
おそらく詳しい記事がいっぱいあるので概要だけ。OracleのVirtualBoxとVagrantをそれぞれダウンロードしインストールします。
・Virtual Box
Downloads - Oracle Virtual Box
この記事を書いた時点での最新版はVirtualBox 4.3 for Windows hosts x86/amd64
・Vagrant
Vagrant - Downloads
この記事を書いた時点での最新版はv1.3.5をクリック→Vagrant_1.3.5.msi
※別の方法:手っ取り早くChocolateyでやるとこうなります
> cinst virtualbox > cinst vagrant
楽すぎて涙が。
Let's Vagrant
Boxの追加
適当なフォルダを作ってその中で作業します。> vagrant box add basercms3 http://basercms.s3-website-ap-northeast-1.amazonaws.com/vagrant_boxes/CentOS-6.4-x86_64-basercms3-beta-v20131011.boxbox(ここではbasercms3としていますが付ける名前は任意)が追加されました。
> vagrant box listでVagrantで管理しているboxを確認できます。
初期化
初期化コマンドで先ほど追加したbox を元にVagrantの設定ファイルであるVagrantfileのひな形を生成します。> vagrant init basercms3
Vagrantfileを設定
ポートフォワーディングの設定をするとhttp://localhost:8080で作成したゲストマシンにアクセスできるようになります。下記行のコメントを外して設定を有効にすればOKです。config.vm.network :forwarded_port, guest:80, host:8080
仮想マシンを起動
> vagrant up
少し時間がかかるので気長に待ちます。
ブラウザでアクセス
http://localhost:8080/basercms3/にブラウザでアクセスすればめでたくbasercms3が表示されます。
ログインページは http://localhost:8080/basercms3/admin/users/login で変わっていません。
ログインパスワードは元の記事に書いてある通り。Linux、MySQL、baserCMSのログイン情報は全て次のとおりです。 USER: root PASS: vagrant
仮想マシンへのSSHログイン
なおVagrantでは下記コマンドで仮想マシンにSSHログインもできます。> vagrant ssh初期設定では、ホストマシンのVagrantファイルをおいているディレクトリの内容と仮想マシンの /vagrant ディレクトリの中身が共有されるので、ホスト-ゲスト間でファイルを受け渡すのに便利です。
最新版への更新
basercms3のファイルは/var/www/html/basercms3に配置されています。このディレクトリ内で$ git pull origin dev-3とすれば最新版に更新できます。
※仮想マシンの終了はvagrant haltです。
初期のみ設定が必要ですが、次回以降はVagrantファイルのあるフォルダに移動してvagrant upだけで起動できます。便利!
肝心のbaserCMS3は?
見た目はほとんど変わらず。一番気になっているのはテーマの対応です。
当サイトのテーマをインポートしてみると案の定ほぼ何も表示されませんヽ(´ー`)ノ
2013/10/29 23:20追記:わざわざ手動でやらずとも公式のマイグレーション用のプラグインがありましたねorz
basercms/BcAddonMigrator - Github
テーマ・ヘルパー・プラグイン(フック除く)全てに対応しているようです。
次回試してみようと思います。
というわけで以下は参考程度に。
テーマの移行方法は大体合っていた模様。
CakePHP 1系から2系の変更点
2.0 移行ガイド - CakePHP Cookbook v2.x documentationあたりを参考にテーマに関係ありそうなところを見てみると
ディレクトリとファイルの命名規則
PHP5.3からの名前空間のサポートを受け、コーディング規約はPSR-0を採用しています。1系: スネークケース (単語を_(アンダースコア)でつなげる)ex. bc_app_helper.php
2系: アッパーキャメルケース (先頭と単語の区切りが大文字)ex. BcAppHelper.php
特にテーマフォルダの直下の各Viewのディレクトリ名の先頭が大文字に変更されているのでまずはここを変更する必要があります。
この変更により、Class名とファイル名の対応はわかりやすくなっています。
テーマの中に独自のヘルパーが含まれている場合はClass名と同じファイル名に変更することになります。
bcTwittercards.php → BcTwitterCardsHelper.php
ヘルパーの使い方
グローバル汚染を嫌ったためか、$thisを介して呼び出す仕様になっています。変数名もロワーキャメルケースからアッパーキャメルケースに変わっているので注意です。
<?php $bcBaser->title() //cake 1.x ?> <?php $this->BcBaser->title() //cake 2.x ?>
他にもヘルパー周りに変更があるんですがここはコードを書く時間がなかったので後回し。
以上を踏まえて、
・手動でテーマ直下のディレクトリ名を変更
・テーマファイルの"$bc"を"$this->Bc"に全部置換 + $blogを$this->Blogに置換 (この方法は相当穴がありそうですね)
・一旦独自ヘルパーをコメントアウト
するとトップページのPHPエラーはなんとか収まりました。
※一部画像が表示されてないのはパスを決め打ちで書いていたせいです。
思っていたよりはスムーズに移行できそうで何よりです。
結論:公式のマイグレーションプラグインを使いましょう。