Bagaimana cara saya terhubung ke localhost ini dari komputer lain di jaringan yang sama?

172

Saat ini saya sedang mengerjakan sebuah proyek dan saya ingin mengujinya di dua laptop di rumah di mana satu laptop terhubung ke localhost di yang lain. Saya menggunakan XAMPP. Bagaimana saya melakukan ini?

pengguna1219572
sumber

Jawaban:

284

Itu pasti mungkin. Kami akan mengambil kasus umum dengan Apache di sini.

Katakanlah Anda penggemar berat Symfony2 dan Anda ingin mengakses situs web symfony Anda di http://symfony.local/ dari 4 komputer yang berbeda (yang utama hosting situs web Anda, serta Mac, Windows dan distro Linux yang terhubung (nirkabel atau tidak) ke komputer utama.

Sketsa Umum:

masukkan deskripsi gambar di sini


1 Siapkan host virtual :

Pertama-tama Anda perlu mengatur host virtual di httpd-vhosts.conffile apache Anda . Pada XAMP , Anda dapat menemukan file ini di sini: C:\xampp\apache\conf\extra\httpd-vhosts.conf. Pada MAMP , Anda dapat menemukan file ini di sini: Applications/MAMP/conf/apache/extra/httpd-vhosts.conf. Langkah ini mempersiapkan server Web pada komputer Anda untuk menangani symfony.localpermintaan. Anda harus memberikan nama Host Virtual serta folder root / utama situs web Anda. Untuk melakukan ini, tambahkan baris berikut di akhir file itu. Anda perlu mengubah DocumentRootke mana pun folder utama Anda. Di sini saya telah mengambil /Applications/MAMP/htdocs/Symfony/sebagai root dari situs web saya.

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

2 Konfigurasikan file host Anda :

Agar klien (browser Anda dalam hal ini) untuk memahami apa yang symfony.localsebenarnya berarti, Anda perlu mengedit file host di komputer Anda. Setiap kali Anda mengetik URL di browser Anda, komputer Anda mencoba untuk memahami apa artinya! symfony.localtidak berarti apa-apa untuk komputer. Jadi itu akan mencoba untuk menyelesaikan nama symfony.localke alamat IP. Ini akan melakukan ini dengan terlebih dahulu melihat ke file host di komputer Anda untuk melihat apakah ia dapat mencocokkan alamat IP dengan apa yang Anda ketikkan pada bilah alamat. Jika tidak bisa, maka akan meminta server DNS . Kuncinya di sini adalah menambahkan yang berikut ke file host Anda.

  • Di MAC , file ini ada di /private/etc/hosts;
  • Di LINUX , file ini ada di /etc/hosts;
  • Pada WINDOWS , file ini ada di \Windows\system32\private\etc\hosts;
  • Pada WINDOWS 7 , file ini ada di \Windows\system32\drivers\etc\hosts;
  • Pada WINDOWS 10 , file ini masuk \Windows\system32\drivers\etc\hosts;

Hosts file

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

Mulai sekarang, setiap kali Anda mengetik symfony.local di komputer ini, komputer Anda akan menggunakan antarmuka loopback untuk terhubung ke symfony.local. Ini akan memahami bahwa Anda ingin bekerja di localhost (127.0.0.1).

3 Akses symfony.localdari komputer lain :

Kami akhirnya sampai pada pertanyaan utama Anda yaitu:

Bagaimana saya sekarang dapat mengakses situs web saya melalui komputer lain?

Nah sekarang ini mudah! Kami hanya perlu memberi tahu komputer lain bagaimana mereka bisa menemukan symfony.local! Bagaimana kita melakukan ini?

3a Dapatkan alamat IP komputer yang menghosting situs web :

Pertama-tama kita perlu mengetahui alamat IP di komputer yang meng-host situs web (yang sudah kami kerjakan sejak awal). Di terminal, pada tipe MAC dan LINUXifconfig |grep inet , pada WINDOWStipe ipconfig. Misalkan alamat IP komputer ini adalah 192.168.1.5 .

3b Edit file host di komputer tempat Anda mencoba mengakses situs web. :

Sekali lagi, di MAC , file ini ada di /private/etc/hosts; pada LINUX , di /etc/hosts; dan pada WINDOWS , di \Windows\system32\private\etc\hosts(jika Anda menggunakan WINDOWS 7 , file ini ada di \Windows\system32\drivers\etc\hosts) .. Triknya sekarang adalah dengan menggunakan alamat IP komputer yang kami coba akses / bicarakan:

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

4 Akhirnya nikmati hasilnya di browser Anda

Sekarang Anda dapat masuk ke browser dan mengetik http://symfony.localuntuk melihat situs web Anda dengan indah di komputer yang berbeda! Perhatikan bahwa Anda dapat menerapkan strategi yang sama jika Anda adalah pengguna OSX untuk menguji situs web Anda di Internet Explorer melalui Virtual Box (jika Anda tidak ingin menggunakan komputer Windows). Ini dijelaskan dengan indah di Crafting Your Windows / IE Test Environment di OSX .


Anda juga dapat mengakses hosting lokal Anda dari perangkat seluler

Anda mungkin bertanya-tanya bagaimana cara mengakses situs web hosting lokal Anda dari perangkat seluler. Dalam beberapa kasus, Anda tidak akan dapat memodifikasi file host (iPhone, iPad ...) di perangkat Anda (tidak termasuk jailbreaking).

Nah, solusinya kemudian adalah menginstal server proxy pada mesin hosting situs web dan terhubung ke proxy itu dari iphone Anda. Ini sebenarnya dijelaskan dengan sangat baik dalam posting berikut dan tidak terlalu lama untuk diatur:

Pada Mac, saya akan merekomendasikan: Menguji situs web Mac OS X menggunakan nama host lokal pada perangkat seluler : Menggunakan SquidMan sebagai proxy. Ini solusi 100% gratis. Beberapa orang juga dapat menggunakan Charles sebagai server proxy tetapi harganya $ 50.

Di Linux, Anda dapat mengadaptasi cara Mac OS di atas dengan menggunakan Squid sebagai server proxy.

Di Windows, Anda bisa melakukannya menggunakan Fiddler . Solusinya dijelaskan dalam posting berikut: Memantau lalu lintas iPhone dengan Fiddler


Sunting 23/11/2017: Hai saya tidak ingin mengubah file Hosts saya

@Dre. Adakah cara yang mungkin untuk mengakses situs web dari komputer lain dengan tidak mengedit file host secara manual? katakanlah saya memiliki 100 komputer yang ingin mengakses situs web

Ini adalah pertanyaan yang menarik, dan karena terkait dengan pertanyaan OP, izinkan saya membantu.

Anda harus melakukan perubahan pada jaringan Anda sehingga setiap mesin tahu di mana situs web Anda di-host. Kebanyakan perute sehari-hari tidak melakukan itu sehingga Anda harus menjalankan Server DNS Anda sendiri di jaringan Anda.

Mari kita berpura-pura memiliki router (192.168.1.1). Router ini memiliki server DHCP dan mengalokasikan alamat IP ke 100 mesin di jaringan.

Sekarang, katakanlah Anda memiliki, sama seperti di atas, pada jaringan yang sama, mesin 192.168.1.5yang memiliki situs web Anda. Kami akan memanggil mesin itu pompei.

$ echo $HOSTNAME
pompei

Sama seperti sebelumnya, bahwa mesin pompeipada 192.168.1.5berjalan sebuah Server HTTP yang melayani website Anda symfony.local.

Untuk setiap mesin untuk mengetahui yang symfony.localdihosting pada pompeikita sekarang akan membutuhkan Server DNS kustom pada jaringan yang tahu di mana symfony.localdihosting. Perangkat di jaringan kemudian akan dapat menyelesaikan nama domain yang dilayani oleh pompeiinternal.

3 langkah sederhana.

Step 1: DNS Server

Siapkan Server DNS di jaringan Anda. Ayo aktifkanpompei untuk kenyamanan dan gunakan sesuatu seperti dnsmasq .

Dnsmasq menyediakan Domain Name System (DNS) forwarder , ... .

Kami ingin pompeimenjalankan DNSmasq untuk menangani permintaan Hey, pompei, where is symfony.localdan respons DNS Hey, sure think, it is on 192.168.1.5 but don't take my word for it.

Silakan instal dnsmasq, file konfigurasi dnsmasq biasanya /etc/dnsmasq.conftergantung pada lingkungan Anda.

Saya pribadi menggunakan no-resolvdan server google server=8.8.8.8 server=8.8.8.4.

* Catatan: * SELALU me-restart DNSmasq jika memodifikasi / etc / hosts file karena tidak ada perubahan akan berlaku sebaliknya.

Step 2: Firewall

Agar berfungsi, pompeiperlu mengizinkan paket 'domain' yang masuk dan keluar, yang pergi dari dan ke port 53. Tentu saja! Ini adalah paket DNS dan jika pompeitidak memungkinkan, tidak ada cara untuk mencapai server DNS Anda sama sekali. Silakan dan buka port 53 itu. Di linux, Anda akan menggunakannya secara klasik iptablesuntuk ini.

Membagikan apa yang saya hasilkan tetapi Anda kemungkinan besar harus menyelami firewall Anda dan memahami semuanya dengan baik.

#
# 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

Beri tahu router Anda bahwa server dns Anda aktif 192.168.1.5sekarang. Sebagian besar waktu, Anda bisa masuk ke router dan mengubahnya secara manual dengan sangat mudah.

Itu saja, Ketika Anda menggunakan mesin dan memintanya symfony.local, ia akan menanyakan Server DNS Anda di mana symfony.localdihosting, dan segera setelah ia menerima jawabannya dari server DNS, maka akan mengirimkan permintaan HTTP yang tepat ke pompeion 192.168.1.5.

Saya membiarkan Anda bermain dengan ini dan menikmati perjalanannya. 2 langkah ini adalah pedoman utama, jadi Anda harus men-debug dan menghabiskan beberapa jam jika ini adalah pertama kalinya Anda melakukannya. Katakanlah ini jaringan yang sedikit lebih maju, ada Server DNS primer, Server DNS sekunder, dll . Semoga berhasil!

Mick
sumber
Balasan yang bagus Saya mengikuti bagian terakhir sampai saya "Memantau lalu lintas iPhone dengan Fiddler". Itu menunjuk ke beranda Fiddler. Ini harusnya tautan: conceptdev.blogspot.com/2009/01/…
helpse
Saya telah memodifikasi file host tetapi masalahnya adalah saya juga menjalankan server IIS sehingga "localhost" atau "127.0.0.1" saya menunjuk ke server IIS bagaimana cara menggantinya dengan server xamp?
Uzair Ali
1
@Mick cara apa pun yang mungkin untuk mengakses situs web dari komputer lain dengan tidak mengedit hostfile secara manual? katakanlah saya memiliki 100 komputer yang ingin mengakses situs web
Drenyl
1
@ Benarkah, Anda harus melakukan perubahan pada jaringan Anda sehingga setiap mesin tahu di mana situs web Anda dihosting. Saya telah menambahkan info di akhir jawaban. Semoga itu bisa membantu.
Mick
1
Penjelasan yang bagus!
Shepherd
25

Untuk pengujian pada kedua laptop pada nirkabel yang sama dan di internet Anda dapat menggunakan layanan seperti http://localhost.run/ atau https://ngrok.com/

tommyvn
sumber
3
localhost.run bekerja seperti pesona. Server saya berjalan pada port 8000 dan baru saja mengubah baris perintah dari 80 menjadi 8000.
Isuru
3
Wow! awsome ... ini benar-benar berfungsi dengan sekali jalan ... terima kasih @tommyvn
Jabongg
Cara yang lebih mudah untuk mengatur NGROK daripada memperbarui file host lokal. +1
BlackHatSamurai
Solusi mudah untuk tes cepat
shamila
15

Asalkan kedua mesin berada dalam workgroup yang sama, buka cmd.exepada mesin yang ingin Anda sambungkan, ketik ipconfigdan catat IP di IPv4 Addressbaris tersebut.

Kemudian, pada mesin yang ingin Anda sambungkan, gunakan http:// + the IP of the target machine.

Itu harus dilakukan.

Codrin Eugeniu
sumber
3
Ini akan bekerja jika port 80 adalah port untuk aplikasi (biasanya itu) tetapi perlu diingat kita bisa menggunakan port yang berbeda. Itu berarti http: // + IP mesin target + ": PORT_NUMBER"
ggderas
Ini adalah solusi sederhana yang saya cari. @ Codrin Eugeniu: Silakan pertimbangkan untuk memasukkan saran ": PORT_NUMBER" ke dalam jawaban Anda sebagaimana disebutkan oleh ggderas. Bagi saya ini diperlukan karena saya terhubung melalui port 8088 menggunakan Apache Superset.
Ohumeronen
8

Di Mac OS X:

  1. Di terminal, jalankan ifconfig | grep 192.untuk mendapatkan IP internal mesin Anda di jaringan saat ini. Mungkin seperti itu192.168.1.140

  2. Mulai server. Misalnya, node server.jsdapat memulai server di beberapa port.

  3. Di ponsel Anda, kunjungi 192.168.1.140:3000atau port apa pun yang dijalankan server Anda.

Raphael Rafatpanah
sumber
6

Alat ini banyak menyelamatkan saya, karena saya tidak memiliki izin Admin di mesin saya dan sudah menginstal nodejs. Untuk beberapa alasan konfigurasi di jaringan saya tidak memberi saya akses ke komputer lain hanya dengan menunjuk IP di browser.

# 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/

Thiago C. S Ventura
sumber
Saya menjalankan aplikasi web di localhost: 3000. Saya menggunakan browser-sync start --proxy localhost:3000shell yang terpisah. Pada perangkat lain yang terhubung ke jaringan saya ketik: ${computerIP}:3000tapi saya tidak melihat apa pun. Saya kira ada sesuatu yang harus saya berikan.
Ben Carp
5

mungkin saja firewall Anda mencegah Anda mengakses server web localhost.
Masukkan alamat IP dari kedua keamanan internet keamanan jaringan antivirus komputer Anda sebagai alamat IP aman jika diperlukan.
Cara menemukan alamat IP PC windows Anda: Mulai> (Jalankan) ketik: cmd (Enter)
(Ini membuka prompt kotak hitam)
ketik ipconfig (Enter)
Katakanlah Apache atau server web IIS Anda diinstal pada PC Anda : 192.168.0.3
dan Anda ingin mengakses server web dengan laptop Anda. (IP laptop 192.168.0.5) Di laptop Anda, ketik http://192.168.0.3/ untuk mengakses server web Anda di PC. Agar semua hal ini berfungsi, Anda harus menginstal server web dengan benar (mis. IIS, Apache, XAMP, WAMP dll).
Pada PC Anda, Anda ketik: http: // localhost / di dalam browser Firefox atau Internet Eplorer Anda untuk mengakses data di server web Anda.



Jika tidak berhasil, coba ping PC Anda dari laptop Anda:
Buka perintah propmt di laptop Anda: Mulai> cmd (Enter)
ping 192.168.1.3 (Enter)
Jika ping gagal, maka firewall memblokir koneksi Anda atau jaringan Anda kabel salah. Mulai ulang modem atau sakelar jaringan Anda dan mesin Anda.
Tutup program seperti program obrolan yang menggunakan porta Anda.
Anda juga dapat mencoba nomor port lain: http: 192.168.0.3: 80 atau http: 192.168.0.3: 81 atau nomor acak apa pun di akhir

KarlosFontana
sumber
1
Terima kasih kepada @KarlosFontana - Anda baru saja menjawab pertanyaan saya juga. Saya mengalami masalah saat menghubungkan iPhone ke server yang saya tulis di desktop. IPhone terhubung ke WiFi PC saya. Baris terakhir Anda menjawab pertanyaan saya :-)
Tommy
4

Ini adalah catatan tambahan jika seseorang masih tidak dapat mengakses localhost dari perangkat lain setelah mengikuti langkah di atas. Ini mungkin karena apache ports.conf telah dikonfigurasi untuk melayani secara lokal (127.0.0.1) dan bukan ke luar.

periksa yang berikut, (untuk ubuntu apache2)

  $ cat /etc/apache2/ports.conf

jika yang berikut ini diatur,

NameVirtualHost *:80  
Listen 127.0.0.1:80  

lalu ubah kembali ke nilai default

NameVirtualHost *:80  
Listen 80  
ken
sumber
0

Jika Anda menggunakan Windows, gunakan ipconfig untuk mendapatkan alamat IPv4 lokal, dan kemudian tentukan di bawah file konfigurasi Apache Anda: httpd.conf , seperti:

Listen: 10.20.30.40:80

Mulai ulang server Apache Anda dan uji dari komputer lain di jaringan.

shasi kanth
sumber