WindowsでLaravelの開発環境を構築したかったのでメモ

WindowsでLaravelの開発環境を構築したかったのでメモ

久しぶりにwindowsのローカルのvagrant環境を使うことにしたのですが、laravel開発用の環境を一新して再構築したかったのでメモ。

vagrant-global-statusのインストール

ローカルPC内で作成したすべてのVagrantVMの状態を確認したい場合に便利そうだったのでインストール

λ vagrant plugin install vagrant-global-status

VMの状態の確認

λ vagrant global-status
id       name    provider   state   directory
------------------------------------------------------------------------
e072466  default virtualbox running C:/Users/sk88f/Desktop/vagrant

VMのID

VMの削除の実行

λ vagrant destroy e072466

BOX一覧の確認

λ vagrant box list
centos/7 (virtualbox, 1902.01)

BOXの削除

λ vagrant box remove centos/7
Removing box 'centos/7' (v1902.01) with provider 'virtualbox'...

vagrantboxには用途に合わせて様々な種類がこちらからインストールできます。

https://app.vagrantup.com/boxes/search

今回はlaravelでの開発を行いたかったので、homesteadのboxを使うことにしました。

”laravel/homestead” のboxをインストールします。

λ vagrant box add laravel/homestead

HomeStead には   PHP・MySQL・nginx など開発に必要なソフトウェアやミドルウェアがデフォルトで同梱されているため、僕の環境では15分程がかかりました。

新たにHomesteadディレクトリを作ってHomesteadリポジトリをインストール

C:\Users\sk88f\Desktop
λ git clone https://github.com/laravel/homestead.git Homestead

Homesteadディレクトリに移動して初期化する

λ cd Homestead\
λ init.bat

そのままvagrant up すると怒られました。

秘密鍵が必要だそうです。

λ vagrant up
Check your Homestead.yaml (or Homestead.json) file, the path to your private key does not exist.

秘密鍵用のフォルダ(なければ)と鍵を作成

mkdir C:\Users\XXXX\.ssh
C:\Users\sk88f\.ssh
ssh-keygen -t rsa -f id_rsa_file_name

鍵作成用のLinuxコマンド「ssh-keygen」のオプションメモ

引用元: https://euske.github.io/openssh-jman/ssh-keygen.html

-t dsa | ecdsa | ed25519 | rsa | rsa1
生成する鍵の種類を指定します。とりうる値として、プロトコル 1 で使う"rsa1"、およびプロトコル 2 で使う"dsa ,""ecdsa ,""ed25519"または"rsa"があります。


-P パスフレーズ
(古い) パスフレーズを指定します。
-p
新しく秘密鍵をつくるのではなく、すでにある秘密鍵ファイルのパスフレーズを変更します。まず秘密鍵の入っているファイルを訊かれ、古いパスフレーズを入力したあと、新しいパスワードを 2 回入力します。


-C コメント
新しいコメントを追加します。


-f ファイル名
鍵を格納するファイル名を指定します。

Homstead.yamlの修正

1.VM環境とホストOS(windows)間でファイルが転送できるように下記の通り修正

ホストファイル:C:\Windows\System32\drivers\etc

2.作成した公開鍵の場所を指定

3.作成した秘密鍵の場所を指定

4.ホストOS内のディレクトリとVM内のディレクトリで想起する場所を設定

■Homestead.yaml

---
ip: "192.168.10.10"
memory: 2048
cpus: 2
provider: virtualbox


authorize: C:\Users\sk88f\.ssh\id_rsa_qanda.pub 2.作成した公開鍵の場所を指定


keys:
    - C:\Users\sk88f\.ssh\id_rsa_qanda 3.作成した秘密鍵の場所を指定


folders:
    - map: C:\Users\sk88f\Desktop\vagrant\laravel 4.ホストOS内のディレクトリとVM内のディレクトリで想起する場所を設定
      to: /home/vagrant/code


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


databases:
    - homestead


features:
    - mariadb: false
    - ohmyzsh: false
    - webdriver: false


# ports:
#     - send: 50000
#       to: 5000
#     - send: 7777
#       to: 777
#       protocol: udp

再度vagrant up を実行

C:\Users\sk88f\Desktop\Homestead (master -> origin)                                       
λ vagrant up                                                                              
Bringing machine 'homestead' up with 'virtualbox' provider...                             
==> homestead: Checking if box 'laravel/homestead' version '8.0.1' is up to date...       
==> homestead: Clearing any previously set forwarded ports...                             
==> homestead: Clearing any previously set network interfaces...                          
==> homestead: Preparing network interfaces based on configuration...                     
    homestead: Adapter 1: nat                                                             
    homestead: Adapter 2: hostonly                                                        
==> homestead: Forwarding ports...                                                        
    homestead: 80 (guest) => 8000 (host) (adapter 1)                                      
    homestead: 443 (guest) => 44300 (host) (adapter 1)                                    
    homestead: 3306 (guest) => 33060 (host) (adapter 1)                                   
    homestead: 4040 (guest) => 4040 (host) (adapter 1)                                    
    homestead: 5432 (guest) => 54320 (host) (adapter 1)                                   
    homestead: 8025 (guest) => 8025 (host) (adapter 1)                                    
    homestead: 9600 (guest) => 9600 (host) (adapter 1)                                    
    homestead: 27017 (guest) => 27017 (host) (adapter 1)                                  
    homestead: 22 (guest) => 2222 (host) (adapter 1)                                      
==> homestead: Running 'pre-boot' VM customizations...                                    
==> homestead: Booting VM...                                                              
==> homestead: Waiting for machine to boot. This may take a few minutes...                
    homestead: SSH address: 127.0.0.1:2222                                                
    homestead: SSH username: vagrant                                                      
    homestead: SSH auth method: private key                                               
==> homestead: Machine booted and ready!                                                  
[homestead] GuestAdditions 6.0.4 running --- OK.                                          
==> homestead: Checking for guest additions in VM...                                      
==> homestead: Setting hostname...                                                        
==> homestead: Configuring and enabling network interfaces...                             
==> homestead: Mounting shared folders...                                                 
    homestead: /vagrant => C:/Users/sk88f/Desktop/Homestead                               
    homestead: /home/vagrant/code => C:/Users/sk88f/Desktop/vagrant/laravel               
==> homestead: Machine already provisioned. Run `vagrant provision` or use the `--provisio
n`                                                                                        
==> homestead: flag to force provisioning. Provisioners marked to run always will still ru
n.                                                                                        
                                                                                          

うまくいきました。

vagrant環境ににアクセス

C:\Users\sk88f\Desktop\Homestead (master -> origin)
λ vagrant ssh
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-55-generic x86_64)


Thanks for using
_                               _                 _
| |                             | |               | |
| |__   ___  _ __ ___   ___  ___| |_ ___  __ _  __| |
| '_ \ / _ \| '_ ` _ \ / _ \/ __| __/ _ \/ _` |/ _` |
| | | | (_) | | | | | |  __/\__ \ ||  __/ (_| | (_| |
|_| |_|\___/|_| |_| |_|\___||___/\__\___|\__,_|\__,_|


* Homestead v9.0.0 released
* Settler v8.0.0 released


0 packages can be updated.
0 updates are security updates.

ホストOS側で指定したパスと同期できているか確認のためディレクトリを作成してみた

vagrant@homestead:~$ cd /home/vagrant/code/
vagrant@homestead:~/code$ mkdir test

ちゃんとできてました。

アプリケーションプロジェクトを作成

vagrant@homestead:~/code$ composer create-project laravel/laravel qanda --prefer-dist

アクセスを試みましたが「No input file specified.」と表示されました。

原因はHomestead.yamlのアプリケーションパスの指定に不備がありました。

sites:
    - map: homestead.app
      to: /home/vagrant/code/publiccode/[アプリケーション名]/public

設定を反映

vagrant up --provision

正常にLaravelのTOP画面が表示されました。