VagrantでbaserCMS3の動作環境を作ってみました(正式版で)
仮想化ソフトの一つである『VirtualBox』と、VirtualBoxを使った開発環境構築を支援してくれる『Vagrant』。以前の記事「VagrantでbaserCMS3の動作環境を作ってみました(ただし発展途上)」で、baserCMSのサイト制作でも、最近注目を集めているこれらのツールを使えることを紹介しました。
記事執筆時はベータ版だったbaserCMS3も正式リリースされ、リポジトリ(GitHub)にVagrantfile(=仮想環境を構築するための定義ファイル)が含まれるようになったので、改めて、正式版でbaserCMSに特化した仮想環境をととのえてみました。
ホスト側は下記のような環境です。ほかのOSをお使いの方は、ディレクトリ名など適宜読み替えてくださいね。VirtualBoxやVagrantのインストールについては、別ブログの記事にまとめましたので、よろしければ参照してみてください。
- OS……MacBook Air(Mid2013)のBoot Camp環境で動作するWindows 7 Professional(64bit)
- VirtualBox……4.2.18
- Vagrant……1.3.5
まずは、GitHubにあるbaserCMSのリポジトリをホスト側にもってくるところから。
私の場合、ホストPC(Windows)でgitをインストールしていないので、リポジトリをZIPファイルにしたものを手元にダウンロードしました。もちろん、お使いのPCにてgitが使えるようになっていれば
git clone https://github.com/basercms/basercms.git
といったコマンドでクローンすればOKかとおもいます。なお、baserCMSの公式サイトで配布されているbaserCMS一式(ZIPファイル)にはVagrant関連のファイルが含まれていないので注意してください。
さて、ダウンロードした basercms-master.zip をCドライブの直下に展開し、とりあえず、フォルダ名を basercms-master から basercms にリネームしました。ここから、コマンドプロンプトに入って作業をしていきます。
Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\foo>cd \basercms C:\basercms>vagrant up Bringing machine 'default' up with 'virtualbox' provider... [default] Importing base box 'centos-6.4_x64'... [default] Matching MAC address for NAT networking... [default] Setting the name of the VM... [default] Clearing any previously set forwarded ports... [default] Creating shared folders metadata... [default] Clearing any previously set network interfaces... [default] Preparing network interfaces based on configuration... [default] Forwarding ports... [default] -- 22 => 2222 (adapter 1)
といったメッセージとともに、CentOSベースの開発環境がセットアップされていきます。待つこと約15分
[2013-12-28T13:55:47+00:00] INFO: service[postgresql] restarted [2013-12-28T13:55:47+00:00] INFO: template[/etc/php.ini] sending reload action t o service[httpd] (delayed) [2013-12-28T13:55:47+00:00] INFO: service[httpd] reloaded [2013-12-28T13:55:47+00:00] INFO: Chef Run complete in 930.97046802 seconds [2013-12-28T13:55:47+00:00] INFO: Running report handlers [2013-12-28T13:55:47+00:00] INFO: Report handlers complete [default] Checking for host entries C:\basercms>
とプロンプトが返ってきて、無事、Windowsマシン内に仮想環境が構築されました。
この状態ではbaserCMSがインストールされていないので、C:\basercms\vagrant_cookbooks\readme.txt の記述に沿って http://192.168.33.10/ にアクセス。いつものインストール画面がお出迎えしてくれます。
baserCMSのファイル一式は
- ホスト側(Windows)……C:\basercms
- ゲスト側(CentOS)……/vagrant
で共有されています。テーマファイルなどのファイル更新・追加が同時にゲスト側にも反映されるので、使い慣れたテキストエディタなどでがしがしカスタマイズしていけるのがいいですね。
ちなみにこの仮想環境、デフォルトの状態では外部にメールを送ることができません(baserCMSインストール完了のお知らせメールも届かなかったかとおもいます)。仮想環境に含まれているメールサーバ『Postfix』に相応の設定をしないといけないのですが、その一例を別ブログにまとめてあるので、これまたよろしければご参照ください。記事では、私が契約しているプロバイダ(@nifty)のメールサーバを中継して外部へメール送信する方法を紹介しています。
ちなみに、記事にあるような認証方式(CRAM-MD5)を利用する場合、baserCMSの仮想環境では『cyrus-sasl-md5』パッケージをインストールする必要があるようです。仮想環境にて
sudo yum update sudo yum -y install cyrus-sasl-md5
を実行してパッケージをインストールしてください。
『Postfix』まわりの諸設定がおわったら
sudo service postfix reload
で設定を反映させたうえで、サイト内のお問い合せフォームからテストメールを送って確認してみましょう。
[2014.3.18追記]
今日時点で、Vagrantで構築した動作環境ではbaserCMS3のスマートURLがききません。ウェブサーバの設定ファイル(httpd.conf)が、スマートURLの動作に必要な .htaccess の設定を許可しないようになっているからです。
Vagrant環境でスマートURLを有効化したいときは、 /vagrant_cookbooks/httpd/templates/default/httpd.conf.erb を下のように編集したうえで vagrant up を実行するとよいでしょう。
# # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # - AllowOverride None + AllowOverride All # # Controls who can get stuff from this server. # Order allow,deny Allow from all </Directory>
かくいう私も、以前これでハマったことがあったにもかかわらず、新たにVagrant環境を作る段になってまたハマりました……上記の変更を加えてGitHubのリポジトリにプルリクエストを送ったので、問題なければマージされるかとおもいます。
[2014.4.8追記]
マージされました。
[2014.3.25追記]
Vagrantの環境でサイトの構築を進めていると、CSSやJavaScriptなど静的ファイルの編集結果がサイトに反映されないケースがあります。はじめのうちは、CakePHPのキャッシュ機能によるものかとあれこれ試行錯誤していたものの、どうやらこれはハズレの模様。
「vagrant css cache」といったワードで検索すると解決策が出てきますが、仮想マシン内で稼働するApacheの設定が原因でした。Vagrantの導入時につくられるホスト・ゲスト間の共有フォルダ内でテーマファイルをつくっていくと、Apacheがその編集結果を検知しない場合があるのだそうです。
ということで、仮想マシンの /etc/httpd/conf/httpd.conf を開いて下のように追記します。
<Directory "/vagrant"> # # Possible values for the Options directive are "None", "All", # or any combination of: # Indexes Includes FollowSymLinks SymLinksifOwnerMatch ExecCGI MultiViews # # Note that "MultiViews" must be named *explicitly* --- "Options All" # doesn't give it to you. # # The Options directive is both complicated and important. Please see # http://httpd.apache.org/docs/2.2/mod/core.html#options # for more information. # Options -Indexes FollowSymLinks # # AllowOverride controls what directives may be placed in .htaccess files. # It can be "All", "None", or any combination of the keywords: # Options FileInfo AuthConfig Limit # AllowOverride All # # Controls who can get stuff from this server. # Order allow,deny Allow from all + EnableSendfile Off + EnableMMAP Off + </Directory>
httpd.conf に追記できたら
sudo /etc/init.d/httpd reload
でApacheをリロードしましょう。
詳しくはApacheのドキュメント「Apache コア機能」をご参照ください。
[2014.4.13追記]
静的ファイルの更新が反映されない件も /vagrant_cookbooks/httpd/templates/default/httpd.conf.erb に取り込まれました。