質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

Q&A

解決済

2回答

454閲覧

Vagrant upで複数の環境が起動してしまう

tuckQ

総合スコア64

VirtualBox

VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant

Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

0グッド

0クリップ

投稿2017/12/24 13:23

###前提

###実現したいこと
https://blogtest.app/(IP:192.168.10.10)

で開発を行うのが意図なのですが、Homesteadのディレクトリでvagrant upすると

http://127.0.0.1:8000/

でもアクセスが可能になります。

ためしにLaravelの初期画面に表示されるLaravelの文字をhogeに変更すると上記の両方で変更が反映されます。

意図している開発環境は

https://blogtest.app/(IP:192.168.10.10)

だけなので、http://127.0.0.1:8000/がくっついてくるのが気持ち悪いといいますか、どうしてこういう動きになるのか仕組みを理解しておきたいのですが、調べてもわからなかったので詳しい方がいらしたら教えていただけるとありがたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ベストアンサー

Homestead自体がVagrant Boxなのでそうなります。
下記にHomesteadについてステップバイステップで解説があるので参考になると思います。

https://qiita.com/7968/items/97dd634608f37892b18a#step-7%E4%BB%AE%E6%83%B3%E3%83%9E%E3%82%B7%E3%83%B3%E3%81%AE%E8%B5%B7%E5%8B%95

質問を勘違いしていたかもしれないので追記しておきます。

Homesteadの前にHomesteadが使っている、Vagrantというものなのですが、Rubyで書かれたVirtualBoxなどの仮想マシンソフトウェアに素早く開発環境を整えるためのソフトウェア(Rubyアプリ)です。
似たようなソフトウェアにDockerというソフトウェアもあります。(中身や仕組みは全く違います)

そして、127.0.0.1:8080はHomesteadの初期設定で設定で変更することが可能です。また、このネットワークアドレスは、VirtualBoxのネットワークアダプタのNAT機能を使ってアクセスできるようにしています。
なぜ8080ポートなのかは知りませんが、歴史的にJavaのWebアプリ開発時によく使用するTomcatでは初期設定で8080ポートが使われることが多いです。

投稿2017/12/24 14:54

編集2017/12/24 15:19
Tomak

総合スコア1652

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tuckQ

2017/12/26 12:23

Tomakさん、aro10さん、ご回答ありがとうございます。 Homestead.yamlは以下のように設定しており、期待する動作としては、192.168.10.10だけでLaravelが起動するというものでした。 しかし、HomesteadがVagrantベースのもののため、vagant upすると自動的に127.0.0.1の環境でもLaravelが起動する仕様という理解でよいでしょうか? ``` 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: blogtest.app to: /home/vagrant/code/public databases: - homestead # blackfire: # - id: foo # token: bar # client-id: foo # client-token: bar # ports: # - send: 50000 ``` hostsファイルは以下のように設定しています。 ``` 127.0.0.1 localhost 255.255.255.255 broadcasthost ::1 localhost 192.168.10.10 blogtest.app ``` ちなみに、 vagrant upしたときも ``` homestead-7: SSH address: 127.0.0.1:2222 ``` という風に表示されます。 ``` homestead-7: SSH address: 192.168.10.10 ``` とならないのはナゼなんだろう?というのも疑問です。 プロジェクトのディレクトでphp artisan serveするとここでも下記のように192.168.10.10ではなく127.0.0.1:8000が対象として表示されます。 ``` php artisan serve Laravel development server started: <http://127.0.0.1:8000> ``` Homesteadを使っている場合は、php artisan serveする必要ないよと別スレで回答をいただいたことがありますが、なぜphp artisan serveが必要ないのかまで理解を深めることはできませんでした。 このあたりの疑問を解消してくれる文献などあるでしょうか? わたしの質問が下手でうまく伝わってなかったらゴメンなさい。
Tomak

2017/12/26 14:53

まず、NATやポートフォワードという仕組みはご存知でしょうか? あまり気にしなくて良い部分なのですが気になるのであれば下記をご覧ください。端的に言うと「両方設定されているから」ということになります。 ■Homesteadの構成 ---- Vagrant + VirtualBox + homestead.yaml 「192.168.10.10」のほうは、ローカル上のVirtualBoxのソフトウェアネットワークアダプタ上にNATで設定しただけのもので、ホストマシンから「192.168.10.10」でVirtualBoxの仮想マシンを見に行けるようにしてあります。 下記はHomestead(VirtualBox)の仮想マシン中にアクセスできるネットワークアドレスです。Webサーバーの設定に依存しますが、直接IPアドレスをブラウザ上に入力してもアクセスできます。 ---- 192.168.10.10:80 一方、ホストマシン上からは下記のように「ホストマシン:8000番ポート → VirtualBox内マシン:80」にポートフォワードされているのでブラウザ上でそのように見えます。(実際には少し違います) ---- 127.0.0.1:8000 or localhost:8000 <=> 192.168.10.10:80 私の環境の例ですが、ルーティングテーブルは下記のようになっています。 ---- > route Kernel IP routing table Destination   Gateway  Use Iface 10.0.2.0    *      eth0 192.168.110.0 *      eth1 default     10.0.2.2  eth0 SSHはデフォルトでVagrant上で「127.0.0.1:2222」にポートフォワードされています。 ---- 127.0.0.1:2222 or localhost:2222 => 192.168.10.10:22 この「127.0.0.1」はループバックアドレス(loopback address)と呼ばれ、Linuxなどでは「lo」と表示されます。ほとんどの初期設定で「127.0.0.1」と「localhost」は同じ意味です。 余談ですが、通信にはTCPやUDPプロトコルを使う方法と、ソケットを使う方法があるのですが、IPアドレス「127.0.0.1」で「8000」ポートというのはTCPやUDPを使った方法です。ソケット通信は「ソケットファイル」を使って通信します。MySQLなどのDBはよく両方に対応しています。
tuckQ

2017/12/28 13:27

NATやポートフォワードは、VIrtualBoxのマニュアルに記載されていたので予習をしておりました。ご説明いただいた内容でようやく仕組みを理解できました。おかしな環境設定になっているのでは?と気になってしまいモヤモヤしていましたが、これで開発に集中できそうです。大変ご丁寧に説明いただきありがとうございました!
guest

0

補足情報としては、Homestead.yaml記載のポートフォワード設定の働きによるものなので、以下を確認してみて下さい。
Laravel 5.5 Laravel Homestead

HTTP: 8000 → フォワード先 80

投稿2017/12/25 02:34

aro10

総合スコア4106

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問