1. TOP
  2. web
  3. php
  4. laravel
  5. グローバルなHomesteadでLaravel環境構築

グローバルなHomesteadでLaravel環境構築

Homesteadの設定

Homesteadの初期化

Homesteadリポジトリをクローンしたら、Homestead.yaml設定ファイルを生成するために、bash init.shコマンドをHomesteadディレクトリで実行する。

$ bash init.sh

after.sh, aliases, Homestead.yaml の3つのファイルが新たに生成されているのを確認

初期化に続いてHomestead.yamlを編集して Homestead を設定する。

provider: virtualbox (確認のみ。初期値が同じであるため変更不要)

共有ディレクトリの設定

Homestead.yamlファイルのfoldersプロパティには、Homestead環境と共有したい全フォルダがリストされています。これらのフォルダの中のファイルが変更されると、ローカルマシンとHomestead環境との間で同期されます。必要なだけ共有フォルダを設定してください!

~/codeフォルダへ常に個別プロジェクトをマップする代わりに、別々にマップすべきでしょう。仮想マシンへあるフォルダをマップすると、そのフォルダ中のすべてのファイルによるディスクIOをトラックし続けます。これにより、フォルダの中に莫大なファイルが存在する場合に、パフォーマンスの問題が起きます。

https://readouble.com/laravel/5.8/ja/homestead.html

とりあえず3つのプロジェクトを設定しておく。(後でプロジェクト追加する場合は、Homestead.yaml に追記して、vagrant reload –provision で反映させればよい)

folders:
- map: ~/code/project01
to: /home/vagrant/code/project01

- map: ~/code/project02
to: /home/vagrant/code/project02

- map: ~/code/project03
to: /home/vagrant/code/project03

同時に、ローカルマシン側のユーザーディレクトリ直下に code フォルダを作成。

$ mkdir ~/code
$ chmod 755 ~/code

~/code の配下に各プロジェクトの共有ディレクトリを作る。これは、自動で生成されるわけではないので。
(権限は 755 $ chmod 755 ~/code)

$ cd ~/code
$ mkdir project01 project02 project03

なお、Homestead.yaml を編集したり、共有フォルダを変更した場合は vagrant reload –provision すると反映された。(vagrant up –provision では反映されない)

また、ゲストマシン側では、Homestead.yaml 変更前の古いフォルダも残っていたので、これは手動で rmdir して削除した。

laravel プロジェクトを git clone した後のエラー対応

composer install する

ビルトインサーバー立ち上げのため、

php artisan serve --host 192.168.10.10 --port 8000

ところが長々としたエラーが!

PHP Warning: require(/home/vagrant/code/dotinstall_myblog/myblog/vendor/autoload.php): failed to open stream: No such file or directory in /home/vagrant/code/dotinstall_myblog/myblog/artisan on line 18

Warning: require(/home/vagrant/code/dotinstall_myblog/myblog/vendor/autoload.php): failed to open stream: No such file or directory in /home/vagrant/code/dotinstall_myblog/myblog/artisan on line 18
PHP Fatal error: require(): Failed opening required ‘/home/vagrant/code/dotinstall_myblog/myblog/vendor/autoload.php’ (include_path=’.:/usr/share/php’) in /home/vagrant/code/dotinstall_myblog/myblog/artisan on line 18

Fatal error: require(): Failed opening required ‘/home/vagrant/code/dotinstall_myblog/myblog/vendor/autoload.php’ (include_path=’.:/usr/share/php’) in /home/vagrant/code/dotinstall_myblog/myblog/artisan on line 18

どうやら /vendor/autoload.php が見つからないことが問題。