LoginSignup
2
1

More than 3 years have passed since last update.

Laravelの開発環境をHomesteadで作る(Windows)

Posted at

Windows環境にてHomesteadを利用し、
PHPフレームワークLaravelの開発環境を作る手順の忘備録です。

1. 前提条件

Vagrant、VirtualBox、Gitをあらかじめインストール済。
私は下記の環境で実施しました。

ホストOS Vagrant Oracle VM VirtualBox Git for Windows
Windows 10 Home 64bit 2.2.14 6.1.16 2.27.0

2. Homestead Vagrant Boxのインストール

Gitbashを立ち上げ下記のコマンド実行します。
(以降、コマンド実行は全てGitbashからのものです)

$ vagrant box add laravel/homestead

laravel/homesteadBoxのがBoxのリストに追加されていることを確認します。

$ vagrant box list
laravel/homestead (virtualbox, 9.7.2)
laravel/homestead (virtualbox, 10.1.1)

3. Homesteadのインストール

下記のコマンドを実行し、Homesteadをホームディレクトリにインストールします。

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

公式曰く

masterブランチは常に安定しているわけではないため、
バージョンタグがついたHomesteadをチェックアウトすべきでしょう。
最新の安定バージョンは、GitHubのリリースページで見つかります。

との事なので、こちら のリリースページを参照して安定バージョンをチェックアウトします。

$ cd ~/Homestead
$ git checkout v10.17.0 // 執筆時点での最新バージョン

Homesteadフォルダ直下で下記のコマンドを実行する、もしくはHomestead直下のinit.batをダブルクリックしてHomestead.yamlを生成します。

$ bash init.sh

4. 共有フォルダの設定

先にホストPC側の共有フォルダを作っておきます。

$ mkdir ~/Homestead/code

Homestead.yamlを開き、共有フォルダを設定します。
mapはホストOSの共有フォルダのパス、toはゲストOSの共有フォルダのパスをそれぞれ表します。
Windowsの場合、なぜかfoldersのmapに相対パスが使えないため絶対パスで指定してください。

Homestead.yaml

folders:
    - map: C:\Users\Taro Tanaka\Homestead\code
      to: /home/vagrant/var/www/html

GuestAdditionsのバージョンが一致しない場合に自動で対応してくれるプラグインをインストールします。

$ vagrant plugin install vagrant-vbguest

Homestead直下のVagrantfileにホストOSとゲストOSの共有フォルダを同期するための設定を追記します。

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
    ........
    # 追記
    config.vm.synced_folder '.', '/vagrant', disabled: false
end

5. サイト設定の追加

mapのホスト名をtoのゲストOS上のディレクトリに接続する設定です。
この記事では後々ゲストOSのディレクトリvar/www/htmllara_projectという名前のLaravelプロジェクトを作る予定なので先に設定しておきます。

Homestead.yaml

sites:
    - map: homestead.test
      to: /home/vagrant/var/www/html/lara_project/public

C:\Windows\System32\drivers\etc下にあるhostファイルの最終行にHomestead.yaml中のIPアドレス・ホスト名を追記します。
編集には管理者権限が必要ですので、下記記事の方法などを用いてください。
管理者権限でメモ帳を開いてhostsを編集するコマンド

192.168.10.10 homestead.test

6. sshキーの生成

以下の通りHomestead.yamlで必要なため、
sshキーを生成していない場合は この辺 の記事を参考に~/.ssh下に公開鍵(id_rsa.pub)、秘密鍵(id_rsa)を生成しておきます。

Homestead.yaml
authorize: ~/.ssh/id_rsa.pub

keys:
    - ~/.ssh/id_rsa

7. Vagrantの起動

諸々の設定が完了したのでいよいよゲストOSを起動します。
起動し終わるまで暫くお待ちください。

$ vagrant up

起動完了した時点で http://homestead.test を開いた際、

No input file specified.

と表示されていればOKです。
(まだサイト設定した /home/vagrant/var/www/html/lara_project/public 配下にindex.phpがないのでこの表示になります)

8. Laravelプロジェクトの作成

下記のコマンドでゲストOSにログインします。

$ vagrant ssh
Welcome to Ubuntu 18.04.5 LTS (GNU/Linux 4.15.0-124-generic x86_64)

 _                               _                 _
| |                             | |               | |
| |__   ___  _ __ ___   ___  ___| |_ ___  __ _  __| |
| '_ \ / _ \| '_ ` _ \ / _ \/ __| __/ _ \/ _` |/ _` |
| | | | (_) | | | | | |  __/\__ \ ||  __/ (_| | (_| |
|_| |_|\___/|_| |_| |_|\___||___/\__\___|\__,_|\__,_|

* Homestead v10.17.0, v11.4.0
* Settler v9.7.2 (Ubuntu 18.04)
* Settler v10.1.1 (Ubuntu 20.04)

var/www/htmlディレクトリを作成し、遷移します。

$ mkdir -p var/www/html
$ cd var/www/html

lara_projectというプロジェクト名でLaravelプロジェクト作ります。

vagrant@homestead:~/var/www/html$ composer create-project laravel/laravel lara_project --prefer-dist

プロジェクト作成完了後、改めて http://homestead.test 開き、Laravelの画面が表示されていればOKです。
larave_top.png

8. データベースのマイグレーション

エクスプローラー上でC:\Users\Taro Tanaka\Homestead\codeを開くとlara_projectがsyncされているはずです…。
lara_priject直下の.envファイルのDB設定を下記のように編集します。

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=root
DB_PASSWORD=
↓
DB_CONNECTION=mysql
DB_HOST=homestead.test
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret

ユーザー:homestead と DB: homestead がデフォで作成されているため、ここではそれを使ってます。

設定変更後、ゲストOS上でマイグレーション実行して完了です。

$ cd lara_project
$ php artisan migrate

以上です、ありがとうございました。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1