【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でした。
ダウンロードが完了したらdmgファイルをダブルクリックしてインストールを開始します。
ここからは、インストール画面が続くだけですので、インストール画面はいいやというかたは、こちらからスキップしてください。
Vagrantのインストール
仮想マシンの操作などを行うためにVagrantをインストールします。
インストール方法には、2種類あります。
dmgをダウンロードして、インストールを行う方法 と homebrewコマンドでインストールする方法です。
本手順では、dmgダウンロードの方法で説明します。
コマンドは、以下のコマンドを実行してインストールします。
$ brew install vagrant
公式サイトからパッケージをダウンロードする。
Link: https://www.vagrantup.com/downloads
この時の最新バージョンは、2.2.19でした。
ダウンロードが完了したらdmgファイルをダブルクリックしてインストールを開始します。
ここからは、インストール画面が続くだけですので、インストール画面はいいやというかたは、こちらからスキップしてください。
ターミナルを起動し、以下のコマンドでインストール(コマンドが実行できる)とバージョンの確認を行います。
$ 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分くらいかかりました。
バージョンを指定しインストールする場合は、以下のコマンドをでできるようです。
$ 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}
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を起動してみましょう。
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のブラウザからアクセスしてみます。
無事、アクセスすることができましたっ!お疲れ様でしたっ!
次回からは、DBのインストールと設定やlaravel-adminのインストールなども記載していきたいと思います。