HomesteadでLaravel開発環境を構築する


この記事に書いてあること

Laravel8.xの開発環境を構築する手順

Laravel日本語ドキュメント

基本的にはこちらのドキュメントを参考にすれば問題なく構築できます。

Laravelの開発環境構築について

Laravelでは開発環境の選択肢がいくつか準備されています。
ドキュメントではDocker DesktopやLaravel Sailなどのコンテナを利用した構築方法を推奨しているようです。

しかし、Dockerに馴染みがない人は、HomesteadというVagrantをベースとして環境構築方法がおすすめです。

インストールと設定

Homestead環境を起動する前に、Vagrantと、以下のプロバイダのいずれかをインストールする必要があります。

  • VirtualBox 6.1.x
  • Parallels

Parallelsプロバイダを使用するには、Parallels Vagrantプラグイン(無料)をインストールする必要があります。

Homesteadのインストール

まず自分のホストマシンにリポジトリをクローンします。

~/Homesteadの部分は任意のディレクトリに変更しても大丈夫です。
何か理由がない場合は、自分の全LaravelアプリケーションをホストしておくHomestead仮想マシンはひとつで事足りるので、ルートでもいいのかなとは思います。
クローンしたディレクトリを便宜的に「Homesteadディレクトリ」と呼びます。

git clone https://github.com/laravel/homestead.git ~/Homestead

リポジトリのクローンを作成したら、releaseブランチにチェックアウトする必要があります。このブランチには、Homesteadの最新の安定版リリースが常に含まれています。

cd ~/Homestead

git checkout release

次に、Homesteadディレクトリbash init.shコマンドを実行し、Homestead.yaml設定ファイルを作成します。

// macOS/Linux
bash init.sh

Homestead.yamlはHomesteadディレクトリの直下に生成されます。
基本的にはHomestead.yamlを編集することで開発環境のベースを作ることができます。

Homestead.yamlを編集する

Homestead.yaml

ip: "192.168.56.58" #前回作ったHomesteadなどとかぶらないIPの方が良い
memory: 2048
cpus: 2
provider: virtualbox

authorize: ~/.ssh/id_rsa.pub #自分の公開鍵と同じパス(無い場合は作成)

keys:
    - ~/.ssh/id_rsa #自分の秘密鍵と同じパス(無い場合は作成)

folders:
    - map: ~/Documents/LaravelStudy #localからプロジェクトファイルまでのパス
      to: /home/vagrant/code #vagrantからプロジェクトファイルまでのパス

sites:
    - map: study-app.test #localでアクセスするURL
        to: /home/vagrant/code/study-app/public #vagrant上のrootディレクトリのパス
      
     #もし複数ドメインがある場合はこのようにして追加出来る
    - map: sub.project.test 
        to: /home/vagrant/code/sub_project/public

databases:
    - study-app #DB名
    - sub-project #DBは複数作ることができる

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

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

基本的に変更する可能性があるところは

  • ip
  • authorize
  • keys
  • folders
  • sites
  • databases

の6つくらいかなと思います。

ip

ローカルサーバを立ち上げるときに使われるipアドレスです。
他のプロジェクトで使っているipアドレスと被らないように気をつけてください。
vagrant upすると、sites: mapのところで指定したURLでアクセスできるようになります。

なおhostsファイルは、macOSおよびLinuxでは/etc/hostsにあるそうです。

authorizeとkeys

vagrant upで立ち上げた仮想環境にログインするにはssh接続が必要になります。
自分のマシン上でSSH鍵ファイルの作成をしてください。

鍵ファイルが作成できたら、それぞれのパスをyamlファイルに記載します。

folders

Homestead環境とローカルマシンで共有するプロジェクトを管理するフォルダを指定できます。
フォルダの中のファイルが変更されると、ローカルマシンとHomestead仮想環境との間で同期されます。
mapにはローカル。toにはvagrant上のパスを指定します。

例えば以下のような感じです。
例ではLaravelStudyとcodeが対になります。
LaravelStudyの中で、project01と名前でLaravelをインストールしたら、vagrantのcodeディレクトリの中にも同じ名前のLaravelがインストールされます。

ローカル

Documents
└ LaravelStudy / 
         └ project01/

vagrant

/home/vagrant/
     └ code / 
         └ project01/

sites

mapにはローカルでアクセスするためのURL。toにはvagrant上のpublic(Laravelのルートになるところ)ディレクトリのパスを指定します。

database

DB名を設定します。vagrant upすると指定したデータベース名でデータベースが作られることになります。

Vagrant Boxの実行

Homestead.yamlの編集終えたら、Homesteadディレクトリでvagrant upコマンドを実行してください。
Vagrantは仮想マシンが起動し、共有フォルダとNginxサイトを自動的に設定します。

仮想マシンを破壊するには、vagrant destroyコマンドを使用します。

Laravelをインストールする

vagrantへログインするためにSSH接続をします。

vagrant ssh

ログインができたら、yamlファイルのfilesで指定したプロジェクト管理フォルダに移動します。

cd code

コンピューターにすでにPHPとComposerがインストールされていれば、Composerを直接使用して新しいLaravelプロジェクトを作成できます。
yamlファイルのtoで指定したフォルダ名になるようにしてください。

composer create-project laravel/laravel:^8.0 study-app

あとはyamlファイルで設定したURLにアクセスしましょう。
プロジェクトが立ち上がっているはずです。