Laravelって出すとこまで。
”Windows10で”と言ってますが、やることはWindows7とか8.1と差異ないと思います。
#Homesteadとは
PHP、Laravelによる開発のために必要なあれやこれやがひとまとめになっている、Laravel公式による仮想環境(VM)用のパッケージです。
LaravelやPHPはもちろん、elixirというlaravel版タスクランナーツールに必要なnode、WebサーバのNginx、
DBへのアクセスを補助してくれるmemcachedとかも入っています。
VMなので気軽に環境を破棄したり再構築したりできるという利点もあります。
まあ要はこれいれちゃえばそのまま開発できるよ!っていうまるごとパック的な感じです。
必要なファイルをインスコする
それぞれインストーラーにしたがってインストールすればOK。
セットアップする
インストールできたらBashを使いたいのでgit bashを起動する。git for windowsに同梱されてます。
起動できたらコマンドを上から順に実行する。
#homesteadに用いる仮想環境用の下地(boxファイル)をつくる
vagrant box add laravel/homestead
#実行すると、このボックスをなんのツールで動かすか聞かれるのでvirtualboxを選択してenter。でもどっちでもいいかもしれない
#homesteadのgitレポジトリをHomesteadというディレクトリの中に作成する
git clone https://github.com/laravel/homestead.git Homestead
#完了したらディレクトリに移動
cd /Homestead
#設定ファイルとかつくる(初めてHomesteadを入れるマシンの場合は必須)
./init.sh
>Homestead initialized!
#上のメッセージが出たら移動してyamlファイルを編集
cd ~/.homestead/
vi Homestead.yaml
#vimが苦手な人はpwdでエクスプローラーから直接エディタ起動していじるなりどうぞ
yamlファイルをいじる
いじるのはfolders
とsites
の2つだけだと思いますが、一応何が割り当てられてるのは書いておきます。
ip: "192.168.10.10" #接続先となるIPアドレス
memory: 2048 #割り当てるメモリ(MB)
cpus: 1 #同CPUのコア数
provider: virtualbox #VMのホスト
authorize: ~/.ssh/id_rsa.pub #SSH公開鍵の場所
keys:
- ~/.ssh/id_rsa #秘密鍵の場所
folders:
- map: D:\homestead\Laravel #ローカルのディレクトリ
to: /home/vagrant/Code #VM上のディレクトリ
sites:
- map: homestead.app #ホスト名
to: /home/vagrant/Code/test/public #web上に公開するディレクトリ(Apacheのhtdocsみたいなもん)
databases:
- homestead
上のmapとtoは相関関係にあり、ローカル(このマシン)と、これからつくるVMでディレクトリの内部を共有します。
つまり、sites:to
の/home/vagrant/Code/test/public
は、ローカル上のディレクトリD:\homestead\Laravel\test\public
のことであると読み替えることができます。これは覚えておいてください。もちろん、共有しているので、その中身にはローカルとVM、どちらからでもアクセスできます。
また、**この環境構築をまっさらな状態から始める場合は、マシン上でfolders:map
にあたるディレクトリを予め作っておいてください。**じゃないとこの後の工程でつまります。
鍵を作る
VMに入るための鍵を作る。MacやLinuxと異なり、windowsはgit for windowsの中に鍵作成機能があります。最初にインストールしたのはそのためです。
公開鍵?秘密鍵?なにそれおいしいの?という方はこのへんとか
このへんとか読んでおくと幸せになれるかもしれません。
【2020/02/03追記】
鍵作成コマンドに鍵長を追加し、4096にしました。
暗号化形式を変更する場合は -t
で設定できます。(無指定の場合はrsa)
-C <自分のメールアドレス>
を指定するケースもありますが、今回は省略しています。
PC内部に建てるVMでインターネットには出さない想定ですが、まあ一応ということで。
詳細は【 ssh-keygen 】コマンド――SSHの公開鍵と秘密鍵を作成するを参照して下さい。
#鍵をつくる用のフォルダを作成して移動
mkdir ~/.ssh && cd $_
#鍵作成
ssh-keygen -b 4096
#パスフレーズを入れる・入れないは自由。鍵ファイル名はHomestead.yamlのそれと合わせるようにしてください。
Generating public/private rsa key pair.
Enter file in which to save the key (xxxxx): ~/
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
成功すると、こんなのが出ます。
The key fingerprint is:
SHA256:xxxxxxxxxxxxxxx yyyyy@zzzzz
The key's randomart image is:
# 変な絵みたいのが出てくる
Enter file in which to save the key
で指定したファイルにlsコマンドを実行し、
- 秘密鍵(id_rsa)があるか
- 公開鍵(id_rsa.pub)があるか
を確認します。
#hostsファイルを書き換える
IPアドレスからVMの環境に転送するために、hostsファイルを編集し、
yamlファイルに従って以下を追加する。
windowsマシンではC:\Windows\System32\drivers\etc\hosts
にあります。
編集前・編集後に書き込み権限の設定を忘れないように。
//左がIPアドレス、右がホスト名(sitesのmap)
192.168.10.10 homestead.app
vagrant起動
いよいよ仮想マシンを起動します。
起動前に先ほどのディレクトリを作ったか確認して、以下のコマンドを実行。
cd ../Homestead
vagrant up
なんかいろいろ出ますが、数分で起動します。
laravelのプロジェクトを作成する
ここで、homestead.appにアクセスしても、no input file specifiedと表示されるだけです。yamlファイルで指定したWeb上での公開ディレクトリになにもないからです。というかディレクトリがないからです。
conposerを使ってLaravelのプロジェクトを新規作成します。
#vagrantにssh接続
vagrant ssh
#VM上のローカル共有ディレクトリに移動
cd Code/
#conposerが最新のバージョンか確認、最新じゃなかったらアップデートをかける
sudo composer self-update
#プロジェクト作成
composer create-project laravel/laravel Laravel --prefer-dist
いろいろインスコが始まりますので待ちます。数分かかります。
終わったらvagrantの中身そのものには用がなくなるので、exit
でVMから抜けても大丈夫です。VMをシャットダウンしてはダメですよ。
アクセスしてみる
ここまで終わったら、あとはアクセスしてみるだけです。VMが起動していることを確認して、
http://homestead.app/
にアクセスしてみましょう。
上のように表示されていれば、環境構築は完了です。お疲れ様でした。
開発頑張ってください。
#no input file specifiedから変わらないんだけど
自分もここであれってなりました。
上の表示を出しているのは、Laravelのプロジェクト内、public直下のindex.php
です。
そこまでのローカルのディレクトリが、yamlファイルのsites:to
に表記されたディレクトリと相違ないか確認してみてください。
そこを修正すればほぼ間違いなく出ると思います。自分はこれで出ました。
ローカルの階層とyaml、どちらに合わせても大丈夫です。VMのディレクトリを直すのはやめたほうがいいです。
出なかったらごめんなさい。Google先生に聞いてみてください。
7/28追記 artisanコマンドの実行場所
上記構成で構築した場合、artisanコマンドは以下のように実行します。
//VMに入って
vagrant ssh
//プロジェクトフォルダへ移動
cd Code/Project
php artisan list
Composerとかもここから実行します。
ローカルマシン側のプロジェクトフォルダからは実行できませんのでご注意ください。
参考
2016/02/20におけるLaravel Homestead導入 on Windows
HomesteadをつかってLaravel5を動かしてみる
Laravel Homesteadを使ってみよう!
Laravel 5.1 Laravel Homestead(公式ドキュメント)