この記事では、Windows 環境で Laravel アプリケーションの開発を始める方法を紹介します。
開発環境を構築しようとすると言語やデータベース、Web サーバーをそれぞれインストール〜設定する必要があって面倒ですよね。特に初心者の方にとってはそれだけでハードルを感じてしまうかもしれません。
Laravel にはオフィシャルのローカル開発環境構築ツール「Homestead」が用意されています。Homestead は、仮想化技術により PHP・MySQL・nginx など開発に必要なソフトウェアやミドルウェアが設定された Linux OS 環境のパッケージです
今回は Homestead を使った開発環境の構築〜新しいプロジェクトの始め方を説明していきます。
環境構築
Git
まずは Git をインストールしましょう。
Git 自体は後段でソフトウェアをインストールする際に使用しますし、コマンドラインでの操作は Linux コマンドを実行できる Git Bash を使用すると便利です。
VirtualBox
VirtualBox は OS の仮想化を実現するためのソフトウェアです。
https://www.virtualbox.org/wiki/Downloads
今回は Windows OS 上で Linux OS を動作させるために使用します。
Vagrant
Vagrant は上記の VirtualBox などで構築した仮想環境をコマンドラインから管理するためのソフトウェアです。
https://www.vagrantup.com/downloads.html
Homestead Vagrant Box
Vagrant はとても便利で、DB・Webサーバ・言語などを含んだ OS を一つの仮想環境(これを Box と呼ぶ)としてパッケージングして管理できます。この技術を利用した Laravel のオフィシャル Vagrant Box が前述の Homestead です。
vagrant コマンドでインストールしましょう。
$ vagrant box add laravel/homestead
ちなみにこのインストールはネットワーク環境にもよりますが1〜2時間かかります。
Homestead
先ほどインストールした Homestead(Vagrant Box)を管理するためのツールをインストールします。ちょっとややこしいですが、Vagrant Box およびその管理ツールを含めて Homestead と呼ぶと考えればよいでしょう。
$ cd ~
$ git clone https://github.com/laravel/homestead.git Homestead
$ cd Homestead
$ git checkout v7.18.0
$ init.bat
2つめの手順で Homestead ディレクトリが作成されます。Homestead ディレクトリの中には仮想環境を立ち上げるための各種設定ファイルが格納されているので、仮想環境の起動/停止は Homestead ディレクトリで行うことになります。
ちなみに Mac の場合は最後の手順で init.bat
の代わりに以下のコマンドを実行します。
$ bash init.sh
仮想環境を起動する
ここまでで環境の構築は完了しました
以下のコマンドで仮想環境を起動します。
$ cd ~/Homestead
$ vagrant up
仮想環境にログインする
仮想環境内で作業するためには、Tera Term などのターミナルソフトを利用して仮想環境にログインします。仮想環境を起動したあと、以下の接続情報を用いてログインしましょう。
host | user | pass |
---|---|---|
192.168.10.10 | vagrant | vagrant |
ちなみに Mac では以下のコマンドでログインできます。
$ vagrant ssh
仮想環境を停止する
注意点として、PC の電源を切る前に、必ず仮想環境を停止させてください。仮想環境を停止させずに PC の電源を切ってしまうと、仮想環境上のデータが破損してしまうことがあります。以下のコマンドで仮想環境を安全に停止できます。
$ vagrant suspend
up
した時と同様、ローカルの Homestead フォルダの下で実行しましょう。
ホストとゲスト
プロジェクトの新規作成方法に進む前に、ホストとゲストという概念について説明します。
あるコンピューター(PC含む)に仮想環境を構築する場合、そのコンピューターをホスト(OS)、仮想環境側をゲスト(OS)と呼びます。主催者・主人とお客さんということですね。例えば今回のように Windows の PC に Linux の仮想環境を立てるとすると、Windows 側をホスト OS、Linux 側をゲスト OS と呼びます。
なぜこの概念が重要かというと、開発を進めるにあたってある作業を「ホストで実行するか、ゲストで実行するか?」を考える必要があるからです。
コマンドの実行場所
当然ですが、vagrant コマンドなど仮想環境に対する操作はホスト側で行いましょう。
ソースコードに対する操作は基本ゲスト側で OK です。ライブラリやパッケージをインストールするための composer や npm コマンドはゲスト側で実行します。
また PHP コマンドもゲスト側で実行しましょう。ホストOSにはそもそも PHP は(少なくとも今回の手順では)インストールされていないので実行できません。
npm コマンド
ただし npm コマンドには注意が必要です。Windows の特性により、ゲスト側での npm コマンド(特にインストール)が失敗する場合が少なくありません。
ゲスト側で npm コマンドがうまくいかなければホスト側で実行しましょう。後述するようにホストとゲストは共有フォルダで繋がっているのでどちらで実行しても追加したファイルは反映されます。
npm パッケージによってはインストールされた OS 向けのバイナリを持ってくるものもあるので、npm コマンドの実行場所はホストとゲストを使い分けるのではなく、どちらかに統一しましょう。
もちろんホストで npm の操作をする場合は Node がインストールされている必要があります。
ソースコードの格納場所
ホストとゲストは共有フォルダで繋がっています。ホスト側の仮想マシンを起動したフォルダ(今回でいうと Homestead
フォルダ)と、ゲスト側の /vagrant
です。
共有フォルダ内の作業であれば、一方の編集がもう一方にも反映されます。共有フォルダ機能のおかげで、「環境はゲストに作るけどソースファイルの編集はホスト側のエディタで行いたい」ということが実現できるのですね。
Homestead
フォルダ内の設定ファイル Homestead.yml
には次の指定があります。
folders:
- map: ~/code
to: /home/vagrant/code
ホスト側の ~/code
と ゲスト側の /home/vagrant/code
が共有フォルダとなっているという意味です。map
を書き換えれば開発に使用するフォルダを指定することができます。
設定の変更はすでに起動している仮想環境には自動では反映されないので、以下のコマンドで再起動させる必要があります。
$ vagrant reload --provision
プロジェクトの新規作成
ここからプロジェクトの新規作成手順を紹介します。
具体的な設定内容などはプロジェクト名によります。説明ではプロジェクト名を「sample」としますが、この部分は実際のアプリケーションに応じて読み替えてください。
ドメインの設定
まずはブラウザから特定のドメインでアプリケーションを表示するための設定を行います。
Homestead.yml
Homestead ディレクトリ内にある Homestead.yml ファイルを開き、sites 設定を追加します。
sites:
- map: sample.local
to: /home/vagrant/code/sample/public
map
のドメインへのリクエストは、to
に接続されるという意味です。map
は基本任意の値に設定できますが、.app
.dev
.localhost
など一部のドメインは Google Chrome では HTTPS が強制されるため避けましょう。
hosts
メモ帳を管理者権限で起動して hosts ファイル(C:\Windows\System32\drivers\etc\hosts)を開き、下記の一行を追記します。
192.168.10.10 sample.local
コマンドラインでプロジェクトを作成する
composer コマンドでプロジェクトを作成します。
$ cd ~/code
$ composer create-project laravel/laravel sample
コマンドの実行が終わったら ~/code/sample
ディレクトリにアプリケーション一式が作成されているはずです。
ブラウザで http://sample.local を開いて確認しましょう。初期画面が表示されれば成功です。
データベースの確認方法
ゲスト側にあるデータベースの確認方法も紹介しておきます。
コマンドラインから確認することもできますが、ホスト側からクライアントツールを利用する方が分かりやすく見やすいです。Windows アプリでは A5:SQL Mk-2 がオススメです。
ダウンロードした zip ファイルを解凍して A5M2.exe
を実行すると A5:SQL Mk-2 が起動します。
次にデータベースに接続するのですが、Homestead で環境構築するとデフォルトのデータベースおよび接続情報が用意されます。プロジェクトディレクトリの直下にある .env
を確認してください。
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
上記の設定をもとに、以下のメニューから接続情報を設定します。
データベース > データベースの追加と削除 > 追加 > MySQL(または PostgreSQL)
- 「ホスト名」と「ポート番号」はそのままで OK です。
- 「ユーザーID」と「パスワード」は
DB_USERNAME
DB_PASSWORD
の値を入力します。 - 「データベース」には
DB_DATABASE
の値を入力します。
「テスト接続」をクリックしてエラーがなく正しく接続できていれば「OK」をクリックして設定を完了しましょう。
以上、Windows で Laravel 開発をするための環境構築方法を紹介しました。他のフレームワークと比べてかなり手軽に開発をスタートできるのも Laravel の魅力ですね。最近ではこういうの DX(Developer Experience)と言うんでしょうか。
ちなみに Windows 編とは謳っていますが Mac でも同じ手順で構築できます。以前に記事にした Laravel Valet も使えますね。