2013年11月10日日曜日

VagrantでFuelPHPを立ち上げるまでにしたこと

備忘録。

最近、少しずつさわっているVagrantでFuelPHPが動くようにするまでにしたことを。

バージョン情報
・Vagrant(1.3.5)
・Chef(11.8)


Vagrant+Chefのインストールのでインストールは以下のサイトを参考にしました。



とりあえずVagrantの立ち上げ
box を http://www.vagrantbox.es/からダウンロードして任意のディレクトリでinitします。
$ vagrant box centos64-minimal http://developer.nrel.gov/downloads/vagrant-boxes/CentOS-6.4-x86_64-v20130731.box

$ mkdir fuelphp
$ cd fuelphp
$ vagrant init centos64


initで生成されたVagrantfileにとりあえずプライベートIPの設定をしておきます。
$ vi Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos64-minimal"
  config.vm.network :private_network, ip: "192.168.33.10"
end

これで vagrant up します。
$ vagrant up
Bringing machine 'default' p with 'virtualbox' provider...
[default] Clearing any previously set forwarded ports...
[defualt] Creating shared folders metadata...
[default] Clearing any previously set network interfaces...
[default] Preparing network interfaces based on configuration...
[default] Forwarding posts...
[defualt] -- 22 => 2222 (adapter 1)
[default] Booting VM...
[default] Waiting for machine to boot. This may take a few minutes...
[default] Machine booted and ready!
[default] Configuring and enabling network interfaces...
[default] Mounting shared folders...
[default] -- /vagrant

正常に動いたらvagrant sshでつながることを確認しておきます。
(Windowsの場合は Tera Term とかで192.168.33.10に接続できればok)

次にapache、php、mysqlのインストールをするためにrecipeを作ります。
$ mkdir cookbooks
$ cd cookbooks
$ git clone https://github.com/hayashida/httpd-php.git
$ git clone https://github.com/hayashida/mysql-server.git

recipeを全部書いていたら長くなりそうなので簡単に作ったものをgithubに。
設定していることは
・apacheのドキュメントルートを/var/www/html から /vagrant/public に変更
くらいです。
(FuelPHPのディレクトリ構成上、publicがウェブのルートになるので)

それを使ってrecipeを実行します。
$ cd ..
$ vi Vagrantfile
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
  config.vm.box = "centos64-minimal"
  config.vm.network :private_network, ip: "192.168.33.10"
  config.vm.provision :chef_solo do |chef|
    chef.cookbooks_path = "./cookbooks"
    chef.add_recipe "httpd-php"
    chef.add_recipe "mysql-server"
  end
end

$ vagrant reload

$ vagrant provision

これでapache、php、mysqlのインストールが完了。

http://192.168.33.10/にアクセスしてページが表示されればOK。
phpinfo()などを実行するとPHPがインストールできていることも確認できます。
$ touch ./public/phpinfo.php
$ vi ./public/phpinfo.php
<?php
    phpinfo();

さて、本題のFuelPHP。
これもrecipeを使って・・・としたかったんですがまだそこまではできていないです。
とりあえずFuelPHPをダウンロードしてきてVagrantfileがあるディレクトリに展開します。
fuelphp
    + .vagrant
    + cookbooks
    + docs
    + fuel
    + public
    + CHANGELOG.md
    + composer.json
    + composer.phar
    + CONTRIBUTING.md
    + LICENSE.md
    + oil
    + README.md
    + TESTING.md
    + Vagrantfile

あとは、vagrant ssh でゲストOSにログインしていつもの手順どおり
php composer.phar update や php oil refine install を実行すると画面が立ち上がります。
このプロジェクトをgitなどでバージョン管理して開発メンバーで共有するとメンバー間での環境の違いで悩まされなくなります。
(.vagrantはバージョン管理から除外した方がいいみたい)


Vagrant + Windows の環境ではこれで問題なく動きますが
Vagrant + Mac で開発する場合は、権限関係で動かないところがあるようで
app/tmpやapp/logsなど、php oil refine installで権限を変更している箇所を0777などにしておかないと動かないみたい。

やり方が間違っているのかもしれないけど何かいい方法がないか模索中・・・。