【Laravel】MacにLaravelインストールしてみた(Virtalbox + Vagrant + homestead)

概要

Laravelのローカル環境を構築する手順をまとめてみた。
仮想サーバは、いくつか選択肢があると思いますが、個人的には、Virtalbox + Vagrantでローカルサーバを構築するのが楽かなと思っています。
そしてlaravel使うならサーバを複数立ち上げが楽になるhomesteadを組み合わせるとかなり便利な気がしています。
そのうち小ネタとかもブログに記録できればと思います。
では早速行ってみましょっ!

参考
https://laravel.com/docs/8.x
https://github.com/laravel/laravel
https://readouble.com/laravel/8.x/ja/homestead.html

環境

MacBook Air (Retina, 13-inch, 2020)
メモリ: 16 GB
macOS: Big Sur バージョン 11.6.1

仮想マシン(サーバー)をインストールする。

Laravel 動作させるための仮想マシン(サーバー)をMacに構築します。
※本手順内で、環境によっては、再起動する必要がありますのでご注意ください。

使うアプリケーションは以下の通り。

  • VirtualBox 6.1.28
  • Vagrant 2.2.19
  • Laravel/Homestead 11.5.0 ( Ubuntu 20.04.3 LTS, PHP 8.0.11 )
  • Xcode 13.1 (gitコマンド使うのでインストールする必要があります)

順番に導入していきます。

Let’s GO!

VirtualBoxのインストール

まず、公式サイトからパッケージをダウンロードします。
Link: https://www.virtualbox.org/

この時の最新バージョンは、6.1.28でした。

Download VirtualBox 6.1の画像をクリックします。
中段あたりにある「OS X hosts」をクリックしダウンロードします。

ダウンロードが完了したらdmgファイルをダブルクリックしてインストールを開始します。

こんなファイル名でした。

ここからは、インストール画面が続くだけですので、インストール画面はいいやというかたは、こちらからスキップしてください。

「1 Double click on this icon:」のVirtualBox.pkgアイコンをダブルクリックします。
この警告は、「許可」ボタンを押して、このOSでインストールできるのを祈りますw
無事、インストールできそうですねw
「続ける」ボタンをクリックして、インストールを開始します。
インストール先をデフォルト以外にしたい場合は、「インストール先を変更…」ボタンをクリックし変更してください。
「インストール」ボタンをクリックし、次へ。
インストールの種類画面で、「カスタマイズ」ボタンをクリックすると以下の画面が表示されます。
不要なパッケージを削除することができるようです。
インストール許可を求めるダイアログが表示されます。
OSのユーザ名とパスワードを入力し、「ソフトウェアをインストール」ボタンでインストールを実行します。
インストールが開始され、この環境では、1,2分で完了しました。
「閉じる」ボタンをクリックでインストール完了です。
すると、このような画面が表示されました。
セキュリティでブロックされてしまいました。
許可するためには、記載内容の通りブロックを解除します。
「"セキュリティ"環境設定を開く」ボタンをクリックします。
この赤い部分のブロックを解除(許可)してあげます。
左下の鍵マークをクリックし、変更モードにします。
「許可」ボタンをクリックすると変更を反映するため、再起動を促されます。
「再起動」ボタンをクリックし、再起動を実行します。
Launchpad に 図のようなアイコンが追加されています。
とりあえずだぶるくりっくで起動してみます。
こんな感じの画面が起動できました。インストールは問題なさそうです。
メニューから「VirtualBox」->「VirtualBoxを終了」を実行し終了しておきます。

Vagrantのインストール

仮想マシンの操作などを行うためにVagrantをインストールします。
インストール方法には、2種類あります。
dmgをダウンロードして、インストールを行う方法 homebrewコマンドでインストールする方法です。
本手順では、dmgダウンロードの方法で説明します。
コマンドは、以下のコマンドを実行してインストールします。

$ brew install vagrant

公式サイトからパッケージをダウンロードする。
Link: https://www.vagrantup.com/downloads

この時の最新バージョンは、2.2.19でした。

「64-bit」リンクをクリックして、dmgファイルをダウンロードします。

ダウンロードが完了したらdmgファイルをダブルクリックしてインストールを開始します。

こんなファイル名でした

ここからは、インストール画面が続くだけですので、インストール画面はいいやというかたは、こちらからスキップしてください。

vagrant.pkgアイコンをダブルクリックします。
「続ける」ボタンをクリックして、インストールを開始します。
「インストール」ボタンをクリックし、インストールを開始します。
*インストール許可のため、OSのユーザ名とパスワードをダイアログが表示されますが、省略いたします。
インストールが開始され、この環境では、1分もかからず完了しました。
「閉じる」ボタンをクリックでインストール完了です。

ターミナルを起動し、以下のコマンドでインストール(コマンドが実行できる)とバージョンの確認を行います。

$ vagrant -v  
Vagrant 2.2.19

*インストール作業前に起動したターミナルの場合、vagrantコマンドが見つからないことがあります。
その場合は、ターミナルを再起動してください。

 

仮想環境構築

ここからは、ターミナルを起動しコマンドラインにて仮想環境の構築を行います。
初めてやるよという方は、コピペでいけると思います。
すでにインストール済みだったりする人は、うまくいかないこともあるかもしれません。💦

Vagrant に Homestead を追加

ターミナルを起動します。
ユーザディレクトリで作業を行います。

$ cd ~/

Homesteadを追加します。

この時の最新バージョンは、11.5.0でした。

$ vagrant box add laravel/homestead

上記コマンドを実行すると以下のように確認メッセージが表示されます。

==> box: Loading metadata for box 'laravel/homestead'
    box: URL: https://vagrantcloud.com/laravel/homestead
This box can work with multiple providers! The providers that it
can work with are listed below. Please review the list and choose
the provider you will be working with.

1) hyperv
2) parallels
3) virtualbox

Enter your choice: 

どの仮想環境に追加するのか訊かれますので、今回は、VirtualBoxをインストールしてますので「3) virtualbox」を選択するため「3」と入力し、[Enter]を押します。

追加処理が開始されます。この環境では、8分くらいかかりました。

このような画面が表示されれば、成功しています。(Successfully)

バージョンを指定しインストールする場合は、以下のコマンドをでできるようです。

$ vagrant box add laravel/homestead --box-version {指定バージョン}

古い環境に合わせる必要がある場合は、色々大変ですよねぇ。。。😭

HomesteadをGitからcloneする

cloneを作成する場所は、任意です。
迷う場合は、以下のサイトの通り~/Homestead に作成することをお勧めします。
本手順では、変更しちゃいますw

私は、~/Works というディレクトリにまとめてデータ等を入れていますのでそちらに変更していきます。
コマンド中は置き換え文字にしておきます。

{Homestead_Dir} => ~/Works/Homestead
{Server_Dir} => ~/Works/Servers

Git clone

*Gitコマンドを使う際に、開発ツール xcodeをインストールするか確認ダイアログが表示された場合は、インストールしてください。(これが一番時間がかかります。なんせ約12GBくらいあるので、、、😭)

Xcode DL先
Link: https://apps.apple.com/jp/app/xcode/id497799835

$ git clone https://github.com/laravel/homestead.git {Homestead_Dir} 
cloneは、一瞬で終わりますw

Homesteadの初期化

Homesteadディレクトリに移動して初期化します。

$ cd {Homestead_Dir} 
$ bash bash init.sh

「Homestead initialized!」のメッセージが出れば成功です。

共有ディレクトリ(フォルダ)の設定

仮想サーバとMac環境の同期ディレクトリのデフォルト共有ディレクトリは、「~/code」となっています。

存在しないと思いますので、共有ディレクトリを作成します。

$ mkdir {Server_Dir}

秘密鍵の作成

仮想サーバにログインするためにssh用の秘密鍵を作成します。

秘密鍵は、セキュリティのため、.[ドット]付きの隠しディレクトリに格納します。
「.ssh」などのディレクトリを作成し、その中に格納します。
ディレクトリがない場合は、以下のコマンドで作成しておきます。

$ mkdir ~/.ssh

秘密鍵を作成します。

$ ssh-keygen -t rsa

コマンドを実行すると以下のように質問形式で確認されます。
私は、ファイル名を「id_rsa_vagrant」としました。(入力パスは、格納先のフルパス指定する必要があります)
passphraseは、忘れないようにしてください。(忘れた場合は、作り直す必要があります)

Generating public/private rsa key pair.
Enter file in which to save the key (/Users/*******/.ssh/id_rsa): /Users/*******/.ssh/id_rsa_vagrant
Enter passphrase (empty for no passphrase): {任意の文字列}
Enter same passphrase again: {任意の文字列(確認)}

パスフレーズを入力すると以下の処理が流れ秘密鍵が作成されたことがわかります。

Your identification has been saved in /Users/*******/.ssh/id_rsa_vagrant.
Your public key has been saved in /Users/*******/.ssh/id_rsa_vagrant.pub.
The key fingerprint is:
SHA256:{内緒}
*******@MacBook-Air.local
The key's randomart image is:
+---[RSA 3072]----+
{内緒}
+----[SHA256]-----+

秘密鍵が作成されたか確認する。

$ ls -l ~/.ssh

ついでに id_rss_vagrantのパーミッションが「-rw——-(400)」であることを確認します。
400になっていない場合は、以下のコマンドを実行してください。

$ chmod 400 ~/.ssh/id_rsa_vagrant

Homestead設定

Homestead.yamlを開き、修正していきます。(編集のエディターは、ご自由にお願いします。)

[鍵の設定]
・authorize の 「~/.ssh/id_rsa.pub」を「~/.ssh/id_rsa_vagrant.pub」に変更
keys の 「~/.ssh/id_rsa_vagrant」を「~/.ssh/id_rsa_vagrant」に変更

[共有ディレクトリの設定]
複数プロジェクトを起動させることができるようにするため、サブディレクトリを作成する。
*mapが、Mac側のディレクトリ。toが仮想サーバのディレクトリを意味しています。
folders: – map: の 「~/code」を「{Server_Dir}/laravel-sample」に変更
folders: to: の 「/home/vagrant/code」を 「/home/vagrant/code/laravel-sample」に変更

[Nginxの設定]
仮想サーバ側で、mapにアクセスが来たら、toのドキュメントルートにアクセスするよう指定する。
sites: – map: の 「homestead.test」を「laravel-sample.test」に変更
sites: to: の 「/home/vagrant/code/public」を 「/home/vagrant/code/laravel-sample/public」に変更

ip: "192.168.10.10"
memory: 2048
cpus: 2
provider: virtualbox

authorize: ~/.ssh/id_rsa_vagrant.pub

keys:
    - ~/.ssh/id_rsa_vagrant

folders:
    - map: {Server_Dir}/laravel-sample
      to: /home/vagrant/code/laravel-sample

sites:
    - map: laravel-sample.test
      to: /home/vagrant/code/laravel-sample/public

databases:
    - homestead

features:
    - mysql: true
    - mariadb: false
    - postgresql: false
    - ohmyzsh: false
    - webdriver: false

services:
    - enabled:
          - "mysql"
#    - disabled:
#        - "postgresql@11-main"

#ports:
#    - send: 33060 # MySQL/MariaDB
#      to: 3306
#    - send: 4040
#      to: 4040
#    - send: 54320 # PostgreSQL
#      to: 5432
#    - send: 8025 # Mailhog
#      to: 8025
#    - send: 9600
#      to: 9600
#    - send: 27017
#      to: 27017

仮想サーバの起動

「vagrant up」コマンドを実行することで、仮想サーバを起動することができます。

$ cd {Homestead_Dir} 
$ vagrant up

起動時に以下のようなエラーが出た場合は、Homestead.ymlの「192.168.10.10」を指定されたレンジに合わせてみましょう「192.168.56.10」

Bringing machine 'homestead' up with 'virtualbox' provider...
==> homestead: Checking if box 'laravel/homestead' version '11.5.0' is up to date...
==> homestead: Clearing any previously set network interfaces...
The IP address configured for the host-only network is not within the
allowed ranges. Please update the address used to be within the allowed
ranges and run the command again.

  Address: 192.168.10.10
  Ranges: 192.168.56.0/21

Valid ranges can be modified in the /etc/vbox/networks.conf file. For
more information including valid format see:

  https://www.virtualbox.org/manual/ch06.html#network_hostonly

起動時のログに所々で赤文字になってエラーっぽい表記があるのですが、ディレクトリがなかったりDBがインストールされていなかったりするためにエラーが発生していますが、赤色の文字で終了していなければ起動には成功しているはずです。多分、、、

起動確認のため、VirtualBoxを起動してみましょう。

Homesteadなるサーバが起動(実行中)していることがわかります。
起動した仮想サーバの状態が確認できます。

sshを使ってサーバへログインしてみます。

$ vagrant ssh

以下のように表示されたら、ログインできました。

ちなみに 以下のようなSSHコマンドを実行してもログインできます。
(vagrant ssh は、以下の処理を省略してくれています。)

$ ssh -i ~/.ssh/id_rsa_vagrant vagrant@192.168.56.10
The authenticity of host '192.168.56.10 (192.168.56.10)' can't be established.
ECDSA key fingerprint is SHA256:0ToN6h*******************w.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.56.10' (ECDSA) to the list of known hosts.
Enter passphrase for key '/Users/*******/.ssh/id_rsa_vagrant':  {秘密鍵パスフレーズ}

仮想サーバの環境は整いました。これからlaravelのインストールに入りますっ!!(長くてすみません。。。)

Laravelインストールと各種設定

ディレクトリ作成

$ mkdir /home/vagrant/code
$ cd /home/vagrant/code
$ pwd
/home/vagrant/code

Laravelインストール

$ laravel new laravel-sample

~途中省略 ~

「successfully」と表記されていれば、インストール完了です。

hosts設定

ブラウザから、「http://laravel-sample.test」でアクセスできるように設定する。
この設定をすることで、仮想サーバ内(Nginx)でアクセスドメインを解決すること複数プロジェクトのアクセスを可能にすることができる。(IPアドレスアクセスだと1プロジェクトとなってしまう)

仮想サーバ、Mac共に hostsファイルに仮想サーバIPとアクセスドメインの紐付けを追加する。

$ sudo vi /etc/hosts

以下の1行を追加します。

【仮想サーバIP】 laravel-sample.test

設定確認

仮想サーバを再起動します。

仮想サーバにアクセス中の場合は、一度ログアウトします。

$ exit

Mac側のターミナルにて、仮想サーバをシャットダウンします。

$ vagrant halt

仮想サーバを起動します。

$ vagrant up 

Homestead.yamlに記載した必要なディレクトリが作成されているので、起動時のエラーがなくなっていることが確認できます。

次に、Macのブラウザからアクセスしてみます。

http://laravel-sample.test/

無事、アクセスすることができましたっ!お疲れ様でしたっ!

次回からは、DBのインストールと設定やlaravel-adminのインストールなども記載していきたいと思います。