はじめに
laravel6になってからの構築手段とか初動について、いくつかQiita上にもあるものの、情報が一つで完結仕切らない部分が(少なくとも自分と同僚には)あったので、自分の通った道をまとめてみました。
初学者の一助になりましたら幸いです。
想定使用環境
対応OS
Windows 10 professional
…を想定していますが、他の環境でもほとんど同様に通ると思います。
使用ソフト
軽率に壊して作り直すのが容易となるメリットを享受したいため、仮想環境上につくります。
必須(手順に盛り込みます)
- Oracle VM VirtualBox
- Vagrant
- Laravel Homestead
強く推奨(代替手段が分かる人はそれでも可)
- git for windows
- git bashを使用
推奨(代替手段がいっぱいあるのでお好みで)
- エディタ
- Visual Studio Code とか
なんか他にわかりやすい/面白い物があれば教えていただければ幸いです(小声)
実際に導入してみる
概要については以下の記事にほとんどまとまっています。
実際の導入もほぼ同様に可能…なのですが、ある程度補足はあるものの土台がlaravel5.4頃の記述なので、laravel6に即していない部分があったりするので注意。なお、本記事の段落とリンク先のstepを合わせて記述しています。
また、本来のLaravelのリファレンスもある程度読んでおくと良いでしょう。
仮想環境を入れる
1.VagrantとVirtal Boxのインストール
それぞれ
- https://www.vagrantup.com/downloads.html
- https://www.virtualbox.org/
から落としてください。参考までに、自分が使用したバージョン(11/10頃)
ソフト名 | バージョン |
---|---|
Vagrant | 2.2.6 |
VirtualBox | 6.0.14 |
2.Homesteadのvagrant boxを導入
Windowsのcmdでも一応打てるはずですが、以降git bashの使用を推奨します。
(user名)@(PC名) MINGW64 ~
vagrant box add laravel/homestead
3.Homesteadのダウンロード
今回はデスクトップに作成するものとします。場所に関してはある程度考慮するのが良いと思います。初学者の人は一度試しに作ったあと、二回目に場所を変更すると応用問題になると思います(自分個人としてはデスクトップじゃない方がいいと思っています)。
(user名)@(PC名) MINGW64 ~(以下省略)
$ cd ~
$ pwd
/c/Users/(user名)
$ cd Desktop/
$ pwd
/c/Users/(user名)/Desktop/
$ git clone https://github.com/laravel/homestead.git ./Homestead
4.Homesteadの設定ファイルの作成
デスクトップにフォルダが増えていると思うので、直接フォルダを開いて、"init.bat"を動かしましょう(mac/linuxは移動して"bash init.sh")。
"homestead.yaml"が生成されます。
5.SSH鍵ファイルの作成
既にできている場合(git bashはllエイリアスがありますが、実コマンドは多分"ls -l"。-alではなさそう。)
$ ll .ssh
-rw-r--r-- 1 user 197121 2610 MM月 DD HH:mm id_rsa
-rw-r--r-- 1 user 197121 574 MM月 DD HH:mm id_rsa.pub
出力がなかった場合はできていないので、以下のコマンドで作成しましょう。
$ ssh-keygen
いくつかコマンドが出ますが、Enterで飛ばして構いません。passphraseも改行2回で飛ばせますが、ある程度適当に入れることを推奨。SSHについて詳しくはまとめてくれている他記事を参照(以下は一例です)。
6.yamlファイルの編集
windows環境なら直接エディタで開いてしまうのが早いと思います。
他記事では大体"folders"が鬼門です。例によってデスクトップに作ることをひとまず前提にします(注記あり)。
---
ip: "192.168.10.10"
memory: 2048
cpus: 2
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: C:\Users\(user名)\Desktop\hoge #修正部分1
to: /home/vagrant/code
sites:
- map: homestead.test
to: /home/vagrant/code/moefan/public #修正部分2
databases:
- homestead
features:
- mariadb: false
- ohmyzsh: false
- webdriver: false
- mysql8: true #この行を追加
# ports:
# - send: 50000
# to: 5000
# - send: 7777
# to: 777
# protocol: udp
laravel6でだいぶ変わった部分のようで、laravel5の初期状態で入っていたbootstrapやvue/react、Database系といったものの大半が初期状態では入らなくなった模様。dbについては好みがあると思いますが、今回はひとまずmysql8を導入します(が本記事ではこの後使いません)。
Windows環境では以下の問題があるようです。
- mapを相対パスで書くとうまく動作しない(公式にも記述あり)
- →ホームディレクトリの"~"を使用せず"C:\"から始まる絶対パスで記述
- mapの中にバイト文字(例:日本語)が含まれていると、後の起動時にコケる
- →この例で言うと"(user名)"の部分が日本語だとコケるので、日本語が含まれない場所に作成する
自分は2に見事に引っかかりました…
またこのタイミングで、実際にlaravelを入れるフォルダを当該の場所に作成してください。この例では"C:\Users\(user名)\Desktop"に"hoge"を作成します。
7.仮想マシンの起動
先程Homesteadを入れた場所(記事としてはデスクトップ)に移動して、"vagrant up"を打ちます。
(user名)@(PC名) MINGW64 ~
$ cd Desktop/Homestead/
(user名)@(PC名) MINGW64 ~/Desktop/Homestead (master)
$ vagrant up
yamlで設定したIPの被りやBIOS側の仮想化支援機能などの問題がある場合もありますが、その部分のトラブルシュートは本記事では割愛します(先の5.4時代の記事などに対処があります)。
仮想環境にlaravelを入れる
8.仮想マシン上でlaravelをインストールする
(user名)@(PC名) MINGW64 ~/Desktop/Homestead (master)
$ vagrant ssh
問題がなければ、VMの中の仮想マシン(Ubuntu)にログインできるはずです。先程手順6で設定した"code"フォルダがマウントされているはずなので、そのフォルダに移動します。
vagrant@homestead:~$cd code/
本記事で言う"C:\Users\(user名)\Desktop\hoge"と同期しているはずなので、試しに以下のコマンドを打ってみましょう
vagrant@homestead:~/code $ touch hoge.txt
vagrant@homestead:~/code $ ls
(hoge.txtが出力される)
windows上からもフォルダを確認して、"hoge.txt"ができているかを確認しましょう(確認したら消しても構いません)。
同期が確認できたらlaravelのインストールです。
vagrant@homestead:~/code $ composer create-project laravel/laravel --prefer-dist moefan
moefanは任意名です(手順6の「修正部分2」と同じ)。windows上のフォルダにもmoefan(またはフォルダ名)が追加されていることを確認しましょう。
9.laravelページの表示(+α)
ここまでくればlaravelのページが表示できるはずです。
IPアドレスはyamlファイルの一番上の設定に準じますが、hostsを定義して別名でアクセスしてみましょう。
C:\Windows\System32\drivers\etc に"hosts"というファイルがありますので、「管理者権限」で編集します。
192.168.10.10 homestead.test
自環境では特にVMもwindowsも再起動無しで動きましたが、場合により再起動が必要になるかもしれません。
環境構築後
Laravel使い始めとして触ってみるオススメとか。
認証系
公式でほとんど搭載しているauthを有効にしてみるのが良いと思います。ただしwindows環境ではこの手順そのままだとエラーを吐くので、続き記事で書こうかと思います。
→書きました https://qiita.com/honami/items/48b39e12f81d1dbe49c4
公式チュートリアル
laravelのドキュメントでのチュートリアルは5.2までしか対応していないけど、ある程度同じで作れます。Qiitaのリンク先は5.7で5.1のチュートリアルをやったメモですが、ほぼ同様で(レイアウト崩れに目を瞑れば)完成します。これもどこかでまとめたほうがいいのかしら…
さいごに
この手順通りにやってもうまく行かなかった…ということもあるかもしれませんが、答えはだいたいネット上に落ちているので、見つけたらそっと指摘してやってください。
バージョンが上がって使えなくなる可能性もあると思います。その場合は土台が使えそうなら使いまわしつつ、新バージョン対応として記事とか書いておくと次の人が喜ぶと思います。