けけずんセルフハッキング

エンジニアっぽい雰囲気を醸しだしているかのようなブログです!

Laravel開発環境の簡単構築

概要

前回の記事(PHP7.1+Laravel5.x+Nginx+php-fpmな仮想環境構築)の改良版。

ホストOSとゲストOSで共有フォルダを設けて、ホストOS側でファイルを編集できる開発環境を作る。 共有フォルダを用いることで、ホストOS側でIDEを使ったファイル編集が可能になり、ゲストOSはDBのmigrate以外は基本的に触らずにLaravelプロジェクトページを開くことが出来る。

リポジトリは以下の通り。

github.com

環境

ホストOS

ゲストOS

構築手順

ホストOS(mac)での準備

composerをインストールする

laravelコマンドをインストールするのに使用する。

$ brew install homebrew/php/composer

laravelインストーラをダウンロードする

Laravelプロジェクトを作製するためのlaravelインストーラをダウンロードする。

$ composer global require "laravel/installer"

laravelコマンドを実行するためのパスを通す。

$ echo "path=(${HOME}/.composer/vendor/bin ${path})" >>${HOME}/.zshrc

.zshrcを再読込みする。

$ source ~/.zshrc

ここまででLaravelプロジェクト作製用コマンドの準備が完了した。

ゲストOS(仮想マシン)の用意

リポジトリをcloneする

リポジトリを公開してるので、まずはそこからcloneする。

$ git clone https://github.com/kkznch/laravelvm.git

仮想マシンを起動する

cloneしたリポジトリ内でvagrantコマンドを使って仮想マシンを起動する。 --provisionオプションはVagrantfile内で指定したプロビジョニング用のコマンドを実行する。 今回は中でansibleコマンドを実行している。

$ cd laravelvm
$ vagrant up --provision

SSH接続のための設定をする

起動した仮想マシンSSH情報を設定ファイルに追記する。

$ vagrant ssh-config >> ~/.ssh/config

この時点ではIPアドレスとポート番号がデフォルトのままなので、書き換える。

$ emacs ~/.ssh/config
Host laravelvm
  HostName 192.168.16.132 # 変更部分
  User vagrant
  Port 22 # 変更部分
  UserKnownHostsFile /dev/null
  StrictHostKeyChecking no
  PasswordAuthentication no
  IdentityFile /Users/kkz/.vagrant.d/insecure_private_key
  IdentitiesOnly yes
  LogLevel FATAL

ここまでで仮想マシンSSH接続ができるはず。

Laravelプロジェクトを作成する

仮想マシンリポジトリ内にあるsharedフォルダを共有フォルダとして仮想マシン内部の/var/wwwにマウントする。

また、仮想マシン/var/www/laravel/publicをドキュメントルートとしているため、sharedフォルダ内にlaravelという名前でLaravelプロジェクトを作成すればよい。

$ pwd
/path/to/laravelvm
$ ls
Vagrantfile playbook shared
$ cd shared

以下のコマンドでLaravelプロジェクトが作製される。

$ laravel new laravel

接続確認

ブラウザで以下のURLにアクセする。

http://192.168.16.132:9000

LaravelのTopページが表示されればOK。

Laravelプロジェクト編集

ホストOS(mac)にインストールされているIDEでLaravelプロジェクトを開き、コードを編集していく。 このとき、IDEにPhpStormを使っていれば楽になれる(デバッグ的な意味で)。 ファイル編集後はブラウザから上記URLにアクセスするだけでページが更新されているのが分かる。これが非常に楽ちん。

考察

仮想マシンは起動しておくだけでいいし、編集もローカルのIDEを使用して出来るのでかなり良い。 ただ、データベースの更新などを行う際は仮想マシン内で操作を行う必要がある。

参考