開発ブログ

株式会社Nextatのスタッフがお送りする技術コラムメインのブログ。

電話でのお問合わせ 075-744-6842 ([月]-[金] 10:00〜17:00)

  1. top >
  2. 開発ブログ >
  3. CMS >
  4. baserCMS >
  5. baserCMS 3 beta を試す(Vagrant)
baserCMS 3 beta を試す(Vagrant)

baserCMS 3 beta を試す(Vagrant)

basercms3beta.png
baserCMSの開発ブログでbaserCMS 3 beta入りのVagrantのboxが配布されていたので

VagrantでbaserCMSのお手軽環境構築 | baser CMS - 国産オープンソース!フリー(無料)で『コーポレートサイトにちょうどいいCMS』

早速試してみました。

Vagrantとは?

basercms3beta_vagrant.png
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.box
box(ここでは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のディレクトリ名の先頭が大文字に変更されているのでまずはここを変更する必要があります。
basercms3beta_dir.png

この変更により、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エラーはなんとか収まりました。
basercms3beta_ss.png

※一部画像が表示されてないのはパスを決め打ちで書いていたせいです。

残りはデバッグモードにしてちまちまと検証します。

思っていたよりはスムーズに移行できそうで何よりです。


結論:公式のマイグレーションプラグインを使いましょう。
TOPに戻る