Vagrantはプロジェクトを参加する全員に同じ開発環境を提供できる上、ホストにも汚染しない仮想技術となります。HomesteadはVagrantの上でさらに一般開発に必要なものを全部組み込んでいる特殊なVagrantとなります。人気の高いMySQL, docker, Mailhog, Rabbitmq, Golangなど、homestead.yml
を編集するだけでプロビジョニング(インストール)してくれます。削除したいときも、Vagrantイメージを削除すればホストに影響しないし、逆に再構築もvagrant up
だけでいけるので、かなり便利なツールとも言えるでしょう。
では、早速MacOSにVagrant環境構築してみましょう。
ソフトウェアのインストール
- Vagrantをダウンロードしてインストール
https://www.vagrantup.com/downloads.html
- Virtualboxをダウンロードしてインストール
https://www.virtualbox.org/wiki/Downloads
Homesteadの導入
基本的にLaravel/Homesteadに載せている手順を参照すればいいです。
VagrantボックスーーHomesteadのダウンロード
vagrant box add laravel/homestead
※はまるポイント:下記のエラーが出た場合の対策
==> box: Box file was not detected as metadata. Adding it directly...
==> box: Adding box 'laravel/homestead' (v0) for provider:
box: Downloading: https://vagrantcloud.com/laravel/homestead
An error occurred while downloading the remote file. The error
message, if any, is reproduced below. Please fix this error and try
again.
SSL certificate problem: self signed certificate in certificate chain
原因はvagrantclound.comがウイルスソフト
にブロックされることです、ウイルスソフトウェアの許可リストに追加すれば通ります。
Homesteadのインストール
Vagrantファイルを特定なフォルダに置くのが管理に良いでしょう。今回もユーザフォルダ直下のVagrant
フォルダに置きます。
mkdir ~/Vagrant
cd ~/Vagrant
git clone https://github.com/laravel/homestead.git
cd ~/Vagrant/homestead
git checkout release
bash init.sh
Homesteadの設定
Vagrantfileの代わりに、Homestead.yml
の編集となります。
具体的な設定方法ならLaravelのオフィシャルサイトを参照してください。
自分のHomestead.ymlはこちらです。
ip: "192.168.10.10"
memory: 4048
cpus: 4
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: ~/Code
to: /home/vagrant/Code
databases:
- homestead
features:
- mysql: true
- docker: true
Vagrant用のSSH Keysの生成
Vagrantの使用は初めてであれば、ログインするためのSSHキーが必要となります。
※SSHキーなしでVagrantを起動しようとすると、the path to your private key does not exist.
が表示されます。
ssh-keygen -t rsa
Enter file in which to save the key
とEnter passphrase
が聞かれると、全部デフォルトのまま(Enterキーを押す)でいいです。
Homesteadをグローバルで起動できるように設定
Homesteadを起動、ログインするために、毎回 cd ~/Vagrant/homestead
vagrant xxx
では不便でしょう。どこでもHomesteadにアクセスするように設定しましょう。
vim ~/.zshrc
下記のスクリプトを追加しましょう。
function homestead() {
( cd ~/Vagrant/homestead && vagrant $* )
}
Homesteadを起動
これからどこでもHomesteadを起動できるでしょう。
homestead up
homestead ssh
完了
~/Vagrant/homestead
の中身をプロジェクト全員に共有したら、同じ環境を簡単に構築できるでしょう。では。