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/homestead
Boxのが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
に相対パスが使えないため絶対パスで指定してください。
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/html
にlara_project
という名前のLaravelプロジェクトを作る予定なので先に設定しておきます。
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
)を生成しておきます。
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です。
8. データベースのマイグレーション
エクスプローラー上でC:\Users\Taro Tanaka\Homestead\code
を開くとlara_project
がsyncされているはずです…。
lara_priject
直下の.env
ファイルのDB設定を下記のように編集します。
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
以上です、ありがとうございました。