================================================================================
Vagrant環境でのbaserCMSの利用方法
================================================================================

Vagrantを利用することで、特にサーバ設定等を行うことなく、ローカル内のVM環境で
baserCMSをテスト・開発することが出来ます。


----------------------------------------
■動作確認環境
----------------------------------------

・Vagrant 1.8.5
・VirtualBox 5.0.26
・Mac OSX 10.9

※VagrantとVirtualBoxはバージョン依存が大きいため、できる限り近いバージョンでの
　利用をお勧めします。
※Windowsでの実行も(おそらく)可能です


----------------------------------------
■準備
----------------------------------------
Vagrantfile.default ファイルを Vagrantfile にリネームします。

また、実行には「vagrant-omnibus」プラグインが必要になります。
vagrantにプラグインがインストールされていない場合は、次のコマンドを実行してください。

$ vagrant plugin install vagrant-omnibus

※basercmsリポジトリをpullした場合は、Vagrantfile.defaultの内容も確認してください。
　設定項目が追加変更されている場合があります。


----------------------------------------
■起動方法
----------------------------------------

「Vagrantfile」のあるディレクトリ内で、次のコマンドを実行してください。

$ vagrant up

※初回の実行では、自動的にVMのセットアップが行われます。この際に、ベースとなる
　VMイメージのダウンロードと必要なアプリケーションのインストール・更新が
　おこなわれるため、モバイルなどネット帯域の狭い環境ですと大変に時間が
　かかります。できる限りネット環境の良いところで実行してください。


----------------------------------------
■環境の更新方法
----------------------------------------

もしbasercmsリポジトリ内で「Vagrantfile」もしくは「vagrant_cookbooks」が
更新された場合は、次のコマンドを実行してください。

$ vagrant provision


----------------------------------------
■VM環境の操作方法
----------------------------------------

Vagrantの使い方を簡単に説明します。
詳しくはVagrantの公式サイトをご覧ください。(http://www.vagrantup.com/)

・起動
$ vagrant up

・停止
$ vagrant halt

・再起動
$ vagrant reload

・サスペンド
$ vagrant suspend

・(サスペンドからの)復帰
$ vagrant resume

・ステータス
$ vagrant status

・サーバ内にSSH接続
$ vagrant ssh

・VM環境の更新
$ vagrant provision

・VM破棄(リポジトリ内のファイルが無くなるわけではないので注意)
$ vagrant destroy


----------------------------------------
■VM環境
----------------------------------------

・CentOS 6.7
・Apache2.2
・MySQL5.5
・PostgreSQL8.4
・PHP5.6

※基本的にyumで最新バージョンがインストールされます


----------------------------------------
■パスワード関連
----------------------------------------

「vagrant ssh」内でスーパバイザになる場合や、データベースのアクセス、
baserCMSの設定には次のユーザとパスワードを利用します。
なお、初期データベースはvagrant upで作成されます。

・root
pass : vagrant

・MySQL
database : basercms
user     : root
pass     : root

・PostgreSQL
database : basercms
user     : postgres
pass     : postgres


----------------------------------------
■baserCMS等のアクセス方法
----------------------------------------

URLは下記になります。

・baserCMS
http://192.168.33.10/

・phpMyAdmin
http://192.168.33.10/phpMyAdmin/

・phpPgAdmin
http://192.168.33.10/phpPgAdmin/


----------------------------------------
■共有フォルダについて
----------------------------------------

Vagrantでは、VMとローカル側で共有フォルダを構成しており、VM内にファイルを
アップロードしなくてもリアルタイムにファイルの共有が行われています。
ローカルのカレントディレクトリ(Vagrantfileのある場所)はサーバ内では
「/vagrant」に対応しています。

※共有フォルダがマウントされない場合
　共有フォルダのマウントが失敗する場合は、VMサーバ側のvbguestがローカル側の
　virtualboxのバージョンと合っていない場合が多いです。
　この場合は「vagrant vbguest」を実行し、「vagrant reload」で再起動してください。


----------------------------------------
■Xdebugについて
----------------------------------------

Vagrant環境では、デフォルトでXdebugの設定を行っています。
NetBeans7.3/7.4での動作確認を行っています。

【NetBeansでの設定例】

◎NetBeans→Preference→PHP→デバッグ

デバッガ・ポート：9000
最初の行で停止：(お好みで)

◎ファイル→プロジェクト・プロパティ→ソース

Webルート：app/webroot

◎ファイル→プロジェクト・プロパティ→実行構成

実行方法：ローカルWebサイト(ローカルWebサーバで実行中)
プロジェクトURL：http://192.168.33.10
開始ファイル：index.php

※Xdebugが設定されている場合、非デバッグ時に実行速度が低下する場合があります。
もしXdebugを使わないのであれば「vagrant ssh」でサーバ内に入り、
「/etc/php.d/xdebug.ini」の先頭のextension設定をコメントアウトしてXdebugを
無効にしてください。


----------------------------------------
■Vagrant環境をパブリックネットワークで使いたい場合
----------------------------------------

現在のVagrant設定はプライベート環境にて動作するようになっていますが、外部
端末などからVagrant環境下にあるbaserCMSへアクセスをしたい場合はVagrantfile
内のネットワーク設定を「public_network」にする必要があります。

  # Create a private network, which allows host-only access to the machine
  # using a specific IP.
  # config.vm.network :private_network, ip: "192.168.33.10"
  config.vm.network :public_network, :ip => "192.168.0.230", :netmask => "255.255.255.0", :bridge => 'en1: Wi-Fi (AirPort)'


----------------------------------------
■注意事項
----------------------------------------

baserCMS一式を公開サーバにアップロードする場合は、必ず「Vagrantfile」
「vagrant_cookbooks/」「.vagrant/」を除外してください。

httpdに関して、毎分起動監視を行っており、サービスが停止している場合は毎回
「service httpd start」を試みます。これは初回インストール以降「vagrant up」
あるいは「vagrant reload」を行うと共有フォルダのマウントがhttpdの自動起動の
後に行われる影響でデーモンの起動エラーとなるためです。意図的にhttpdを停止
したい場合はcronを停止してください。

インストールモード時のTOP(http://192.168.33.10/)が乱れることがあります。
現象としては、JS/CSSファイルが一部欠落してしまうようです。
原因は特定できていませんが、PHPからの共有フォルダへのアクセスが間に合って
いない可能性があります。
このため暫定的に「php-pecl-apc」を外しています。必要な場合は手動で入れて
ください。
