はじめに
前回の記事:Qiita - 【Laravel超入門】開発環境の構築(VirtualBox + Vagrant + Homestead + Composer)
前回の記事は Laravel 5.4 のときに構築した手順です。
少し古い箇所もあるため書き直しました。
今回は下記のバージョンで構築した手順を記載しています。
OS | git | VirtualBox | Vagrant |
---|---|---|---|
macOS High Sierra 10.13.6 | 2.19.1 | 5.2 | 2.1.5 |
Laravel の最新バージョンのダウンロード方法と、LTS の Laravel 5.5 の最新バージョンのダウンロード方法を説明しています。
今回は mac のみの手順となります。Windowsの方は前回の記事を参考にしてください。
前回の記事の第1章から第5章で Laravel、VirtualBox、Vagrant、Homestead、Composerの基本的な説明をしております。
この記事では第6章にあたる開発環境の構築のみ言及しています。
基本的なことについて理解していない方は、前回の記事をご覧ください。
開発環境の構築
Homestead を利用して、開発環境の構築をしていきましょう。
- Vagrant と VirtualBox のダウンロードとインストール
- Homestead vagrant box のダウンロード
- Laravel Homestead のダウンロード
- Homestead の設定ファイルの作成
- SSH 鍵ファイルの作成
- Homestead の設定ファイルの編集
- 仮想マシンの起動
- 仮想マシン上で Composer を利用して、Laravel ファイルをダウンロードする
- Laravel ページの表示
Step 1 Vagrant と VirtualBox のダウンロードとインストール
Vagrant のインストール
Vagrant を DOWNLOAD VAGRANT からダウンロードして、インストールしてください。
###VirtualBox のインストール
VirtualBox を Download VirtualBox からダウンロードして、インストールしてください。
「Download VirtualBox 5.2」を選択したあとに、mac の方は「OS X hosts」を選択してください。
ダウンロード後、インストールしてください。
私の環境では、VirtualBox のインストールを試したときに「インストールできませんでした」と表示されました。
新しい mac ではセキュリティ強化のために「許可」する必要があります。
「システム環境設定 > セキュリティとプライバシー」を開いてください。
「ダウンロードしたアプリケーションの実行許可」の「開発元"Oracle America, Inc."のシステムソフトウェアの読み込みがブロックされました。」の右側に「許可」があります。
「許可」を選択してください。
クリックしても反応しない場合があります。
その場合は、セーフモードで起動して、「許可」してください。
セーフモードは起動時に「shift」キーを教えて起動できます。
セーフモードで起動する
セーフモードで起動するには、以下の手順を実行してください。
1.mac を起動または再起動して、すぐに「shift」キーを押し、そのまま押し続けます。Apple ロゴが画面に表示されます。Apple ロゴが表示されない場合の対処法については、こちらの記事を参照してください。
2.ログインウインドウが表示されたら「shift」キーを放します。起動ディスクが FileVault で暗号化されている場合は、ログインが 2 回必要になることがあります。1 回目で起動ディスクのロックが解除され、2 回目で Finder にログインします。
セーフモードで起動すると「許可」できます。
「許可」したらセーフモードは必要ないので、再起動してください。
Step 2 Homestead vagrant box のダウンロード
ターミナルから下記のコマンドを打って、Homestead vagrant box をダウンロードしてください。
vagrant box add laravel/homestead
Enter your choice
とお使いの仮想化ソフトウェアを聞かれます。
今回は virtualbox を利用しますので、Virtualbox の番号を入力してください。
私が試したときは、 3) virtualbox
と表記されていたので、 3
と入力しました。
これで、ダウンロードが開始されます。
私の環境では、約 10 分ほどかかりました。
Step 3 Homestead のダウンロード
任意のディレクトリを作成して、そこに Homestead のファイルをダウンロードします。
ディレクトリの作成場所は、ユーザーディレクトリの直下などターミナルからアクセスしやすいディレクトリがよいかと思います。
この記事では、ホームディレクトリ(/Users/ユーザー名)の直下に Homestead のファイルをダウンロードします。
/Users/ユーザー名/Homestead/以下ファイル
ダウンロード時に Homestead のフォルダが作成されますので、予め作成しておく必要はありません。
ユーザー名の直下のディレクトリに移動してください。
ユーザー名の直下に移動するには下記のようにコマンドを打ちます。
cd ~/
下記のコマンド打ち Homestead のファイルをダウンロードします。
git clone https://github.com/laravel/homestead.git Homestead
mac を利用している方で、gitコマンドをはじめて使う方は、Xcode をインストールする必要があります。
App Store から Xcode をインストールした後に、再度コマンドを打ってください。
Step 4 Laravel Homestead の設定ファイルの作成
ダウンロードした Homestead のフォルダに移動してください。
今回、ユーザー名直下に Homestead のファイルをダウンロードしたので、下記のディレクトリに移動します。
Users\ユーザー名\Homestead
Homestead ディレクトリに移動したら、下記のコマンドを入力してください。
bash init.sh
Homestead initialized!
と表示され、Homestead.yaml
が作成されます。
YAML って何?
このYAML(ヤムル・ヤメル)ファイルとは何者なのか簡単に見ていきましょう。
YAML は 「YAML Ain't a Markup Language」 の略で 「YAMLはマークアップ言語ではない」 という意味です。
HTML(HyperText Markup Language)のようなマークアップ言語ではないということですね。
YAMLファイルの拡張は yml
または yaml
です。
YAML は 主に設定ファイル を記述するのに用いられる言語です。
YAML には 読みやすい、書きやすい、わかりやすい という特徴があります。
例えば、配列を表すには先頭に -
を入力するだけです。
- aaa
- bbb
- ccc
こんな感じで簡単に記述できます。
実際に Homestead.yaml
の記述を見ると簡単な記述です。
Homestead.yaml
の記述を変更する前に SSH鍵ファイルを作成しましょう。
Step 5 SSH鍵ファイルの作成
SSH とは Secure Shell(セキュアシェル)の略で、暗号や認証の技術を利用して、安全にリモートコンピュータと通信するためのプロトコルです。
ホストOSとゲストOSとのやり取りは SSH で行います。
SSH でやり取りするのに必要な鍵を作成します。
まずは、既にSSH鍵ファイルが作られていないか確認します。
ホームディレクトリ移動します。
cd ~/
ホームディレクトリに移動した後に、下記コマンドを打ち、SSH鍵ファイルが存在しないか確認します。
ls -la I grep .ssh
id_rsa
と id_rsa.pub
が表示されれば、既にSSH鍵ファイルはあります。
無い方は、作成します。
ssh-keygen -t rsa
Enter file in which to save the key
と保存するディレクトリを聞かれるので、そのまま enter を押します。
Enter passphrase
パスフレーズを求められますので、任意のパスフレーズを入力してください。
再度パスフレーズを求められるので、先程入力したパスフレーズを入力してください。
これでSSH鍵ファイルが作成されます。
確認のために先程のコマンドを入力してみましょう。
ls -la I grep .ssh
id_rsa
と id_rsa.pub
が表示されます。
Step 6 Homestead の設定ファイルの編集
Homestead の設定を記述した Homestead.yaml というファイルがあります。
設定の変更・確認するには Homestead.yaml を利用します。
今回、Homestead.yaml の初期設定のまま利用するため、基本的には編集する必要はありませんが、編集方法を一通り説明します。
このあとの手順でネットワークのエラーが表示された方は、 Homestead.yaml の設定を変更する必要があります。
一通り読んで把握してください。
最初に Homestead のディレクトリに移動してください。
cd ~/Homestead
このディレクトリに Homestead.yaml があります。
フォルダを開いて、直接テキストエディタで編集することもできますが、今回はターミナル上から編集します。
Homestead のディレクトリに移動したら vim Homestead.yaml
と入力して Homestead.yaml を開きましょう。
vim というのは高機能なテキストエディタのことで、ターミナル上からファイルを編集できます。
下記が Homestead.yaml のデフォルトの記述です。
---
ip: "192.168.10.10"
memory: 2048
cpus: 1
provider: virtualbox
authorize: ~/.ssh/id_rsa.pub
keys:
- ~/.ssh/id_rsa
folders:
- map: ~/code
to: /home/vagrant/code
sites:
- map: homestead.test
to: /home/vagrant/code/public
databases:
- homestead
# ports:
# - send: 50000
# to: 5000
# - send: 7777
# to: 777
# protocol: udp
# blackfire:
# - id: foo
# token: bar
# client-id: foo
# client-token: bar
# zray:
# If you've already freely registered Z-Ray, you can place the token here.
# - email: foo@bar.com
# token: foo
# Don't forget to ensure that you have 'zray: "true"' for your site.
~
~
~
~
~
~
~
~
~
様々な記述がありますが、変更するなら folders
の設定かと思います。
mac 側と仮想環境側のフォルダを共有するとこで、mac 側から Laravel のファイルを変更することができます。
その共有フォルダの設定が folders
です。
folders
の map
は mac 側の共有ディレクトリのことで、デフォルトでは ~/code
です。
これはユーザー名直下の code
ディレクトリを指しています。
code
ディレクトリはありませんので、code
フォルダを作成してください。
/Users/ユーザー名/code
今後、code
フォルダに Laravel 自体のファイルをここに入ります。
フォルダ名やディレクトリの位置を変更したい方はここのパスを変更するようになります。
folders
の to
の /home/vagrant/code
は仮想環境側の共有フォルダのディレクトリです。
今後、仮想環境にアクセスしてこのディレクトリに移動して操作をすることもあるので、ディレクトリの位置だけ覚えておいてください。
ちなみに、vim で開いた状態で i
を入力すると INSERT モードになり、編集ができます。
ディレクトリなど変更する場合は、 i
を入力してから適宜変更してください。
esc
を押すと INSERT モードが解除されます。
:wq
を押して enter を押すと上書き保存されます。
今回は、folders
について説明しましたが、Homestead.yaml
では下記の設定が可能です。
項目 | 内容 |
---|---|
ip | Vagrant に割り当てられるIPアドレス。 |
memory | 仮想サーバに割り当てるメモリの容量。 |
cpus | CPUの数。 |
provider | 利用する仮想化ソフトウェアの指定。Vagrant では仮想化ソフトウェアのことをプロバイダと呼びます。 |
authorize | SSH公開鍵のディレクトリ。 |
keys | SSH秘密鍵のディレクトリ。 |
folders | 共有フォルダの指定です。map がホストOS側のディレクトリで、to がゲストOS側のディレクトリ。 |
sites | ホスト名 homestead.test でアクセスしたときに to に記載した仮想マシンのディレクトリを参照。 |
databases | データベース。 |
Step 7 仮想マシンの起動
今までの手順通りなら、Homestead のディレクトリにいると思いますが、別のディレクトリにいる方は、Homestead のディレクトリに移動してください。
今回の場合なら、下記のように記述すると Homestead ディレクトリに移動します。
cd ~/Homestead
Homested ディレクトリに移動した後に下記のようにコマンドを入力します。
vagrant up
仮想マシンが起動します。
vagrant up
に成功した方は、VirtualBox を見ると homestead-7 と表示され、起動しているのを確認できます。
私の場合は vagrant up
をしたときに下記のエラーが表示されました。
同様のエラーが表示された方は、参考に対処してください。
エラーが表示されなかった方は、次のステップへ進んでください。
【エラー】ネットワークの設定エラー
私の環境では、vagrant up
を行ったときに、下記のネットワークのエラーが表示されました。
The specified host network collides with a non-hostonly network!
This will cause your specified IP to be inaccessible. Please change
the IP or name of your host only network so that it no longer matches that of
a bridged or non-hostonly network.
mac のローカルIPアドレスと ホストオンリーネットワークが同じセグメントにあるのでエラーが表示されました。
別のセグメントに変更する必要があります。
mac のローカルIPアドレスは、ifconfig
で確認できます。
確認すると、おそらく、192.168.○○.○
になっているはずです。
私の場合は、mac のローカルIPアドレスが 192.168.10.○
で、Homestead.yaml
で設定したIPアドレスも 192.168.10.10
にしており、同じセグメントになっておりました。
別のセグメントにするために Homestead.yaml
の IP を 192.168.30.10
に変更しました。
その後に、Homestead のディレクトリ内で vagrant up
をすると問題なく仮想マシンが起動しました。
Step 8 仮想マシン上で Composer を利用して、Laravel ファイルをダウンロードする
vagrant up
で仮想マシンは起動されていますので、仮想マシンを操作するために仮想マシンにログインします。
vagrant ssh
ターミナルの先頭の文字が vagrant@homestead:
になります。
これは仮想マシン上にログインして操作しているためです。
SSHを利用して仮想マシンにログインしたので、次は code
ディレクトリに移動します。
cd code
Laravel の最新バージョンを利用したい方は下記のコマンドでダウンロードできます。
laravel new
LTS の Laravel 5.5 を利用したい方もいるかと思います。
Lravel 5.5 の最新バージョンをダウンロードするときは、下記のコマンドでダウンロードできます。
composer create-project --prefer-dist laravel/laravel blog "5.5.*"
いずれかのコマンドを打つとダウンロードが開始されます。完了するまでに、私の環境では約 10 分ほどかかりました。
バージョンを指定する方法では、code
内に blog
フォルダが作成され、その中に Laravel のファイルがダウンロードされます。
現在、仮想マシンにログインした状態なので、ターミナルの先頭の文字も vagrant@homestead
になっているはずです。
仮想マシンの code
フォルダは mac のユーザーフォルダ直下の code
と共有されるように設定されています。
この共有設定は先ほど説明した通り、 Homestead.yaml
の folders
に記述しています。
folders:
- map: ~/code
to: /home/vagrant/code
mac のユーザーフォルダ直下の code
フォルダを開いてください。
blog
フォルダ内に Laravel のファイルがダウンロードされているのが確認できます。
先ほどの Homestead.yaml
の sites
を改めて見てみましょう。
sites:
- map: homestead.test
to: /home/vagrant/code/public
to
は仮想マシン側を表していますが、/home/vagrant/code/public
になっています。
現状は blog
フォルダを新たに作成してそこに Laravel のファイルをダウンロードしたため、/home/vagrant/code/blog/public
になっています。
blog
の階層は不要です。
blog
フォルダ内にある全てのファイルを、一つ上の階層の code
直下に移動してください。
code
フォルダ内は mac と仮想マシンで共有されているので、この移動は mac の code
フォルダを開いてファイルをドラッグして移動しても問題ありません。
ターミナル上で仮想マシン側で操作したい方は、cd blog
で blog
フォルダに移動してください。
下記のコマンドで blog
フォルダ内のファイルを一つ上の階層へ移動できます。
mv ./* ..
cd ~/code
で code
フォルダに移動してください。
ls
を入力すると code
フォルダ内にあるファイル・フォルダの一覧を確認できます。
blog
フォルダは不要ですので、下記のコマンドで削除できます。
rmdir blog
現在、仮想マシンに入っているので、vagrant@homestead:
で始まっているかと思います。
仮想マシンからログアウトするときは、logout
とコマンドを打つとログアウトします。
仮想マシン上での操作は一通り終わりましたので、ログアウトしてください。
今回、blog
フォルダ内にダウンロードしてから一つ上の階層へ移動するという無駄な作業をしています。
composer でダウンロードするときに blog
フォルダを作らずにカレントディレクトリにダウンロードする方法を調べましたが、わかりませんでした。
composerで新たにフォルダを作らずにカレントディレクトリにダウンロードするコマンドをご存知の方は、教えてください。
Step 9 Laravel ページの表示
Homestead.yaml
に記述した IPアドレスにブラウザからアクセスすると下記の Laravel ページが表示されます。
設定を変更していない方は、192.168.10.10
で、私の変更された方は 192.168.30.10
です。
私の場合は、Homestead.yaml
の IP を 192.168.30.10
に設定したため、ブラウザで 192.168.30.10
を入力するとLaravelのページが表示されます。
設定を変えていない方は、192.168.10.10
で表示されるはずです。
IPアドレスでアクセスしても問題はないですが、わかりやすいように homestead.test
と入力しても、Laravel のページが表示されるように設定してみましょう。
設定するには、ホスト名 homestead.test
とIPアドレスの対応付けをします。
mac の場合
mac の場合は、ホスト名とIPアドレスの対応付けは /etc/hosts
に記述されています。
Homestead.yaml を編集したときと同じく vim
を使って hosts
を編集します。
hosts
は管理者権限がないと編集できないので、管理者権限で編集するために頭に sudo
と記述します。
sudo
と記述すると、管理者権限で実行できます。
sudo vim /etc/hosts
管理者権限で実行したため、パスワードを入力が必要になると思いますので、mac のパスワードを入力してください。
hosts ファイルが表示されますので、i
を入力して INSERTモードにし、最後の行に下記を追加します。
192.168.10.10 homestead.test
私の環境と同じように 192.168.30.10
にされた方は下記のように記述してください。
192.168.30.10 homestead.test
esc
を押し、INSERTモードを終了します。
:wq
を入力し、enter を押して上書き保存します。
これでブラウザから homestead.test
を入力すれば、Laravelのページが表示されるようになります。
vagrant を終了するときは、下記のコマンドで終了させてください。
vagrant halt
php artisan migrate でエラーが発生する
php artisan migrate
を実行すると下記のエラーが表示されました。
In Connection.php line 664:
SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = homestead and table_name = migrations)
In Connector.php line 67:
SQLSTATE[HY000] [2002] Connection refused
これは mac 側から php artisan migrate
を実行しているためです。
vagrant ssh
で仮想マシンへログインして、Laravel のファイルをダウンロードしてあるディレクトリ(この記事では code
)に移動して php artisan migrate
を実行すると問題なく実行できました。
mac 側から php artisan migrate
を実行したい場合は、/Users/ユーザー名/code
にある .env
を開いて編集する必要があります。
.
からはじまるファイルは最初から表示されていません。
command + shift + .
で .
からはじまるファイルが表示されます。もう一度押すと非表示になります。
.
からはじまるファイルを誤って削除すると動作しなくなる場合がありますので、削除しないように気をつけてください。
.env
をテキストエディタで開くと下記の記述があります。
(テキストエディタではなく、ターミナル上から vim
で開いても結構です。)
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=homestead
DB_USERNAME=homestead
DB_PASSWORD=secret
127.0.0.1
を 192.168.10.10
に変更して保存してください。
私のように Homestead.yaml の IP を 192.168.30.10
に変更した方は、192.168.30.10
としてください。
TIPS
仮想マシンを起動・停止するには?
Vagrantfile があるディレクトリに移動してから、vagrant up
してください。
Homestead を利用して開発環境を構築した方は、Homestead ディレクトリに Vagrantfile があります。
仮想マシンの起動だけではなく、vagrant halt
で仮想マシンの停止をする場合も Vagrantfile があるディレクトリに移動してからコマンドを打ってください。
別のディレクトリで vagrant up
を打つと下記のエラーが表示されます。
A Vagrant environment or target machine is required to run this
command. Run `vagrant init` to create a new Vagrant environment. Or,
get an ID of a target machine from `vagrant global-status` to run
this command on. A final option is to change to a directory with a
Vagrantfile and to try again.
vagrant ssh
で仮想マシン内で操作している方は、logout
と打つとホストOSのディレクトリに戻ります。
ホストOSの Vagrantfile があるディレクトリに移動してから、vagrant halt
などを入力してください。
よく使う Vagrant & Linux/Unix コマンド一覧
vagrant を利用するときに、よく使うコマンドです。
コマンド | 内容 |
---|---|
vagrant up | 仮想マシンの起動 |
vagrant halt | 仮想マシンの停止 |
vagrant ssh | 仮想マシンにSSHでログイン |
vagrant status | 仮想マシンの状態を確認 |
vagrant reload | 仮想マシンの再起動 |
vagrant destroy | 仮想マシンの破棄 |
vagrant suspend | 仮想マシンの一時停止 |
vagrant resume | 一時停止の復帰 |
vagrant -v | vagrant のバージョン確認 |
vagrant box list | ダウンロード済みのboxを確認 |
vagrant box remove xxx | boxの削除 xxxにはbox名を入力 ※homesteadを削除するなら vagrant box remove laravel/homestead
|
logout | 仮想マシンからログアウト |
Laravel を学べる書籍
2018年11月現在、Laravel について学べる代表的な書籍は下記の3冊になるかと思います。
他におすすめの書籍があれば教えてください。
「PHPフレームワークLaravel入門 第 2 版」 秀和システム(2019/12/27)
本のタイトルの通り、Laravel入門者向けの書籍です。
2019 年 12 月 27 日に第 2 版が販売されました。
私は第 1 版しか見たことありませんが、第 2 版は Laravel 6 に対応しているようです。
Laravel 6 に対応しているのは嬉しいですね。
引用:PHPフレームワークLaravel入門 第2版 | 掌田津耶乃 |本 | 通販 | Amazon
「絶対に挫折させないアプリ開発 はじめてのLaravel」(2018/10)
PHP と Laravel の違い、フレームワークを利用するメリットを学ぶことを目的とした書籍です。
TODO アプリを素の PHP、Laravel(ルーティングメイン)、Laravel(MVC)で3回作成することで、PHP と Laravel の違いを学ぶことができます。
実際にコードベースで Laravel(フレームワーク)を利用するとどんなメリットがあるの?という方に最適です。
PHP でも TODO アプリを作成するため、理解するには PHP の基本的な知識な必要になります。
Laravel の基礎的なことは「PHPフレームワーク Laravel入門」の方がより詳説しているので、Laravel入門者は「PHPフレームワーク Laravel入門」で学んだ後にこの書籍を手に取るのがよいかと思います。
書籍版とダウンロード版があります。
引用:絶対に挫折させないアプリ開発 はじめてのLaravel - plumsa - BOOTH(同人誌通販・ダウンロード)
「PHPフレームワーク Laravel Webアプリケーション開発 バージョン5.5 LTS対応」ソシム (2018/9/26)
Laravel の基礎を学んだ後に、より深く知りたい方向けの書籍です。
右も左もわからない方には理解するのが難しいと思うので、入門書を終えてステップアップしたい方はこちらの書籍を読みましょう。
note
note でも記事を公開してるので、興味がある方はご覧ください。