Kilimanjaro Warehouse

WEBとかゲーム開発のことについて書きます。

Laravel: HomesteadからValetへ開発環境を移行する

最近、Laravelの勉強をし始めました。

Laravelには、Homesteadという便利な開発環境があり、
これを使うことにより、面倒な環境構築を手軽に行うことができます。
Laravel Homestead 5.6 Laravel



私もしばらくこのHomesteadを使って、Laravelの開発を行なっていたのですが、
もっと手軽に使えるものがあることを知ったので、試しにそちらを使ってみることにしました。


Valetというものです。
Laravel Valet 5.6 Laravel



ValetはMacでしか使えないのですが、
Homesteadと比べて、
仮想マシンを立ち上げる必要がない
・使用するメモリが少ない(約7MB)
といった利点があるようです。

今回は、Homesteadを使って開発していたプロジェクトを、
Valetを使った開発環境へ移行するための作業を、備忘録を兼ねて記しておきます。

Laravelやデータベースの操作には不慣れなため、おかしなやり方をしている可能性があります。
実行される際は、よく気をつけて、自己責任でよろしくお願いします。

Valetのインストール

事前にHomebrewとComposerをインストールしておく
参考:
MacにHomebrewをインストールする - Qiita
Composerをインストールしてみた - Qiita



HomebrewとComposerがインストールされていることを確認したら、
以下のコマンドを順番に実行していく。

brew update
brew install homebrew/core/php
composer global require laravel/valet
valet install

これでValetのインストールは終了です。


データベースの設定

仮想マシンにあるデータを、ホスト側へと移行します。
今回は、仮想マシン・ホスト共にMySQLを使用する場合について記述していきます。

vagrant ssh仮想マシンにログインして、以下のコマンドを実行すると、
仮想マシンのデータベースのバックアップを作成できます。

mysqldump -u[ユーザー名] -p[パスワード] -r [バックアップファイル名] --single-transaction [データベース名]

デフォルト設定の場合、以下のコマンドを実行すればOKです。

mysqldump -uhomestead -r homestead.backup --single-transaction homestead

作成されたファイル(この例の場合homestead.backup)を、
ホストからアクセスできる場所に移動しておきます。
参考:
MySQLのデータインポート・エクスポート - Qiita



ファイルの移動が済んだら、ホスト側のMySQLにログインし、
任意の名前のデータベースを作成します。

CREATE DATABASE 新しいデータベース名

次に、プロジェクト内にある.envファイル内のdatabase, username, passwordを書き換えます。
Homesteadはデフォルトならば、以下のような設定になっているはずなので、

database=homestead
username=homestead
password=secret

この部分を、ホスト上で新しく使うデータベースのものへと変更します。
以下、MySQLがデフォルトの設定のときの例です。

database=新しいデータベース名
username=root
password=

新しいデータベース名のところには、先ほど作成したデータベースの名前を入れてください。


そして、プロジェクトのルートで

php artisan migrate

を実行すると、マイグレーションが実行され、ホスト上に仮想マシンのものと同じテーブルが作成されます。

その後、下記のコマンドを実行することで、バックアップからホスト側へデータをインポートすることができます。

mysql -u[ユーザー名] -p[パスワード] [インポートするデータベース名] < [インポートするファイル名]

デフォルト設定の場合、以下のコマンドを実行すればOKです。

mysql -uroot  新しいデータベース名 < homestead.backup

MySQLへログインし、正しくデータをインポートできていることを確認できれば、データベースの設定は完了です。


既存のプロジェクトにリンクを作成

最後に、プロジェクトの一つ上のディレクトリに移動し、

valet link プロジェクト名

を実行します。

その後、ブラウザからプロジェクト名.testへアクセスすると、
仮想マシンを立ちあげなくても、Homesteadで開発していたプロジェクトを開けるようになっているはずです。
これにて開発環境の移行は完了です。


感想

Valetは、手軽にLaravelを試してみたいという人に向いていると思います。
対してHomesteadは、もう少し本格的に開発を行いたい人に向いているのではないかと思います。
どちらも一長一短あるようなので、場合に応じて使い分けるのが良さそうですね。

間違っている点・改善点などありましたら、ご指摘よろしくお願いします。