Laravel5.5の開発準備(Homestead)

Laravelで開発するにあたり、Homesteadで動作するようにする。
https://laravel.com/docs/5.5/homestead

準備

VirtualBoxのインストール
https://www.virtualbox.org/

Vagrantのインストール
https://www.vagrantup.com/

インストール後にターミナルで確認
$ vagrant --version
Vagrant 2.0.0

Vagrant Boxの追加

$ vagrant box add laravel/homestead
==> box: Successfully added box 'laravel/homestead' (v4.0.0) for 'virtualbox'!

Homesteadのインストール

HomeSteadはプロジェクト毎にインストールするようにする
$ mkdir laravel-todo
$ cd laravel-todo

composerのダウンロード

$ php -r "copy('https://getcomposer.org/composer.phar', 'composer.phar');"
$ php composer.phar --version
Composer version 1.6-dev (edece864e7e4c668dcad6601df70777882d22116) 2017-09-19 08:42:10

laravel/homesteadインストール

$ php composer.phar require laravel/homestead --dev
$ php vendor/bin/homestead make
Homestead Installed!
Homestead.yaml
Vagrantfile
after.sh
aliases
が作成される

設定ファイルの確認
$ cat Homestead.yaml
ip: 192.168.10.10
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
    - ~/.ssh/id_rsa
folders:
    -
        map: /Users/k10i/Documents/laravel-todo
        to: /home/vagrant/code
sites:
    -
        map: homestead.test
        to: /home/vagrant/code/public
databases:
    - homestead
name: laravel-todo
hostname: laravel-todo

共有フォルダの設定

VirtualBoxとの共有フォルダはデフォルトでは遅いため、NFSで設定する。
$ vi Homestead.yaml
folders:
    -
        map: /Users/k10i/Documents/laravel-todo
        to: /home/vagrant/code
        type: "nfs"
type: "nfs"を追加する

また、共有フォルダのパーミッションを設定したいため、
vagrant-bindfs
https://github.com/gael-ian/vagrant-bindfs
をインストールする。
$ vagrant plugin install vagrant-bindfs
Installed the plugin 'vagrant-bindfs (1.0.9)'!

ホストのhostsファイルへVMのipを追加
$ sudo vi /etc/hosts
192.168.10.10   homestead.test

Vagrantの起動

$ vagrant up
Check your Homestead.yaml file, the path to your private key does not exist.
上記メッセージが出て起動しない。秘密鍵(private key)が無いと言われている。

Homestead.yamlには
authorize: ~/.ssh/id_rsa.pub
keys:
    - ~/.ssh/id_rsa
に書いてあるため、ホスト側で秘密鍵を作成する
$ ssh-keygen
~/.ssh/id_rsa
~/.ssh/id_rsa.pub
が作成される

再度Vagrantの起動
$ vagrant up
今度は起動した

ブラウザからアクセスしてみる。
http://homestead.test/

No input file specified.
と表示される。

まだLaravelでプロジェクトを作っていないためDocumentRootがない。

Laravelのプロジェクトを作成

$ php composer.phar create-project --prefer-dist laravel/laravel todo
> php artisan key:generate
Application key [base64:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX] set successfully.
プロジェクト作成完了

プロジェクト毎にHomesteadを利用する場合は、1つ階層が深くなるため、DocumentRootの編集
$ vi Homestead.yaml
folders:
    -
        map: /Users/k10i/Documents/laravel-todo/todo
        to: /home/vagrant/code
        type: "nfs"
mapにLaravelプロジェクトフォルダを追加

Vagrantの再起動
$ vagrant reload
途中/etc/exportsを編集するために、パスワードが聞かれるので入力
Preparing to edit /etc/exports. Administrator privileges will be required...
Password:

起動後にブラウザで再度アクセス
http://homestead.test/

Laravelの画面が表示された。

無事に動きました:)

Homestead、Laravelの準備が完了。

LaravelとDBの連携を行なっていこうと思う。

コメント

このブログの人気の投稿

ConohaでRedmineをSSL(https)で利用する

Laravel5.5でPostgreSQLの設定(Homestead)