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は、もう少し本格的に開発を行いたい人に向いているのではないかと思います。
どちらも一長一短あるようなので、場合に応じて使い分けるのが良さそうですね。
間違っている点・改善点などありましたら、ご指摘よろしくお願いします。