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

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

ただいまの
回答率

91.26%

  • Laravel 5

    1024questions

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

  • Vagrant

    938questions

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

  • VirtualBox

    537questions

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

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

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 79

tuckQ

score 52

前提

  • Macを利用
  • HomesteadでLaravel環境を構築中
  • homestead.yamlやhostsを編集して「https://blogtest.app/(IP:192.168.10.10)」を登録

実現したいこと

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

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/26 21: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が必要ないのかまで理解を深めることはできませんでした。

    このあたりの疑問を解消してくれる文献などあるでしょうか?

    わたしの質問が下手でうまく伝わってなかったらゴメンなさい。

    キャンセル

  • 2017/12/26 23: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はよく両方に対応しています。

    キャンセル

  • 2017/12/28 22:27

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

    キャンセル

0

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

HTTP: 8000 → フォワード先 80

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

ただいまの回答率

91.26%

関連した質問

同じタグがついた質問を見る

  • Laravel 5

    1024questions

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

  • Vagrant

    938questions

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

  • VirtualBox

    537questions

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