Laravel Homesteadをwindows10のVirtualbox/Vagrantで構築
EC-CUBE3もDrupal8もMauticもSymfony2で、WordPressの海外テーマでphalconにも遭遇し、日本はcakephpですが、phpフレームワークの世界トレンドということで、日本一のミーハーとして、bootstrap同梱のLaravel(5.4.21)を構築してみました。英語ですが、admin panelパーツなど、トレンドが上向きなだけあってパーツ選択肢もあり、とっつきにくさは意外と小さい気がしてきました。
2017年7月か2017年8月あたりにLaravel5.5(新LTS)リリース
2017年5月1日、Laravel最新の5.4系では対応している外部パーツは少なく、5.1がLTS (long-term support)ですが、2018年5月までとなっています。5.5が2017年7月か2017年8月あたりにリリースされて新しいLTSとなります。おそらく3年だと思います。Laravel開発をするなら、5.5のタイミングに合わせて、ドキュメントが多く、コミュニティが活発なadmin panelを探すことが、開発効率の上で大切になりそう。気のせいかもしれませんが、ググると、特に異論もありませんが、『ワードプレスのダッシュボードがbootstrapになったぜ!以上!』みたいなやつばっかりの様な気がします。それでも、ワードプレスだから安いでしょ?みたいなブチ切れ要因の話は消せますね。工数が全く違う!
LTS寿命を見積に追加するべき!
LTS縛りと製品寿命の話は、ほんとに厳しい。見積はLTSサイクルを入れて利益計算しないとダメですね。理由も知らず「とりあえず値切る」クライアントなど、ますます無理。国内の開発受託は、ますます厳しくなり、自社開発リリース主体の時代が日本にも遅かれ早かれ到来しそう。ITリテラシーによる企業間格差が開くかもしれませんね。根幹はセキュリティのLTS。
Laravelの脆弱性は?
4.2.10以前でCSRFの深刻なvulnerabilityがあったようです。LaravelのDB接続はDB::connectionメソッドを使い、その裏ではPDOが走っているので、DB::connection()->getPdo();としてPDOインスタンスに接続する事も出来ます。パッチのリリースは比較的に速い様です。フレームワークとしてのLaravelを使ってコードを書く、WEBアプリ開発を行う開発者個人の脆弱性予防スキルの方がむしろ危険、という英語記事が多い様な気がします。CMSでもフレームワークでも、開発元は基本的に優秀で、オープンソースの恩恵をうけるために開発を頑張る人のセキュリティスキルが最も大事ですね。反省しかありませんw
WAFベンダーによっては、WordPressやcakephpなど、メジャーなコンポーネント向けのWAFやIPSのシグネチャアップデートやアノマリしか対応していないため、Laravelは辞めた方がいい!などの話はあるのでしょうか?
VirtualboxにLaravelのVagrant boxをインストール
ホストOSとなるWindows10にVirtualboxとVagrantを事前インストールしてください。
Host OSのWindows10で任意のフォルダを作り、そのフォルダで vagrant box add laravel/homestead の後、homesteadフォルダでbash init.shを実行、その後 /homestead/Codeディレクトリを作り、bash init.shを再実行します。
vagrant up向けの Homestead.yaml はbash init.shを実行しないと生成されない
フォルダ内をよく探すとrubyの原本ファイルらしきものがあった気がしますが、vagrant box addだけではHomestead.yamlは生成されません。Homestead.yamlの中身の各種パスは、Cygwinの場合、cygwin64が障害となたっため、フルパスを使いました。以下、Homestead.yamlです。MariDBを使う場合、以下、6行目の様に追記が必要です。foldersはホストOSとゲストOSの共有フォルダ設定です。mapにホストOS側のWindows10のフォルダ、toにゲストOSのUbuntuのディレクトリを設定します。toについては、そのまま使うことがほとんどだと思います。
vagrant-hostsupdaterには対応していない
手作業でhostsファイル追記を行い、192.168.10.10 homestead.app としました。
vagrant1.9.3ではhomesteadのvagrant upがコケる
ググるとgithubにもhomesteadのvagrant1.9.3のissueが多く、vagrant1.9.4に更新してください、とのことです。
composerによるLaravelファイルのインストール、プロジェクト作成
ゲストOS、つまり、vagrant upで立ちあげた仮想マシンにvagrant sshでログインしてから/Code/ディレクトリで、composer create-project laravel/laravel –prefer-dist Laravel にてインストール、プロジェクトディレクトリ名はlaravelにしました。/laravel/homesteadのUbuntuのVMにはcomposerが同梱されています。
Codeディレクトリは共有ディレクトリなので、ホストOSのWindows10側でも、ゲストOSの/laravel/homesteadのUbuntu側でも、必要なファイルをインストールできるので、Host OSのWindows10にcomposerを直で入れてLaravelをインストール共有ディレクトリにインストールする事も出来るのかもしれませんが、ホストOSのWindows10の中でcomposerを扱いたくないです。
仮想マシンのboot
homestead up ではなく、ホストOSのhomesteadフォルダにてvagrant upで普通に起動できました。タイムアウトでコケる場合もありますので、vagrant haltして何度かやり直す、もしくはVagranfileでconfig.vm.boot_timeout = 600 など設定を見直してください。
Laravelバージョン確認
vagrant up後、ホストOSの/homestead/フォルダでvagrant sshを実行して、ゲストOSのUbuntuにログインします。
さらに、ゲストOSでllコマンドなどを使いながら、Laravelをインストールした/home/vagrant/Code/laravelディレクトリまで移動して、php artisan –versionでバージョン確認ができます。今回は、Laravel Framework 5.4.21でした。現在地の確認はpwdコマンドで出来ます。
どこで、どのコマンドを、どのタイミングで、実行?
記事を書くとき、ホストOS?、ゲストOS?、ディレクトリはどこ?なぜそうしたの?など、整理整頓や現在地について、しっかり書きませんか?ホストOS内をきれいに保つ事に役立つと思いますし、Virtualbox/Vagrantに新しくチャレンジする方の挫折が減ると思います。
どこで、どのコマンドを、どのタイミングで、実行?という事は非常に重要です。Virtualbox/Vagrantの記事では『どこ』が抜けている記事が、個人的な経験ではwindows環境の開発者で圧倒的に多く、記事を読む人の挫折原因の様な気がします。
結果としてホストOSの中をきれいに保つことになり、クリーンインストールでゼロ(むしろマイナス)から環境構築やり直しなど、最悪のケースを減らすことに繋がると思います。
インストール後の各種設定
ゲストOSにvagrant sshでログインするか、共有ディレクトリで/home/vagrant/Code/Laravel/config/app.phpを一通り見ておきましょう。
暗号化、タイムゾーン設定、デバッグモード設定、ログ設定、サービスプロバイダー(初期処理)、Classのエイリアスなどの確認が出来ます。
※homestead、composerでLaravelをインストールしていない場合、パーミッション設定やアプリケーションキーの設定を行う必要があります。
データベース設定ファイルは、/home/vagrant/Code/Laravel/config/database.phpとなります。
/home/vagrant/Code/Laravel/routes/web.phpにて、/home/vagrant/Code/Laravel/resources/welcome.blade.phpを呼び出してデフォルトページを表示しています。
/home/vagrant/Code/Laravelでphp artisanコマンドを行うとhelp的なものがざっと見られます。phpエラー等がある場合、このphp artisanが上手く出来なくなります。