Setidaknya ada tiga komponen terpisah yang dimainkan di sini, yang masing-masing perlu dikonfigurasikan dengan benar.
Alamat pengikat rel
Ketika Rails (atau aplikasi server lain) terbuka untuk menerima koneksi jaringan, itu akan mengikat IP dan port. Jika permintaan yang masuk tidak cocok dengan keduanya, itu tidak akan menerima koneksi. Dari rails server --help
:
Usage: rails server [mongrel, thin etc] [options]
-p, --port=port Runs Rails on the specified port.
Default: 3000
-b, --binding=IP Binds Rails to the specified IP.
Default: localhost
...
Jadi secara default, Rails hanya akan menerima permintaan yang dikirim ke localhost
adapter jaringan (loopback) (disebut lo
). Karena adaptor ini hanya dapat diakses dari dalam komputer yang sama, satu-satunya permintaan yang akan diterima akan berasal dari dalam Debian VM itu sendiri: baik dan aman untuk pengujian, tetapi tidak berguna untuk produksi, atau bahkan pengujian dari komputer yang berbeda.
Jika Anda ingin Rails Anda dapat diakses dari komputer lain (termasuk host Windows 7 Anda), Anda harus memberi tahu Rails untuk mengikat ke alamat IP mana pun yang dimiliki Debian yang dapat diakses dari luar (lihat di bawah).
Namun, cara yang lebih mudah adalah memberi tahu Rails untuk mengikat ke alamat IP khusus 0.0.0.0
, yang berarti adaptor jaringan apa pun . Jadi, mulai server Rails Anda seperti ini:
rails server -p 80 -b 0.0.0.0
akan membuat situs web Anda dapat diakses oleh siapa saja yang dapat melihat VM Anda di jaringan.
Ini mungkin apa yang masih mengacaukan Anda bahkan jika Anda memiliki dua komponen lainnya yang berfungsi.
Alamat IP VM
Anda perlu mengarahkan browser Anda ke mesin virtual Debian, yang merupakan komputer tersendiri.
Aturan praktisnya localhost
adalah selalu merujuk ke komputer yang sama. Namun, untuk keperluan jaringan, Debian VM Anda adalah komputer terpisah. Jika Anda menggunakan browser web di host Windows 7 Anda, localhost
akan selalu merujuk ke Windows 7 Anda dan tidak ada yang lain.
Anda memiliki dua opsi di sini:
Atur adaptor VirtualBox VM ke mode Bridge (seperti yang Anda sebutkan dalam pertanyaan Anda). Ini akan menempatkan Debian Anda secara langsung di jaringan luar / rumah / kerja yang sama dengan host Windows 7 Anda. Anda kemudian dapat menentukan IP Debian VM Anda dengan menjalankan ifconfig
. Cari IP eth0
atau eth<something>
adaptor Anda. Masukkan ini ke bilah alamat browser Anda.
Gunakan adaptor NAT dan penerusan port VirtualBox . IMO ini lebih rumit.
Firewall debian
Sudah lama sejak saya bekerja di Debian jadi saya tidak tahu apa default saat ini, tetapi jika dua hal di atas tidak bekerja maka ini mungkin layak untuk dilihat. Jika Debian menjalankan firewall, Anda harus membuka port yang ingin Anda akses dari komputer lain.
Semoga ini membantu :)