Laravel 6.0 : Laravel Homestead のセットアップ

広告:超オススメUnity Asset
  広告:超オススメUnity Asset

Laravelの開発環境をMac上に構築した際のMEMOです。Laravelをインストールした後、Macのローカル環境でPHPやLaravelの動作をブラウザで確認できるように仮想システム環境として、HomesteadVirtualBoxVagrantをセットアップして、ブラウザで表示を確認するところまでMEMOしておきます。

00

Laravelのインストール

まず、composerが利用できる環境にしておく必要があります。あと、phpも7.2が必要のようです。このMEMO↓の中盤にインストール手順が書いてあります。phpは7.2だと思ってセットアップしてみてください。

以前、Azure + CakePHPの組み合わせで手軽にCakePHPを利用しようとしたのですが、当然使えると思っていたリモートコンソールで...

composerが古いと

Warning: This development build of composer is over 60 days old. It is recommended to update it by running “/usr/local/bin/composer self-update” to get the latest version.

と言われるので、言われた通り、

/usr/local/bin/composer self-update

を実行して新しくしておきます。

次に日本語のドキュメントのバージョンが古いですが、

にあるように

composer global require “laravel/installer=~1.1"

でlaravelをインストールします。その後、laravelコマンドが実行できるように

vi ~/.bash_profile

export PATH="$PATH:~/.composer/vendor/bin"

を追記し、~/.composer/vendor/bin までのパスを通し、

source ~/.bash_profile

しておきます。

新規Laravelプロジェクトの作成

cd /Users/tshiraishi/Documents/_laravel

は例ですが、プロジェクトを作成したいディレクトリに移動し、

laravel new

します。 -bash: laravel: command not found と返ってきた場合、上記のパスが通っていません。また、phpが7.1以下の場合もエラーとなりますので、7.2をインストールしておきます。

Application ready! Build something amazing.

と出たら完了ですかね。

バージョンを指定してプロジェクトを作成する場合

Laravel のバージョン5.5のプロジェクトを作成

バージョンを指定してインストールしたい場合ですが、例として5.5の場合、公式ドキュメントはこちらです。

ターミナルでComposerの create-project コマンドを使って「laravel55」というプロジェクトをバージョン5.5で作成してみます。

composer create-project --prefer-dist laravel/laravel laravel55 "5.5.*"

それ以降の流れは、以下と同様でいけると思います

Laravel Homesteadのセットアップ

続いて、Laravel HomesteadをMacのローカル環境にセットアップした際のMEMOです。

に基づいてインストール作業を行います。

準備

仮想システム環境を構築して、Macのローカル上に特定バージョンのPHPやデータベース環境を構築し、ブラウザで動作確認できるようになります。仮想システム環境を構築するソフトウェアとして、Parallelsなども使えるようですが、今回はVirtualBoxでセットアップしました(Laravelの古いバージョンからドキュメントに書かれているのがVirtualBoxだったので)。

の二つをビジュアルインストーラを使ってインストールしておきます。

Homestead Vagrant Boxのインストール

vagrant box add laravel/homestead

をターミナルで実行しておきます。

Homesteadのインストール

ここは、Laravel 4.2 のドキュメント

にあった

composer global require “laravel/homestead=~2.0"

の記述に従ってインストールしましたが、2.0の指定は古くエラーが発生するので、

最新の安定バージョンは、GitHubのリリースページで見つかります。

の通り、最新リリースのバージョンを確認し(今日現在v9.2.2が最新でした)、

composer global require “laravel/homestead=~9.2.2"

でインストールしました。Homesteadのバージョンを確認すると

$ homestead -v
Laravel Homestead 9.2.2

となりました。

Homesteadをプロジェクトごとにインストール

ドキュメントでは、グローバルにインストールする方法が先に書かれているのですが、ここではプロジェクトごとにインストールして、一つのプロジェクトに一つのヴァーチャル環境で試してみようと思います。

に従い、プロジェクトフォルダに移動し、

composer require laravel/homestead --dev

を実行し、

php vendor/bin/homestead make

で、「Homestead.yaml」を生成します。

Homesteadの設定

Homestead.yamlは、「Homestead.yaml.example」というファイルをリネームして、「Homestead.yaml」にして、必要な箇所だけ修正するといいと思います。

内容をそのまま記載しておくと

ip: 192.168.10.10
memory: 2048
cpus: 2
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
    - ~/.ssh/id_rsa
folders:
    -
        map: /Users/tshiraishi/Documents/_laravel
        to: /home/vagrant/code
sites:
    -
        map: homestead.test
        to: /home/vagrant/code/public
databases:
    - homestead
features:
    -
        mariadb: false
    -
        ohmyzsh: false
    -
        webdriver: false
name: 'laraveltest'
hostname: 'laraveltest'

こんな感じです。foldersのmapの参照先は、プロジェクトフォルダを指定します。sitesのmapの「homestead.test」は、このあと、hostsに設定しますが(後述)、ブラウザのURLに相当するものです。また、最後の方の行のnameとhostnameにある「laraveltest」というのは、元のフォルダ名によって、デフォルトで「-laravel」のようにハイフンが使われたものになったりしますが、ハイフンがついてるとエラーになるので、「laraveltest」のように変更しました。

SSHキー

あとは、authorinzeとkeysにある、 id_rsa や id_rsa.pub についても用意しなければなりません。

この辺りを参考に。

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/tshiraishi/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/tshiraishi/.ssh/id_rsa.
Your public key has been saved in /Users/tshiraishi/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:tkh6aqLX8ArLI6TV1mN3iUfiy5q50J3/EVSyOIghoge tshiraishi@tshiraishi-MacMini.local
The key's randomart image is:
+---[RSA 2048]----+
|     . .o   . .  |
|      oo o . +   |
|     o. . o o    |
|      E . .o     |
|   . ...S+ ..    |
| .o o+..+o.  .   |
|+. =o.++++  .    |
|++o ++ oo.   .   |
|++o+. =o  ...    |
+----[SHA256]-----+

デフォルトのパスは上記で指定している「~/.ssh/」と一致しているのでそのままで。パスフレーズ等は(ここでは試しなので)なしにしましたが、取り扱いは慎重に。

/etc/hostsへの記述

192.168.10.10  homestead.test

を追記します。ここに記述した homestead.test というのを上記の「Homestead.yaml」のsitesのmapに書きます。

Vagrant Box起動

「Homestead.yaml」を編集後、

vagrant up

を実行。この後、何か修正した場合、その設定をリロードするには、

vagrant reload --provision

をするのをお忘れなく。

再度、 http://homestead.test にアクセスしたところ、ようやく以下のようなページにアクセスすることができました。

00

.envのコピー

初めてセットアップした時ですが、ブラウザで http://homestead.test にアクセスすると、アクセスはできるものの 500 server error となりました。これは、プロジェクトフォルダに以下の.envを用意しておくことで解決しました。

cp .env.example .env

その後、

$ php artisan key:generate
Application key set successfully.
$ php artisan config:clear
Configuration cache cleared!

VirtualBoxで仮想システムを制御

Applicationフォルダにインストールされた「VirtualBox」を起動すると、セットアップしたlaraveltestが実行中になっています。ここで仮想のシステムの電源を落としたり、再起動したりと制御可能です。

01

以上、MEMOし損なっている部分もありそうですが、だいたい記憶と辿ってMEMOしておいた内容です。