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

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

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

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

Q&A

解決済

1回答

1888閲覧

AWS Cloud9のサーバの仕組み(Laravel)

gi_sa

総合スコア7

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

0グッド

0クリップ

投稿2021/02/19 03:14

AWS Cloud9のサーバの仕組みについて、
初心者のため、初歩的な質問で申し訳ございませんがご教示いただけますと幸いです。

Cloud9では、動作確認をする際に以下の手順で行いますが、
それぞれの意味を教えていただきたいです。

1.php artisan serve --port=8080 でサーバを立ち上げる。
2. Preview->Preview Running Application で確認する。

疑問点としまして、以下2点ございます。

■疑問点1
1.を実行した後にLaravel development server started: http://127.0.0.1:8080 と表示されるので、
**http://127.0.0.1:8080**に直接アクセスをすると以下のエラーになる。


 このサイトにアクセスできません
127.0.0.1 で接続が拒否されました。
次をお試しください

接続を確認する
プロキシとファイアウォールを確認する
ERR_CONNECTION_REFUSED


AWS Cloud9の中でプレビュー+ブラウザへの矢印ボタンを押すと以下のようなURLで結果を確認できるのに対し、
https://4a08095c5de34b31937db2dc5a9b3018.vfs.cloud9.ap-northeast-1.amazonaws.com/

直接**http://127.0.0.1:8080**にアクセスするとなぜこのようなエラーになるのでしょうか?
AWSサイトには以下の文章が記載されていましたが、理解できませんでした。

IDE 内のアプリケーションプレビュータブまたは IDE 外の別のウェブブラウザタブを使用して、
IP (127.0.0.1、localhost、または 0.0.0.0) に移動しようとすると、
AWS Cloud9 IDE に組み込まれたデフォルトの動作では、環境 に接続されたインスタンスや独自のサーバーに移動する代わりに
ローカルコンピュータに移動しようとします。

■疑問点2
ドットインストールの教材(ドットインストールではvagrantでのローカル開発環境)で進めていたのですが、
そちらでは ip aでIPアドレスを調べてphp artisan serve --host 192.168.33.10 -- port 8000を実行、
出てきたURLにアクセスをした結果、正常に接続されていてちゃんと表示されていました。

AWS Cloud9ではパブリックIPアドレスを得るためには特殊な作業が必要(AWSサイト->インターネット上で実行中のアプリケーションを共有)とのことですが、
ターミナルで ip aとして出てきた以下のIPアドレス(172.31.34.85)はローカルIPアドレスという認識で合っていますでしょうか?
上記と同じように、php artisan serve --host 172.31.34.85 -- port 8080としても以下のエラーになりました。

`No arguments expected for "serve" command, got "port". `

ドットインストールの方で直接URLにアクセスをして正常に動いているのは開発環境が違うからでしょうか?

現在プレビューでは結果を見れているので、作業自体は進められており、特にエラーを解消したいという訳ではありませんが、
上記で挙げた点の仕組みについて理解をしたかったためご質問させていただきました。

laravel

1Cloud9User:~/environment/myblogv2 $ ip a 21: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 3 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 4 inet 127.0.0.1/8 scope host lo 5 valid_lft forever preferred_lft forever 6 inet6 ::1/128 scope host 7 valid_lft forever preferred_lft forever 82: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc pfifo_fast state UP group default qlen 1000 9 link/ether 06:10:c0:c6:11:72 brd ff:ff:ff:ff:ff:ff 10 inet 172.31.34.85/20 brd 172.31.47.255 scope global dynamic eth0 11 valid_lft 2492sec preferred_lft 2492sec 12 inet6 fe80::410:c0ff:fec6:1172/64 scope link 13 valid_lft forever preferred_lft forever 143: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default 15 link/ether 02:42:44:be:2f:82 brd ff:ff:ff:ff:ff:ff 16 inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0 17 valid_lft forever preferred_lft forever

・環境
AWS Cloud9

・バージョン
Laravel:7.30.4
PHP:7.2.24
Sqlit:3.7.17

お手数をおかけしますが、何卒よろしくお願い申し上げます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

まずは以下の2点について把握することで疑問に思われていることが解決するかと思います。

前提知識

  • 127.0.0.1とは

127.0.0.1は、常に自分自身を指す相対的なIPアドレスです。
サーバから見た場合はサーバ自身を指しますし、ブラウザを操作しているから見た場合はPC自身を指すことになります。


  • Cloud9とVagrant+VirtualBoxでそれぞれwebサーバが動作している場所

Cloud9はインターネット上のサーバ(EC2)でwebサーバが動いており、
Cloud9はPCとは別ネットワークに存在するのでローカルIPでアクセスすることは出来ません。

Vagrant+VirtualBoxではPC内の仮想環境でwebサーバが動いています。
Vagrant+VirtualBoxは同じネットワークに存在する別PCという扱いになるのでプライベートIPでのアクセスが可能です。
もしくは、VirtualBoxの機能で127.0.0.1の任意のポートを仮想環境の任意のポートにマッピングすることで127.0.0.1:8080の様な形でアクセスすることが出来ます。

回答

■疑問点1
1.を実行した後にLaravel development server started: http://127.0.0.1:8080 と表示されるので、
http://127.0.0.1:8080に直接アクセスをすると以下のエラーになる。

ブラウザから127.0.0.1でアクセスしようとしてもブラウザが動ているPCを見に行ってしまうため。

ターミナルで ip aとして出てきた以下のIPアドレス(172.31.34.85)はローカルIPアドレスという認識で合っていますでしょうか?

はい。
プライベートIPは範囲が決まっています。
以下の範囲内のIPアドレスは全てプライベートIPとなります。

10.0.0.0-10.255.255.255
172.16.0.0-172.31.255.255
192.168.0.0-192.168.255.255

投稿2021/02/19 04:23

tanat

総合スコア18727

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

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

gi_sa

2021/02/19 06:31

ご丁寧にご回答いただきありがとうございます。 分かりやすくご教示いただいたおかげで、何となくですが理解することができました。 172.31.34.85 = 127.0.0.1 ということでしょうか?
tanat

2021/02/19 06:52

> 172.31.34.85 = 127.0.0.1 ということでしょうか? その場合もありますし、違う場合もあります。 127.0.0.1は常に自分自身を指します。 なので、 172.31.34.85を持っているサーバから見た場合は 172.31.34.85=127.0.0.1 ですし、 他のPCやサーバから見た場合は 172.31.34.85≠127.0.0.1 です。 「IPアドレス 仕組み」などで一度基礎的なところから調べてみると理解が進むかと思いますが、ざっくり言うと 127.0.0.1=住所:自宅 172.31.34.85=住所:同一町内のn番地 みたいな感じです。
gi_sa

2021/02/19 08:36

迅速・ご丁寧なご回答に感謝いたします。 ご教示いただいた内容でほぼ理解できましたが、再度基礎的な部分から調べなおしてみます。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問