Laravel Homesteadインストール
Laravelの開発環境を構築するためにはさまざまな方法がありますが、今回はLaravel Homesteadを利用した方法を説明しています。Laravel Homesteadは仮想化技術を利用しているため仮想化を実現するためのソフトウェアVitualBoxとそれを支えるVagrantが必要となります。それらのソフトのインストールが必要になりますが、ローカルのPCにPHPやウェブサーバ、DBなどのソフトウェアを個別にインストールし管理していくことと比較すればそれほど難しい設定ではありません。
本文書では、mac OSはCatalina、Laravelのバージョンは6.xをインストールします。
MacではHomestead以外にもLaravel Valetを使ってLaravel環境を構築することができます。Windowsもその他の選択肢としてXAMPPを使った方法もあります。
MacではHomestead, Valetを利用せず直接OS上でLaravel環境を構築することも可能です。しかし、OSに直接パッケージをインストールする場合はそれらの管理が煩雑になります。
目次
VirtualBox
VitualBoxとは
Virtual BoxはOS上に別のOSを稼働させることができる仮想化ソフトウェアです。1台のPC上で複数のOSを同時に利用することができます。今回はLaravel Homesteadを利用して、mac OS上でLinux OSのUbuntuを稼働させ, UbuntuにLaravelをインストールします。
Vitual Boxのインストール
VirtualBoxはVitualBoxのホームページ上からパッケージをダウンロードすることでインストールを行うことができます。
ホームページにアクセスし下記画面中央部にあるVitualBox paltform packageからOS X hostsをクリックします。パッケージのダウンロードが開始されます。
下記のメッセージが表示されますが、OKボタンをクリックしてください。
インストール画面が表示されるので左上のVirtualBox.pkgをダブルクリックしてください。
確認画面が表示されますが、そのまま続けるボタンをクリックしてインストールを進めてください。
インストールボタンが表示されるのでインストールボタンをクリックするとインストールが開始されます。
パスワードを聞かれるのでパスワードを入力するかTouch IDがある場合は指紋認証を行ってください。
そのままインストールを続けると機能拡張がブロックされるためセキュリティの環境設定を開いて許可する必要があります。
セキュリティとプライバシーの画面の左下にある変更するにはカギをクリックしますのアイコンをクリックしてください。
パスワードを入力するかTouch IDがある場合は使用してください。
App Storeと確認済みの開発元からのアプリケーションの許可ボタンをクリックしてください。先程ブロックされた処理が許可されます。
インストールがブロックされたのでインストーラをゴミ箱を入れるかどうか確認画面がでますが、ここでは残すを必ず選択してください。
インストールの最初の画面に戻りまた最初からインストールを行う必要がありますが、今度はブロックされずに進めます。
インストールが完了し下記の画面が表示されたらVirtualBoxのインストールは完了です。
インストールパッケージをゴミ箱に捨てるか確認画面が表示されますが、ここでは捨てるを選択して大丈夫です。
Vagrant
Vagrantとは
Vagrantを利用すると仮想化環境の構築、操作を簡単に行うことができます。
VagrantはOS、ソフトウェア情報をまとめたBoxを利用して仮想マシン上にOS、ソフトウェア環境を構築していきます。Boxを利用することでだれでも同じ環境を構築することができます。Laravel HomesteadのBoxが作成されているので、そのBoxを利用することで短時間でLaravel環境を構築することができます。
Vagrantのインストール
VagrantもVirtualBoxと同様に公式ホームページからパッケージをダウンロードしてインストールを行います。
Vagrantのホームページにアクセス後、画面下部の中央にあるDownloadボタンをクリックしてください。
Download画面を下にスクロールしてmacOS 64bitをクリックしてください。パッケージのダウンロードが開始されるので、ダウンロードが完了したらパッケージをダブルクリックしてください。
インストール画面が表示されるので、vagrant.pkgをダブルクリックしてください。
vagrant.pkgが悪質なソフトウェアかもしれないということで開くことができないため、セキュリティとプライバシーの設定が必要になります。
メニューバーからシステム環境設定を開いて、セキュリティとプライバシーのアイコンをクリックしてください。ここでは右中央にあります。
セキュリティとプライバシー画面が表示されるので、下にある”vagrant.pkgは開発元を確認できないため、使用がブロックされました”の右にあるこのまま開くボタンをクリックしてください。
下記の画面が表示されるので、開くボタンをクリックしてください。
インストールの画面が表示されるので続けるをクリックしてください。
パスワードを聞かれるので、パスワードを使用するかTouch IDを使用してください。
そのままインストールを進め下記の画面が表示されたら、Vagrantのインストールは完了です。
インストーラーをゴミ箱に入れるか確認画面がでるので、ゴミ箱に入れるのボタンをクリックしてください。
Homestead Vagrant Boxインストール
Vitrual BoxとVagrantをインストールした後は、Laravel用の仮想マシンの作成に必要なlaravel/homesteadのboxをvagrant addコマンドを実行してダウンロードします。
vagrant box addコマンドは環境にもよりますが時間がかかるので時間に余裕がある時に実施してください。実行した環境では30分程度でした。
% vagrant box add laravel/homestead
==> box: Loading metadata for box 'laravel/homestead'
box: URL: https://vagrantcloud.com/laravel/homestead
==> box: Adding box 'laravel/homestead' (v8.2.1) for provider: virtualbox
・
・
==> box: Successfully added box 'laravel/homestead' (v8.2.1) for 'virtualbox'!
OpenSSL SSL_read: SSL_ERROR_SYSCALL, errno 54 vagrantで実行に失敗。再度実行すると上記のように成功しました。2回目は途中からの再開なので時間はあまりかかりませんでした。
vagrant box listを実行するとダウンロードしたboxのlaravel/homesteadの情報が表示されます。
% vagrant box list
laravel/homestead (virtualbox, 8.2.1)
Homesteadの初期設定
gitコマンドでhomesteadのリポジトリのクローン(複製)を~/Homesteadディレクトリの中に保存します。Homesteadディレクトリは自動で作成されるので、事前作成は必要ありません。リポジトリの中には、仮想マシンの作成に利用するVagrantfileなどの設定ファイルやinit.shなどのスクリプトファイルが含まれています。
% git clone https://github.com/laravel/homestead.git ~/Homestead
% git clone https://github.com/laravel/homestead.git ~/Homestead
Cloning into '/Users/mac/Homestead'...
remote: Enumerating objects: 9, done.
remote: Counting objects: 100% (9/9), done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 4175 (delta 1), reused 6 (delta 1), pack-reused 4166
Receiving objects: 100% (4175/4175), 926.05 KiB | 1.07 MiB/s, done.
Resolving deltas: 100% (2563/2563), done.
Homesteadディレクトリに移動し、下記のコマンドを実行します。Homesteadの設定に必要なHomestead.yamlファイルがディレクトリ内に作成されます。このファイルを変更することで各自の環境に合わせてた仮想マシンを作成することができます。
% bash init.sh
Homestead initialized!
SSH Keyの作成
vagrantに接続するためのsshキーの作成を行います。ssh-keygen -t rsaコマンドでキーの作成を行うことができます。実行後.sshディレクトリの下に秘密鍵と公開鍵のid_rsa, id_rsa.pubファイルが作成されます。
% ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/mac/.ssh/id_rsa):
Created directory '/Users/mac/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /Users/mac/.ssh/id_rsa.
Your public key has been saved in /Users/mac/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:gor12GnN5e63xzkJs1TF3L1lsLZTyfKdCmsSESrppto mac@macnoMBP
The key's randomart image is:
+---[RSA 2048]----+
| . o.o.|
| . . . =.*|
| o . . oo++|
| ... . ..o+o|
| . .o. S. o oo.|
| o =o+ + = o .. |
|. o.= o .o B + |
| o. . = * |
| . E .o..o . |
+----[SHA256]-----+
Homestead.yamlファイルの説明
Homestead.yamlでは仮想化マシン(OS)のIPアドレス、ドメインの設定やLaravelをインストールを行うディレクトリの設定を行います。Optional Softwareの追加設定もここで行います。
Homestead.yamlのデフォルト設定は下記の通りです。
---
ip: "192.168.10.10"
memory: 2048
cpus: 2
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: ~/code
to: /home/vagrant/code
sites:
- map: homestead.test
to: /home/vagrant/code/public
databases:
- homestead
features:
- mariadb: false
- ohmyzsh: false
- webdriver: false
# ports:
# - send: 50000
# to: 5000
# - send: 7777
# to: 777
# protocol: udp
ip、merory, cpus:は仮想マシン(OS)に割り当てられるリソースです。
provider:はどの仮想化ソフトウェアを利用するか設定する項目でここではVitualboxを利用するのでvitualboxとなります。VMWARE等も使用可能です。
authorizeとkeys:はsshキー作成で作成したキーのパスが設定されています。~(チルダ)はユーザのホームディレクトリを表し、本環境では/Users/macとなります。
folders:はローカルマシンのディレクトリと仮想マシン上のOSのディレクトリの結びつける設定です。ローカルマシンの/Users/mac/codeにアクセスすれば仮想マシン上の/home/vagrant/codeの中身を確認することができます。
sites:toは公開ディレクトリです。ブラウザでhomestead.testにアクセスすると/home/vagrant/code/public下のindex.htmlやindex.phpファイルの中身が表示されます。
databases:指定した名前のデータベースが仮想マシンのOS上のMySQLに作成されます。(後ほど確認)
features:mariadbをtrueにするとmysqlの代わりにmariadbがインストールされます。追加のソフトウェアがある場合はここに追加します。
Homestead.yamlファイルの更新
今回はhomestead.yamlファイルの中のsitesを以下のように書き換えます。
sites:
- map: homestead.test
to: /home/vagrant/code/blog/public
/home/vagrant/codeの下にblogという名前がありますが、この後Laravelプロジェクトをblogという名前で作成する予定です。
codeディレクトリの作成
ローカルマシンのユーザディレクトリにcodeディレクトリを作成します。
% mkdir code
hostsファイルの追加
Homestead.yamlで設定されているIPアドレスとドメイン名を/etc/hostsファイルに追加します。
##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting. Do not change this entry.
##
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
192.168.10.10 homestead.test
仮想マシンの起動
仮想マシンを起動するまでの設定が完了したので、vagrant upコマンドで仮想マシンを起動します。
% vagrant up
起動完了後、statusコマンドで稼働状況を確認します。runningと表示され稼働していることがわかります。
% vagrant status
Current machine states:
homestead 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`.
Homestead.yamlファイルなど更新した場合は一度vagrant haltコマンドで停止することが可能です。
% vagrant halt
==> homestead: Attempting graceful shutdown of VM...
停止した場合のステータスも確認しておきます。poweroffとなっていることを確認することができます。
% vagrant halt
==> homestead: Attempting graceful shutdown of VM...
mac@macnoMBP Homestead % vagrant status
Current machine states:
homestead poweroff (virtualbox)
The VM is powered off. To restart the VM, simply run `vagrant up`
Laravel環境の構築
Laravelのインストール
vagrant upが完了したらsshコマンドでvagrantに接続します。
% vagrant ssh
接続後、codeディレクトリの下でLaravelのプロジェクトの作成を行います。プロジェクトの名前は、homestead.yamlで設定したblogを使っています。
vagrant@homestead:~$ composer create-project --prefer-dist laravel/laravel blog
インストールが完了したら、ローカルマシン側から/Users/mac/codeにアクセスするとインストールしたLaravelのファイルにアクセスできることを確認してください。
ブラウザでhomestead.testにアクセスするとLaravelの初期画面が表示されれば、ここまでのすべての設定は正常に行われています。
データベースへの接続
mysqlコマンドを利用してMySQLデータベースへの接続を行います。
MySQLへの接続には2つのユーザアカウントで行うことができます。
- rootユーザ、パスワードはなし
- homesteadユーザ、パスワードはsecret
$ mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 35
Server version: 5.7.27-0ubuntu0.18.04.1 (Ubuntu)
Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners
show databaseコマンドで作成されているデータベースを確認します。homesteadデータベースが存在することが確認できます。
mysql> show databases;
+---------------------+
| Database |
+---------------------+
| information_schema |
| homestead |
| #mysql50#lost+found |
| mysql |
| performance_schema |
| sys |
+---------------------+
データベースと接続ユーザの情報がわかったのでhomesteadの接続設定を.envファイルで行います。.envファイルを開いてデータベース接続のパラメータを下記のように設定します。
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
usersテーブルの作成についてはLaravelで事前にマイグレーションファイルが用意されているので、php artisan migrateコマンドを実行します。実行後下記のメッセージが表示されたら、homesteadデータベースへのテーブルの作成は完了しています。
$ php artisan migrate
Migration table created successfully.
Migrating: 2014_10_12_000000_create_users_table
Migrated: 2014_10_12_000000_create_users_table (0.08 seconds)
Migrating: 2014_10_12_100000_create_password_resets_table
Migrated: 2014_10_12_100000_create_password_resets_table (0.09 seconds)
Migrating: 2019_08_19_000000_create_failed_jobs_table
Migrated: 2019_08_19_000000_create_failed_jobs_table (0.06 seconds)
コマンドラインでもテーブルの中身の確認を行うことができますがデータベース管理ソフトウェアのTablePlusを使って接続を行います。
インストール方法などについては下記の文書を参考にしてください。
TablePlusを起動して新規の接続でMySQLを選択します。
データベースへの接続に必要な情報を記述します。設定が完了したらConnectボタンをクリックしてください。
データベースへの接続が完了すると左側の列で作成されたテーブルを確認することができます。