web-dev-qa-db-ja.com

同じネットワーク上の別のコンピュータからこのローカルホストに接続するにはどうすればよいですか?

私は現在プロジェクトに取り組んでいます、そして私は自宅で2台のラップトップでそれをテストしたいと思います。私はXAMPPを使っています。どうやってこれをするの?

144
user1219572

それは間違いなく可能です。ここではApacheについて一般的なケースを取り上げます。

あなたがSymfony2の大ファンで、4つの異なるコンピューター(あなたのウェブサイトをホストしているメインコンピューター、そしてMac、WindowsそしてLinuxディストリビューション(ワイヤレスであるかどうか))からhttp://symfony.local/であなたのsymfonyウェブサイトにアクセスしたいとしましょう。メインコンピュータへ。

一般的なスケッチ:

enter image description here


1 仮想ホストの設定

最初にApacheのhttpd-vhosts.confファイルに仮想ホストを設定する必要があります。 XAMPでは、このファイルはC:\xampp\Apache\conf\extra\httpd-vhosts.confにあります。 MAMPでは、このファイルはApplications/MAMP/conf/Apache/extra/httpd-vhosts.confにあります。 このステップ あなたのコンピュータ上でsymfony.localリクエストを処理するためのWebサーバーを準備します。仮想ホストの名前とWebサイトのルート/メインフォルダを指定する必要があります。これを行うには、そのファイルの末尾に次の行を追加します。 DocumentRootをメインフォルダのある場所に変更する必要があります。ここで私は私のウェブサイトのルートとして/Applications/MAMP/htdocs/Symfony/を取りました。

<VirtualHost *:80>
    DocumentRoot "/Applications/MAMP/htdocs/Symfony/"
    ServerName symfony.local
</VirtualHost>

2 hostsファイルを設定する

クライアント(その場合はブラウザ)がsymfony.localの意味を理解するためには、コンピュータのhostsファイルを編集する必要があります。ブラウザにURLを入力するたびに、コンピュータはその意味を理解しようとします。 symfony.localはコンピュータにとって何も意味しません。そのため、symfony.localという名前をIPアドレスに解決しようとします。これは、まずコンピュータ上のhostsファイルを調べて、アドレスバーに入力したIPアドレスとIPアドレスを一致させることができるかどうかを確認することによって行います。それができない場合、それはそれから尋ねるでしょうDNS servers。ここでの秘訣は、hostsファイルに以下を追加することです。

  • MACでは、このファイルは/private/etc/hostsにあります。
  • LINUXでは、このファイルは/etc/hostsにあります。
  • WINDOWSでは、このファイルは\Windows\system32\private\etc\hostsにあります。
  • WINDOWS 7では、このファイルは\Windows\system32\drivers\etc\hostsにあります。
  • WINDOWS 10では、このファイルは\Windows\system32\drivers\etc\hostsにあります。

Hosts file

##
# Host Database
# localhost is used to configure the loopback interface
##
#...
127.0.0.1           symfony.local

これからは、このコンピュータでsymfony.localと入力するたびに、コンピュータはループバックインターフェースを使ってsymfony.localに接続します。 localhost(127.0.0.1)で作業したいことがわかります。

3 他のコンピュータからsymfony.localにアクセスする

私たちはついにあなたの主な質問にたどり着きます。

他のコンピュータから自分のWebサイトにアクセスするにはどうすればよいですか。

まあこれは今簡単です!他のコンピュータにsymfony.localを見つける方法を教えてください。どうやってこれをするのですか?

3a ウェブサイトをホストしているコンピュータのIPアドレスを取得する

最初に、Webサイトをホストしているコンピュータ(最初から取り組んできたもの)のIPアドレスを知る必要があります。端末では、on MACおよびLINUX type ifconfig |grep inet、on WINDOWS type ipconfigになります。このコンピュータのIPアドレスが192.168.1.5であるとしましょう。

3b ウェブサイトにアクセスしようとしているコンピュータ上のhostsファイルを編集します。

また、MACでは、このファイルは/private/etc/hostsにあります。 on LINUX/etc/hosts; \Windows\system32\private\etc\hosts内のWINDOWSWINDOWS 7このファイルは\Windows\system32\drivers\etc\hosts)にあります。トリックは、アクセスしようとしているコンピュータのIPアドレスを使用することです。

##
# Host Database
# localhost is used to configure the loopback interface
##
#...
192.168.1.5         symfony.local

4 最後にブラウザで結果を楽しんでください

ブラウザにアクセスしてhttp://symfony.localと入力すると、自分のWebサイトをさまざまなコンピュータで美しく見ることができます。 OSXユーザーがVirtual Boxを介してInternet ExplorerでWebサイトをテストする場合は、同じ方法を適用できます(Windowsコンピューターを使用したくない場合)。これは OSXでのWindowsのテスト/ IEテスト環境の作成 で詳しく説明されています。


モバイルデバイスからローカルホストにアクセスすることもできます。

あなたはモバイルデバイスからあなたのlocalhostウェブサイトにアクセスする方法を不思議に思うかもしれません。場合によっては、デバイス上のhostsファイル(iPhone、iPadなど)を変更できないことがあります(脱獄を除く)。

まあ、解決策はそれからウェブサイトをホストしているマシンにプロキシサーバーをインストールし、あなたのiPhoneからそのプロキシに接続することです。それは実際には以下の記事で非常によく説明されており、セットアップするのにそれほど長くはかかりません。

Macでは、私はお勧めします: モバイルデバイス上のローカルホスト名を使ってMac OS X Webサイトをテストする :プロキシとして SquidMan を使う。 100%無料のソリューションです。プロキシサーバとして Charles を使うこともできる人もいますが、50ドルです。

Linuxでは、プロキシサーバーとして Squid を使用することで、上記のMac OSの方法を調整できます。

Windowsでは、 Fiddler を使用してそれを実行できます。解決策は次の記事で説明されています。 FiddlerによるiPhoneトラフィックの監視


編集23/11/2017:ちょっと私のHostsファイルを変更したくない

@します。手動でHostファイルを編集しないで他のコンピュータからWebサイトにアクセスする方法はありますか? Webサイトにアクセスしたいと思っているコンピュータが100台あるとします。

これは面白い質問です、そしてそれはOPの質問に関連しているので、私に手助けをさせてください。

あなたは、あなたのウェブサイトがどこでホストされているかをすべてのマシンが知ることができるようにあなたのネットワークに変更を加える必要があるでしょう。 ほとんどの日常的なルーターはそれをしません ですからあなたは自分のネットワーク上であなた自身を実行しなければなりませんDNSサーバー

ルーターがあるとしましょう(192.168.1.1)。このルータはDHCPサーバを持ち、ネットワーク上の100台のマシンにIPアドレスを割り当てます。

さて、あなたが同じネットワーク上にあなたのウェブサイトを持っている192.168.1.5のマシンを持っているとしましょう。その機械を呼びます pompei

$ echo $HOSTNAME
pompei

以前と同じ、そのマシン pompei at 192.168.1.5HTTP Serverを実行し、あなたのウェブサイトsymfony.localにサービスを提供します。

すべてのマシンがsymfony.localがホストされていることを知るために pompei symfony.localがどこにホストされているかを知っているカスタムDNSサーバーがネットワーク上に必要になります。ネットワーク上のデバイスは、それによって提供されるドメイン名を解決できるようになります。 pompei 内部的に.

3つの簡単なステップ.

Step 1: DNS Server

ネットワーク上にDNSサーバーを設定します。やってみよう pompei 便宜上、 dnsmasq のようなものを使用してください。

DnsmasqはDomain Name System(DNS)フォワーダ... を提供します。

欲しい pompei DNSmasqを実行してDNS要求Hey, pompei, where is symfony.localを処理し、Hey, sure think, it is on 192.168.1.5 but don't take my Word for itを応答する。

先にdnsmasqをインストールしてください。dnsmasq設定ファイルはあなたの環境によりますが通常/etc/dnsmasq.confにあります。

私は個人的にはno-resolvとGoogleのサーバーserver=8.8.8.8 server=8.8.8.4を使っています。

*注:*/ etc/hostsファイルを変更した場合は、DNSmasqを再起動しないと変更は反映されません。

Step 2: Firewall

働くために、 pompei ポート53との間で送受信される「ドメイン」パケットの送受信を許可する必要があります。もちろん!これらはDNSパケットです。 pompei それらを許可していません、あなたのDNSサーバーにアクセスする方法はまったくありません。先に進み、そのポート53を開いてください。Linuxでは、これには古典的に iptables を使用します。

私が思いついたことを共有するが、あなたはたぶんあなたのファイアウォールに飛び込み、すべてをよく理解しなければならないでしょう。

#
# Allow outbound DNS port 53
#
 iptables -A INPUT -p tcp --dport 53 -j ACCEPT
 iptables -A INPUT -p udp --dport 53 -j ACCEPT

 iptables -A OUTPUT -p tcp --dport 53 -j ACCEPT
 iptables -A OUTPUT -p udp --dport 53 -j ACCEPT

 iptables -A INPUT -p udp --sport 53 -j ACCEPT
 iptables -A INPUT -p tcp --sport 53 -j ACCEPT

 iptables -A OUTPUT -p tcp --sport 53 -j ACCEPT
 iptables -A OUTPUT -p udp --sport 53 -j ACCEPT

Step 3: Router

あなたのDNSサーバが今192.168.1.5にあることをあなたのルーターに伝えてください。ほとんどの場合、ルーターにログインして手動で簡単に変更することができます。

それは、あなたがマシン上にいてsymfony.localを要求するとき、それはあなたのDNS Serversymfony.localがホストされているところを尋ねるでしょう、そしてそれがDNSサーバーから答えを受け取ったらすぐにそれを送ります適切HTTPリクエスト to pompei 192.168.1.5にあります。

私はあなたにこれで遊ばせて乗り心地を楽しませます。これらの2つのステップは主要なガイドラインです、従ってこれが初めてそれをする場合デバッグし、数時間を費やす必要があります。これがもう少し高度なネットワーキングだとしましょう、プライマリDNSサーバー、セカンダリDNSサーバー、 etc。 があります。がんばろう!

252
Mick

同じワイヤレスでインターネット経由の両方のラップトップでテストするには、 http://localhost.run/ または https:/のようなサービスを使用できます。 /ngrok.com/

13
tommyvn

両方のマシンが同じワークグループに属している場合は、接続したいマシンでcmd.exeを開き、ipconfigと入力してIPv4 Address行のIPを書き留めます。

次に、接続したいマシンでhttp:// + the IP of the target machineを使います。

それはそれをするべきです。

9
Codrin Eugeniu

Mac OS Xの場合

  1. 端末でifconfig | grep 192.を実行して現在のネットワーク上のあなたのマシンの内部IPを取得します。 192.168.1.140のようなものかもしれません

  2. サーバーを起動します。例えば、node server.jsはあるポートでサーバーを起動するかもしれません。

  3. お使いの携帯電話で、192.168.1.140:3000またはサーバーが実行されているポートにアクセスしてください。

6

私は自分のマシンに管理者権限がなく、既にnodejsがインストールされているので、このツールを使うととても節約できました。どういうわけか私のネットワークの設定は私にブラウザのIPを指しているだけで他のマシンへのアクセスを与えません。

# Using a local.dev vhost
$ browser-sync start --proxy

# Using a local.dev vhost with PORT
$ browser-sync start --proxy local.dev:8001

# Using a localhost address
$ browser-sync start --proxy localhost:8001

# Using a localhost address in a sub-dir
$ browser-sync start --proxy localhost:8080/site1

http://www.browsersync.io/docs/command-line/

6

ファイアウォールが原因で、ローカルホストのWebサーバーへのアクセスが妨げられている可能性があります。
必要に応じて、コンピュータのインターネットセキュリティとウイルス対策ネットワークの両方のセキュリティのIPアドレスを安全なIPアドレスとして設定します。
あなたのWindows PCのIPアドレスを見つける方法:スタート>(ファイル名を指定して実行)を入力してください:cmd(Enter)
(これにより、ブラックボックスコマンドのプロンプトが開きます)
ipconfigと入力(入力)
あなたのApacheまたはIIS WebサーバがあなたのPCにインストールされているとしましょう:192.168.0.3
そしてあなたはあなたのラップトップであなたのウェブサーバーにアクセスしたいです。 (ノートパソコンのIPアドレスは192.168.0.5です)
あなたのPC上であなたのウェブサーバー上のあなたのデータにアクセスするためにあなたのFirefoxまたはインターネットEplorerブラウザの内側にhttp:// localhost /をタイプしてください。
あなたのラップトップ上であなたはあなたのPC上のあなたのウェブサーバーにアクセスするためにhttp://192.168.0.3/とタイプします。

これらすべてがうまくいくためには、Webサーバーを正しくインストールしておく必要があります(例:IIS、Apache、XAMP、WAMPなど)。

それでもうまくいかない場合は、ラップトップからPCにpingを試してください。
あなたのラップトップ上でコマンドpropmtを開きます。Start> cmd(Enter)
ping 192.168.1.3(入力)
pingが失敗した場合は、ファイアウォールが接続をブロックしているか、ネットワークのケーブル接続に問題があります。モデムまたはネットワークスイッチとコンピュータを再起動してください。
自分のportsを使用しているチャットプログラムなどのプログラムを閉じます。
別のポート番号を試すこともできます:http:192.168.0.3:80またはhttp:192.168.0.3:81、または末尾に任意の乱数

5
KarlosFontana

上記の手順を実行した後も、他の​​デバイスからlocalhostにアクセスできない場合の注意点です。これは、Apacheのports.confがローカル(127.0.0.1)で機能するように設定されていて、外部では機能しないことが原因の可能性があります。

以下を確認してください(ubuntu Apache2の場合)。

  $ cat /etc/Apache2/ports.conf

以下が設定されている場合

NameVirtualHost *:80  
Listen 127.0.0.1:80  

それからデフォルト値に戻します

NameVirtualHost *:80  
Listen 80  
4
ken

Windowsを使用している場合は、ipconfigを使用してローカルIPv4アドレスを取得してから、Apache構成ファイルの下にそれを指定します。httpd.conf、次のようになります。

Listen: 10.20.30.40:80

Apacheサーバーを再起動して、ネットワーク上の他のコンピューターからテストします。

0
shasi kanth