Laravel環境構築 VirtualBox＋vagrant　Homestead

VirtualBox＋vagrantのHomesteadで、Laravel環境構築を行う際に、
困ったことがあったため、自身のメモとして投稿する。

# 環境
* OS : windows11 pro
* VirtualBox (5.2.44)
* vagrant (2.2.5)

# 困った点
### Homestead.yamlの編集
```
ip: "192.168.56.56"　　#前回作ったHomesteadなどとかぶらないIPの方が良い
memory: 2048
cpus: 2
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub　← ⓵

keys:
    - ~/.ssh/id_rsa　← ⓵

folders:
    - map: C:¥Users¥ユーザ名¥Documents¥laravel　← ⓶
      to: /home/vagrant/code
   
sites:
    - map: homestead.test
      to: /home/vagrant/code/myapp/public ← ⓷

databases:
    - homestead

features:
    - mysql: true
    - mariadb: false
    - postgresql: false
    - ohmyzsh: false
    - webdriver: false

services:
    - enabled:
          - "mysql"
#    - disabled:
#        - "postgresql@11-main"

#ports:
#    - send: 33060 # MySQL/MariaDB
#      to: 3306
#    - send: 4040
#      to: 4040
#    - send: 54320 # PostgreSQL
#      to: 5432
#    - send: 8025 # Mailhog
#      to: 8025
#    - send: 9600
#      to: 9600
#    - send: 27017
#      to: 27017
```


①　SSHのディレクトリ格納場所の記載
```
authorize: ~/.ssh/id_rsa.pub　←SSH公開鍵ファイルの格納場所を指定

keys:
    - ~/.ssh/id_rsa　SSH秘密鍵ファイルの格納場所を指定
 ```
※ ターミナル（ssh-keygen -t rsa）で、SSH鍵を作成した場合は、上記のパスでOK。
　 保存先が異なる場合は、格納場所のパスを書く

②　Foldersの設定
```
folders:
    - map: C:\Users\ユーザ\Laravel　←③ローカルの開発ディレクトリを指定
      to: /home/vagrant/code
```
※ 共有フォルダの指定
   map:ホストOS側のディレクトリ
   to:ゲストOS側のディレクトリ

③　sitesの設定
```
sites:
    - map: homestead.test
      to: /home/vagrant/code/myapp/public ←⑤myappは後々の作業で作成するプロジェクト名
```
ホスト名hometead.testでアクセスしたときにtoに記載した仮想マシンのディレクトリを参照。
※ to：/home/vagrant/code/myapp/public 
myappの部分は、以下のcomposer create-projectで、作成する任意のディレクトリ名。
```
composer create-project --prefer-dist laravel/laravel myapp
```
### vargrant up 時のエラー
「homestead: SSH auth method: private key」で動かなくなり、以下のエラーメッセージ表示される。
```
Timed out while waiting for the machine to boot. This means that Vagrant was unable to communicate with the guest machine within the configured ("config.vm.boot_timeout" value) time period.
bcdedit

If you look above, you should be able to see the error(s) that Vagrant had when attempting to connect to the machine. These errors are usually good hints as to what may be wrong. 

If you're using a custom box, make sure that networking is properly working and you're able to connect to the machine. It is a common problem that networking isn't setup properly in these boxes. Verify that authentication configurations are also setup properly, as well. 

If the box appears to be booting properly, you may want to increase the timeout ("config.vm.boot_timeout") value.
```
Hyper-Vが有効化になっていたのを無効化することでエラーが解消される
コマンドの実行方法
コマンドプロンプト（**管理者権限**）にて
```
bcdedit /set hypervisorlaunchtype off
```
を実行する。
```bcdedit```　で確認すると
```
hypervisorlaunchtype  Off
```
となっているので、Hyper-Vが無効になっている。
これで、再度、vagrant upすると正常に動く。

### Homestead.ymlの変更を反映するコマンド
Homestead.yamlを修正したら、Homesteadディレクトリ配下で以下のコマンドを実行すると変更を反映できる
```
vagrant reload --provision
```
### /home/vagrantにcodeディレクトリが存在しない場合
```
folders:
 - map: C:\Users\ユーザ\Laravel
    to: /home/vagrant/code
```
修正した場合、
```vagrant up```
```vagrant reload --provision```
上記のコマンドで、通常であればHomestead.ymlの中身が反映され
/home/vagrant/codeディレクトリが作成されるはずだが作成されない場合は、
mkdirを使用して、
/home/vagrant/配下にcodeディレクトリを作成する

その後、```vagrant ssh```コマンドで仮想環境へログイン

```vagrant@homestead:~$ cd code```で、codeディレクトリに移動

laravelのプロジェクトを作成。
```
vagrant@homestead:~/code$ composer create-project --prefer-dist laravel/laravel myapp(任意のプロジェクト名)
```
### IPアドレス転送設定
C:\Windows\System32\drivers\etc\hostsのhostsファイルに
```
192.168.56.56　homestead.test
```
IPアドレス、ホスト名ともに、Homestead.yamlで設定した値を設定。
これで、laravelのデフォルトサイトが表示される
※	Hostsファイルの編集は**管理者権限**が必要。

### vagrantコマンド
**現状確認**
```
vagrant status
```
**シャットダウン**
```
vagrant halt
```

# 参考文献
* http://androidroid.info/laravel-homestead-install/
* https://readouble.com/laravel/8.x/ja/homestead.html#:~:text=Laravel%20Homestead%E3%81%AF%E3%80%81PHP%E3%80%81Web,%E3%83%91%E3%83%83%E3%82%B1%E3%83%BC%E3%82%B8%E6%B8%88%E3%81%BFVagrant%E3%83%9C%E3%83%83%E3%82%AF%E3%82%B9%E3%81%A7%E3%81%99%E3%80%82
* https://qiita.com/7968/items/97dd634608f37892b18a#step-1vagrant-%E3%81%A8-virtualbox-%E3%81%AE%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89%E3%81%A8%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB
* https://qiita.com/y_UM4/items/2148621adeb1336d28df
* https://turningp.jp/programing/php/laravel/homestead-ssh_error