twitterよりちょっと長いの

せっかくだから書き残すよ。

Windows 10にHomesteadを入れて動かすまでの話

前回の記事で「Laravelを使うためにWindows環境にPHP、composer、SQLiteとLaravelを全て揃えにゃならんくて辛かった」という話をした。一つずつインストールするのが面倒くさいのだ。

さて、それを解決する方法として全部入りパッケージこと"Homestead"というものがある。これさえ入れれば、直ぐにLaravelを使うことができる。エレガントな手段だ。

今回はWindows 10上にHomesteadを入れてLaravelを動かした。
これはその記録である。

ドキュメント

まず、Homesteadのドキュメントとしては以下のものがある。ありがたいことに日本語で説明してれているものもある。今回はそちらを参照しながら進めた。

2つの導入方法

早速なのだが、Homesteadの導入方法は2つある。

  1. 個人環境にインストールする方法
  2. プロジェクトごとにインストールする方法

前者は個人環境にインストールして複数プロジェクトで1つのHomesteadを使いまわす感じだ。この場合、プロジェクトをコピーした後に各々で設定をする必要がある。

一方、後者はプロジェクトごとにインストールすることでプロジェクトをコピーした先で容易に同じ環境を作れる。

ただ、それぞれの方法で動かすためにはPCにある程度ソフトを入れておく必要がある。必要なのはそれぞれ以下のものだ。(間違ってたら指摘が欲しい)

  1. 個人環境にインストールする方法
  2. プロジェクトごとにインストールする方法

「個人環境にインストールする方法」のほうがプロジェクトの可搬性は低いが、環境に入れるものが少なくて良いと思った。今回は個人環境にインストールしていく。

前準備

方法さえ決まってしまえば、後は楽である。ただ、ダウンロードとかに時間がかかるので、その辺は注意。
1. VirtualBoxを入れる
2. Vagrantを入れる
3. コマンドプロンプトから以下のコマンドでVagrantへboxを追加

$ vagrant box add laravel/homestead

4. Homesteadをcloneしてくる

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

5. versionを固定(安定版はここで調べる)

$ cd ~/Homestead
$ git checkout v7.18.0

Homesteadの設定は"Homestead/Homestead.yaml"に書かれている。起動する前にproviderの項目が自分が使う環境と一致しているか確認する。違ったら書き直す。

provider: virtualbox

次からHomesteadを起動していく。

起動

vagrant upして起動する。
が、以下のように怒られる。秘密鍵(~/.ssh/id_rsa)がないらしい。”Homestead.yaml”を見ると必要になることが分かる。

$ cd ~/Homestead
$ vagrant up
Check your Homestead.yaml file, the path to your private key does not exist.

Git Bashがあったので、それで秘密鍵を作る。

$ ssh-keygen

もう一度、vagrant up。いけた。
これで一応は動くようになった。

基本的にHomesteadの操作はHomesteadのディレクトリで行う。ただ、プロジェクトをいじり始めると他のディレクトリからも操作したくなる。一々、"~/Homestead”に戻ってきたくないのだ。

そこで、以下のエイリアスを追加しておこう。どこからでも"homestead up"みたいな感じでvagrantコマンドを呼び出せるようになる。

alias homestead='function __homestead() { (cd ~/Homestead && vagrant $*); unset -f __homestead; }; __homestead'

プロジェクトで使えるようにする

まず、ホスト側でプロジェクトのディレクトリを作る。

$ mkdir simple_blog

Vagrantの機能でディレクトリを共有している。共有するディレクトリは”Homestead.yaml”のfoldersの項目に書いてある。自分の環境に合わせてパスを書き直す。ここでWindowsユーザはパスの指定方法を気を付けたほうがいい。私は躓いた。

folders:
    - map: C:\Users\*****\workspace\simple_blog
      to: /home/vagrant/code

Vagrantを再起動する。

$ homestead reload --provision
(省略)
==> homestead-7: Setting hostname...
==> homestead-7: Configuring and enabling network interfaces...
==> homestead-7: Mounting shared folders...
    homestead-7: /vagrant => C:/Users/*****/Homestead
    homestead-7: /home/vagrant/code => C:/Users/ainR0/workspace/simple_blog
==> homestead-7: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> homestead-7: flag to force provisioning. Provisioners marked to run always will still run.

ログを見るとディレクトリの関連付けができていることが分かる。このときVagrant内の"/home/vagrant/code"(動機指定したディレクトリ)は自動的に作られていた。

Laravelをプロジェクト内に導入

Vagrant内でcomposerを使って導入する。(今更ながらcomposerにしてもMySQLにしてもVagrant内で操作する)

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

インストール後、ホスト側のブラウザで"192.168.10.10"にアクセス。Laravelの例のページが出れば成功だ。
f:id:AIN0204:20181008191759p:plain

このIPアドレス"192.168.10.10"は”Homestead.yaml”を見ると書いてある。何かとHomesteadの設定は”Homestead.yaml”に書いてあるし、書くことになる。今回使わなかった設定も含めてその辺はドキュメントを読んでもらいたい。

さて、最後にひと手間。
毎度、IPアドレスを打つもの疲れる。というか忘れる。任意のアドレスでアクセスできるようにしよう。

Windows 10であれば"C:\Windows\System32\drivers\etc\hosts"に書き込めば良い。最終行に以下のように追記する。

192.168.10.10 homestead.test

すると、ブラウザから"homestead.test"でアクセスできるようになる。

注意するべきこととしてドキュメントでは"homestead.app"にするように書かれているが、Chromeからアクセスしようとすると警告が出てアクセスできない。これについては以下を参考にURLを変えることで対応できた。
Homestead のインストール手順

最後に

前回、PHP、composer、SQLiteとLaravelをインストールした苦労は何だったのか。すごく便利だと思うのでLaravelを使うのであれば(特にWindowsユーザは)ぜひ。