Laravelエキスパート養成読本を読みました

Laravel始めたい

PHPのフレームワークの「Laravel」について勉強したいと思い『Laravelエキスパート養成読本』を購入しました。

 

保守中システムのために。。

現在、携わらせて頂いているシステムは開発元会社の独自フレームワークで構築されており、開発元会社とは連絡が付かない状況で機能追加などの開発効率が悪く頭を悩ませています。(独自フレームワークが悪い、というわけではないです。)

早速読んでいく

Laravelについての紹介に続き、サンプルアプリケーションのソースコードに沿ってLaravelでの開発について学ぶ章があったので、早速手環境を準備します。

 

環境構築

ローカル(Mac Book Air)にLaravel環境を構築するにあたり、書籍ではいろいろな環境が紹介されていたのですが、特に指定の環境がなかったのでVirtualBox + Vagrantで構築することにしました。

サンプルアプリケーションは、Laravel4で実装されているとのことなのでその環境に適したものはないかと探していたらドンピシャでLaravel4-Vagrantを見つけました。

ありがたいことに日本語化して下さっているリポジトリも見つけました。

さっそく作業していきます。

Laravel4-Vagrantをクローン

$ git clone git://github.com/HiroKws/Laravel4-Vagrant.git

クローンしたディレクトリに移動

$ cd Laravel4-Vagrant/

仮想マシン起動

$ vagrant up

立ち上がらない

 Bringing machine 'laravel4' up with 'virtualbox' provider...
 ==> laravel4: Box 'precise32' could not be found. Attempting to find and install...
 laravel4: Box Provider: virtualbox
 laravel4: Box Version: >= 0
 ==> laravel4: Adding box 'precise32' (v0) for provider: virtualbox
 laravel4: Downloading: http://files.vagrantup.com/precise32.box
 ==> laravel4: Successfully added box 'precise32' (v0) for 'virtualbox'!
 There are errors in the configuration of this machine. Please fix
 the following errors and try again:

vm:
 * The 'extra' flag on synced folders is now 'mount_options'

Vagrantのバージョン1.3.5からは同期フォルダのオプションはextraじゃなくてmount_optionにするみたい。

参考:Vagrant1.3.5ではconfig.vm.synced_folderのパーミッションをmount_optionsで設定する

ということで、ForkしてきてVagrantfileを書き換えました

 - lv4_config.vm.share_folder("www", "/var/www", "./www", :extra => 'dmode=777,fmode=777')
 + lv4_config.vm.share_folder("www", "/var/www", "./www", mount_options: ["dmode=777", "fmode=777"])

もう一度!仮想マシン起動

$ vagrant up

仮想マシン無事起動した。

サンプルアプリケーションをダウンロード

https://github.com/jumilla/l4-sample-todo/archive/master.zip

解凍して、中身を仮想マシンのWebルートにコピー

/var/www

仮想マシンにログイン

$ vagrant ssh

Webルートに移動

$ cd /var/www/

コンポーザーから依存パッケージを取得

$ sudo composer update

DBの接続情報を変更する

/var/www/app/config/database.php
'mysql' => array(
     'driver' => 'mysql',
     'host' => 'localhost:55556',
     'database' => 'database',
     'username' => 'root',
     'password' => '',
     'charset' => 'utf8',
     'collation' => 'utf8_unicode_ci',
     'prefix' => '',
 ),

Laravel4-VagrantのDB接続情報と初期データベース「database」を記述しておいた。

サンプルアプリケーションが使うテーブルがないのでアルチザンでマイグレート

$ php artisan migrate

http://localhost:55555にアクセス

スクリーンショット 2015-05-14 18.29.48

ちゃんと表示されました!

さー続き読んでいきます。