LaravelのHomestead設定
更新日 : 2020年02月05日
Laravelの開発を行うにあたり、PHPの実行環境やMySQLの実行環境をPCに整えて開発する必要がありました。
MAMPやXAMPPを利用してなるべく手軽にインストールする方法はありましたが、今回はVagrantやVirtualboxを利用した仮想マシンでLaravelを動作させていきます。
Homesteadとは
Laravel用の仮想マシンとしてHomesteadというものが提供されています。
このHomesteadではVagrantを利用して仮想マシンを構築します。HomesteadのboxをインストールしVirtualbox上で動作させるもので、この仮想マシンを起動すると、Laravelに必要なツール(PHP・MySQL・Webサーバーetc…)がすでにインストールされ、設定された状態で動作します。
Homesteadの仮想マシンを起動すると、PCのブラウザでアクセスするだけでLaravelが動作していることをすぐに確認できます。
HomesteadはLaravelのドキュメント(2020年1月時点でバージョン6.12.0)にも使い方をすでに記載してあり、今回はそのドキュメントに沿って仮想マシンを構築していきます。
Homesteadのインストールと設定
今回のHomesteadのインストールと設定はComposerを利用して作成していきます。
Composerを利用したHomesteadのインストールを行うことにより、Laravelのプロジェクト別に仮想マシンを立ち上げることができ、他の開発者にも同一の環境を提供しやすくなります。
事前にComposerをインストールしておきましょう。macOS版はこちら・Windows版はこちら
Homesteadのインストール
Composerを利用してHomesteadをプロジェクトに導入していきます。ドキュメントではプロジェクトごとにインストールの部分です。
まずはmacOSではターミナル・Windowsではコマンドプロンプトを利用して、Laravelのプロジェクト内部まで移動します。(composer.jsonファイルが存在するディレクトリまで移動)
$cd Laravelのプロジェクトパス
composer.json
が存在するディレクトリまで移動できたら、composerコマンドを利用してHomesteadをインストールできます。
$composer require laravel/homestead --dev
これでHomesteadに必要なファイル群がインストールされます。--dev
というオプションをつけることにより、開発時のみこのHomesteadを利用する設定でインストールできます。
この時点ではVagrantでHomestead仮想マシンを起動するために必要なVagrantfile
が存在しません。さらにHomesteadでは専用の設定ファイルとしてHomestead.yaml
ファイルが必要です。(Vagrantfile
内でHomestead.yaml
ファイルに記載された設定値を利用する形)
このVagrantfile
とHomestead.yaml
ファイルを生成するために以下のコマンドを実行します。
macOSの場合は
$php vendor/bin/homestead make
Windowsの場合は
$vendor\bin\homestead make
を実行してください。実行するとHomestead Installed!
とインストールされたというメッセージが出力されます。これでVagrantfile
とHomestead.yaml
、その他Homesteadを利用するのに必要なファイルが作成されます。
Homesteadの設定(サーバー接続のための鍵生成)
Homestead.yaml
ファイルにはHomesteadの設定が記述されています。上記の作業どおりにHomestead.yaml
ファイルを生成した場合には、この設定ファイルを編集する必要はほとんどありませんが、サーバーに接続するための鍵ファイルの生成を行わなければ仮想マシンが起動できないため、鍵生成を行っていきます。
鍵生成を行わずに仮想マシンを起動しようとすると、以下のように鍵がないので作成できないというメッセージが出力されます。
$vagrant up
Check your Homestead.yaml (or Homestead.json) file, the path to your private key does not exist.
macOSの場合
macOSを利用している場合には鍵生成用のコマンドが用意されています。次のコマンドを実行して鍵生成を行います。ssh-keygen -t rsa -f ~/.ssh/id_rsa
$ssh-keygen -t rsa -f ~/.ssh/id_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/user-home/.ssh/id_rsa.
Your public key has been saved in /Users/user-home/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:********************************************
The key's randomart image is:
+---[RSA 2048]----+
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
+----[SHA256]-----+
途中にEnter passphrase (empty for no passphrase):
となり、パスワードの設定を求められますが、今回はパスワードはなしで作成していくため、2回Enterを押してそのまま進めましょう。
作成できると四角い枠の中に謎の文字が出現されるはずです。これでHomestead.yaml
に必要なid_rsa
ファイルとid_rsa.pub
ファイルが作成できました。
Windowsの場合
Windowsの場合にはmacOS版で利用できたssh-keygen
コマンドがインストールされていないため、別途インストールする必要があります。
Git for Windowsというソフトウエアをインストールすることでこのコマンドが使えるようになるので、Git for Windowsのインストールをまずは行いましょう。
Git for Windowsを上記のリンクの方法でインストールすると、コマンドプロンプトでssh-keygen
コマンドが利用できます。
以下のコマンドを順番に行い、鍵生成を行います。
# 必要なディレクトリの作成
$mkdir %HOMEDRIVE%%HOMEPATH%\.ssh
# 鍵生成
$ssh-keygen -t rsa -f %HOMEDRIVE%%HOMEPATH%\.ssh\id_rsa
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in \Users\user-home\.ssh\id_rsa.
Your public key has been saved in \Users\user-home\.ssh\id_rsa.pub.
The key fingerprint is:
SHA256:********************************************
The key's randomart image is:
+---[RSA 2048]----+
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
|*****************|
+----[SHA256]-----+
これでHomestead.yaml
ファイルに必要なファイル類が揃ったことになります。
Homesteadの起動
ここまで設定ができれば、あとは仮想マシンを起動するだけです。
Vagrantの入門どおりに起動コマンドをVagrantfile
がある場所(Laravelがインストールされているディレクトリ内)で以下のコマンドを実行しましょう。
$vagrant up
Bringing machine 'laravel-test' up with 'virtualbox' provider...
==> laravel-test: Checking if box 'laravel/homestead' version '8.1.0' is up to date...
==> laravel-test: Clearing any previously set forwarded ports...
==> laravel-test: Clearing any previously set network interfaces...
==> laravel-test: Preparing network interfaces based on configuration...
laravel-test: Adapter 1: nat
laravel-test: Adapter 2: hostonly
==> laravel-test: Forwarding ports...
laravel-test: 80 (guest) => 8000 (host) (adapter 1)
laravel-test: 443 (guest) => 44300 (host) (adapter 1)
laravel-test: 3306 (guest) => 33060 (host) (adapter 1)
laravel-test: 4040 (guest) => 4040 (host) (adapter 1)
laravel-test: 5432 (guest) => 54320 (host) (adapter 1)
laravel-test: 8025 (guest) => 8025 (host) (adapter 1)
laravel-test: 9600 (guest) => 9600 (host) (adapter 1)
laravel-test: 27017 (guest) => 27017 (host) (adapter 1)
laravel-test: 22 (guest) => 2222 (host) (adapter 1)
==> laravel-test: Running 'pre-boot' VM customizations...
==> laravel-test: Booting VM...
==> laravel-test: Waiting for machine to boot. This may take a few minutes...
laravel-test: SSH address: 127.0.0.1:2222
laravel-test: SSH username: vagrant
laravel-test: SSH auth method: private key
laravel-test: Warning: Connection reset. Retrying...
laravel-test: Warning: Remote connection disconnect. Retrying...
==> laravel-test: Machine booted and ready!
==> laravel-test: Checking for guest additions in VM...
==> laravel-test: Setting hostname...
==> laravel-test: Configuring and enabling network interfaces...
==> laravel-test: Mounting shared folders...
laravel-test: /vagrant => project-dir/laravel-test
laravel-test: /home/vagrant/code => project-dir/laravel-test
==> laravel-test: Machine already provisioned. Run `vagrant provision` or use the `--provision`
==> laravel-test: flag to force provisioning. Provisioners marked to run always will still run.
仮想マシンがきちんと起動できているか確認するために以下のコマンドで確認できます。
$vagrant status
Current machine states:
laravel-test running (virtualbox)
The VM is running. To stop this VM, you can run `vagrant halt` to
shut it down forcefully, or you can run `vagrant suspend` to simply
suspend the virtual machine. In either case, to restart it again,
simply run `vagrant up`.
running
と表示されていれば起動済みです。
ブラウザでアクセスして動作確認
起動ができていれば、ブラウザでアクセスが可能な状態になっています。
vagrant up
実行時に一応表示はされますが、仮想マシンからPCへポートのリダイレクトが設定されています。Homesteadではデフォルトでポート8000
番を利用できるようになっているので、http://localhost:8000
でアクセスするとLaravelのページが表示されます。

このようにトップページが表示されれば成功です!
あとはLaravelのルーティングどおりに動作します。開発するべきコードをPCで作業して変更していくと、仮想マシンにも自動的に反映されます。(正確にはコードを仮想マシンと共有している状態)
他の開発者にも同一の環境が提供でき、複数人での開発を簡単に行うことができます。
タグ
-
前の記事
Laravelの認証機能-実用編