Ubuntu 12.04 Vagrant + Laravel4+ PHP 5.4.
このリポジトリはGithubのbryannielsen/Laravel4-Vagrantの日本語フォークです。以下の変更を加えてあります。
vagrant up
時にフェッチエラーが発生時、スクリプトが正常に終了しないため、Vagrantfileでapt-get...fix-missingを実行するように追加(問い合わせに対し、作者の方が答えて下さった内容を適用しました。)- Laravelインストール時の依存の不具合を修正
- ポート番号を55555〜に修正(オリジナルで使用されているポート番号8888〜はLANAで登録済)
- 自分好みの変更を簡単に付け加えられるように、mySetup.shを追加しました。いくつかのパッケージを取り込むサンプルコードが入れてあります。if〜fiのブロック間を、アンコメントしてご利用ください。
- 一度作成した仮想マシンを再パッケージし使用する場合のサンプルVagrantfileをVagrantfile2として追加しました。
- 仮想マシンのディレクトリー以外からsuspend、Vagrantコマンドを実行するlinuxのbashスクリプトを追加しました。
ホストマシンで必要なソフトウェアです。
- VirtualBox - フリーな仮想化ソフトウェア ダウンロード
- Vagrant - Virtualbox イメージ操作ツール Vagrantトップページ Downloadボタンをクリックしてください
- Git - ソース管理 ダウンロード
- このリポジトリをクローンします。
git clone git://github.com/HiroKws/Laravel4-Vagrant.git
- 新しく生成されたディレクトリーに移動し、
vagrant up
を実行します。 - 最初に実行する時、Vagrantは仮想Boxイメージを取得する必要があります。転送速度は~300mb程度ですので、ダウンロード速度により多少の時間はかかります。
- 続いてVagrantはパペットを使い、基本的な仮想Boxに対しLAMP関係の設定をします。(数分かかります。)、それからComposerのapp中のcomposer.jsonで定義されている全てのパッケージを取得する必要がありますので、最初の準備ではもう少し時間がかかります。
- 全て上手く行ったかどうか確認するためには、ブラウザでhttp:://localhost:55555へアクセスしてください。
VagrantのBoxに関係した基本的な設定情報です。
- 55555 - Apache
- 55556 - MySQL
- 55557 - PostgreSQL
- User: root
- Password: (空白)
- DB Name: database
上記のユーザー情報で、ブラウザでhttp://localhost:55555/phpmyadminアクセスすることにより、PHPmyAdminが使用できます。
XDebugはビルドに含まれていますが、 デフォルトでは使用可能にしていません。 パフォーマンスに影響を与えるためです。
puppet/manifests/phpbase.pp
の先頭を$use_xdebug = "1"
に設定する- 続いて
vagrant up
でBoxの準備を行います。もし、既に準備済みであればvagrant provision
コマンドを使用してください。 - これで、 9001ポート でXDebugが使用できます。
XDebugツール
- SublimeXDebug - 無料のSublimeTextプラグイン
- MacGDBP - 無料のMac OSXツール
- Codebug - 有料のMac OSXツール
注目:全XDebugの設定はpuppet/modules/php/templates/php.ini.erb
の中のphp.iniテンプレートで変更可能です。
Vagrantには英語で書かれた素晴らしいドキュメント がありますが、いくつかのコマンドを紹介します。
vagrant up
仮想マシンを開始し準備するvagrant suspend
基本的にマシンを'sleep'状態にします。バックアップを利用し再開するにはvagrant resume
を使用します。vagrant halt
マシンをシャットダウンします。再開にはvagrant up
を実行します。vagrant ssh
仮想マシンへシェルアクセスします。
- OS - Ubuntu 12.04
- Apache - 2.2.22
- PHP - 5.4.17
- MySQL - 5.5.24
- PostgreSQL - 9.1
- Beanstalkd - 1.4.6
- Redis - 2.2.12
- Memcached - 1.4.13
試行錯誤の結果です。上手くupできないときは以下の方法をお試しください。
- 念の為、vagrant haltを実行(仮想マシンを停止させる)
- 念の為、vagrant destroyを実行(仮想マシンを削除する)
- 念の為、vagrant box remove precise32 virtualboxを実行(Vagrantにより保存されているPrecise32 boxをパージする)
- vagrant upを実行
mySetup.shを追加しました。Bashスクリプトです。
パペットなどの知識がなくてもVagrantは設定可能です。シェルでできることはスクリプトに記述してしまえば、そのまま実行されます。もちろん、ルート権限でです。
普通にコマンドライン操作で設定ができる方でしたら、わざわざ追加の学習コストを払わなくても、追加で行いたい操作をこのスクリプトに記述すれば、オリジナルの設定の最後に実行されますので、出来上がった仮想マシンに反映されます。
ただし、毎回実行されます。if文などで制御してください。コンポーサーのパッケージを取り込むサンプルコードを入れてあります。if〜fiブロック間をアンコメントして、ご利用ください。
Vagrantを使いこなす方であれば余計なお世話になるかも知れませんが、仮想マシンの操作をVagrantfileが存在するディレクトリー以外から実行するためのBashスクリプトを追加しています。
execinはvagrant
コマンドをそのままシェルの存在するディレクトリーで実行します。例えば/home/user/vagrant-laravelにVagrantfileが存在するならば、/home/user/vagrant-laravel/execin up
で、現在の作業ディレクトリーがどこであろうと、起動をかけることができます。
suspendはその名の通り、vagrant suspend
を実行します。前記のexecinは引数を取りますが、GUIでスクリプトを指定する場合、引数を指定できないことがあるため、suspend動作をさせるためだけのスクリプトを作成しました。コピーし、スクリプト内のコマンドを変更すれば、他のコマンドも簡単に実行できます。
ただし、suspendはBashを終了させてしまうコマンドと同名ですので、実行させるにはコマンドのパスを忘れずに指定してください。