My Note Pad

エンジニアリングや日々の雑感を書いていきます

VagrantでLaravelの開発環境を作った

先日、職場で「来年からPHP(Laravel)やってもらうかも」と言われたので、
少し勉強をしようと思い、まずは環境を作ってみた。

PHPといえば最近7系にメジャーバージョンアップして、色々変化があったようです。
とはいえ、ドットインストールで少しPHPをやってみた事があるくらいで、全然PHPは書けない
(やばい・・)

laravel.jp

最近はLaravel人気が高まっているらしい。

とりあえず、VagrantかDockerで環境構築できたら楽だなと思い、公式ページを見ていると、Homesteadを使うと楽にできそうだったので、試してみることにした。

Laravel Homestead - Laravel - The PHP Framework For Web Artisans

以下のソフトウェアが含まれたVagrantのBoxで簡単に環境が作れるものらしい。

手順にそってインストールしていく。

Vagrant / Virtual Boxのインストール(アップデート)

※Virtual Boxが5.1系じゃないと駄目らしく、5.0.30 + Extensionで試した所、vagrant起動時にssh key関連で止まってしまい、原因が分からなくてかなりハマった。

Before launching your Homestead environment, you must install VirtualBox 5.1, VMWare, or Parallels as well as Vagrant. All of these software packages provide easy-to-use visual installers for all popular operating systems.

vagrantのboxを追加

% vagrant box add laravel/homestead

providerを聞かれたので、2(virtualbox)を選択

==> box: Loading metadata for box 'laravel/homestead'
    box: URL: https://atlas.hashicorp.com/laravel/homestead
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) parallels
2) virtualbox
3) vmware_desktop


Enter your choice: 2
==> box: Adding box 'laravel/homestead' (v1.0.1) for provider: virtualbox
    box: Downloading: https://atlas.hashicorp.com/laravel/boxes/homestead/versions/1.0.1/providers/virtualbox.box
==> box: Successfully added box 'laravel/homestead' (v1.0.1) for 'virtualbox'!

光回線で15分くらいかかった。
※ダウンロード中に以降の手順を先に進めてしまってもok

Homesteadをホームディレクトリにclone

% cd ~
% git clone https://github.com/laravel/homestead.git Homestead

Homesteadのイニシャライズ

% cd Homestead/
% bash init.sh
Homestead initialized!

イニシャライズすると、~/.homestead/Homestead.yamlに設定ファイルが生成される

ファイルを開いて以下の点を確認した。

  • provider: virtualbox になっている
  • nfsを有効にする
    • ↓のようにtype: "nfs"を追記
provider: virtualbox

folders:
    - map: ~/Code
      to: /home/vagrant/Code
      type: "nfs"

また、vagrantのファイル共有のディレクトリが~/Codeになっているので、
それ用のディレクトリを作っておく

※ここは任意のディレクトリをfolders:のmapに指定してもok

% cd ~
% mkdir Code/

hostsの設定

/etc/hostsに以下の一行を追加する。

192.168.10.10  homestead.app

vagrantの起動

ここまで設定が終わったら、vagrantを起動する

% cd ~/Homestead/
% vagrant up

起動時のメッセージ色々

% $ vagrant status
Current machine states:

homestead-7               running (virtualbox)

The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.

Laravelのインストール

まずはvagrantssh

% vagrant ssh

※ここからはvagrant内での作業

laravelのインストール
※既に入っているよと言われたのでスキップして良さそう。

$ composer global require "laravel/installer"
Changed current directory to /home/vagrant/.composer
Using version ^1.3 for laravel/installer
./composer.json has been updated
Loading composer repositories with package information
Updating dependencies (including require-dev)
Nothing to install or update
Writing lock file
Generating autoload files

プロジェクトの作成

今回はblogというプロジェクトを作成した。

$ cd Code/
$ mkdir -p ./Laravel/public
$ cd Laravel/public/
$ laravel new blog

この状態でchromeで以下のURLを開くと

http://homestead.app/blog/public/

Laravelのページが表示された!
※自分は必要なかったが動かなければblogディレクトリの直下でphp artisan serveを実行してみる。

f:id:yuki10k:20161225193601p:plain

実際にはURLが微妙なので、~/Code直下でlaravel new blogを実行し、
~/.homestead/Homestead.yamlsitesの設定を以下のように変えてあげると
http://homestead.app/でアクセスできるはずなのでその方が良さそう。

sites:
    - map: homestead.app
      to: /home/vagrant/Code/blog/public

その他

vagrant/home/vagrant/Code/ディレクトリとホスト(mac)の/Users/${user name}/Codeディレクトリはnfsでマウントされているので、ホスト側でコードを編集すれば、すぐに反映される。

<?php
  echo "hogehoge!";
?>

f:id:yuki10k:20161225194542p:plain

なので、PhpStormやAtomなどでもそのまま開発ができそう。

環境作りで色々ハマって疲れたのでLaravelの学習はまた今度・・・