Có ít nhất ba thành phần riêng biệt đang chơi ở đây, mỗi thành phần cần được cấu hình chính xác.
Địa chỉ ràng buộc Rails
Khi Rails (hoặc một ứng dụng máy chủ khác) mở để nhận kết nối mạng, nó sẽ liên kết với cả IP và cổng. Nếu một yêu cầu đến không khớp với cả hai yêu cầu này, nó sẽ không chấp nhận kết nối. Từ 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
...
Vì vậy, theo mặc định, Rails sẽ chỉ chấp nhận các yêu cầu được gửi đến localhost
bộ điều hợp mạng (loopback) của nó (được gọi lo
). Vì bộ điều hợp này chỉ có thể truy cập từ trong cùng một máy tính, nên các yêu cầu duy nhất mà nó chấp nhận sẽ đến từ chính máy ảo Debian: tốt và an toàn để thử nghiệm, nhưng không hữu ích cho sản xuất hoặc thậm chí thử nghiệm từ một máy tính khác.
Nếu bạn muốn Rails có thể truy cập được từ bất kỳ máy tính nào khác (bao gồm cả máy chủ Windows 7 của bạn), bạn sẽ cần nói với Rails liên kết với bất kỳ địa chỉ IP nào Debian có thể truy cập từ bên ngoài (xem bên dưới).
Tuy nhiên, một cách dễ dàng hơn là bảo Rails liên kết với địa chỉ IP đặc biệt 0.0.0.0
, có nghĩa là bất kỳ bộ điều hợp mạng nào . Vì vậy, bắt đầu máy chủ Rails của bạn như vậy:
rails server -p 80 -b 0.0.0.0
sẽ làm cho trang web của bạn có thể truy cập được đối với bất kỳ ai có thể nhìn thấy VM của bạn trên mạng.
Đây có thể là những gì vẫn làm bạn bối rối ngay cả khi bạn có hai thành phần khác hoạt động.
Địa chỉ IP VM
Bạn cần trỏ trình duyệt của mình vào máy ảo Debian, đây là máy tính riêng của nó.
Nguyên tắc chung localhost
là nó luôn đề cập đến cùng một máy tính. Tuy nhiên, với mục đích kết nối mạng, máy ảo Debian của bạn là máy tính riêng của nó. Nếu bạn đang sử dụng trình duyệt web trong máy chủ Windows 7, localhost
sẽ luôn đề cập đến Windows 7 của bạn và không có gì khác.
Bạn có hai lựa chọn ở đây:
Đặt bộ điều hợp VirtualBox VM thành chế độ Cầu (như bạn đã đề cập trong câu hỏi của mình). Điều này sẽ đặt Debian của bạn trực tiếp trên cùng mạng bên ngoài / nhà / cơ quan với máy chủ Windows 7 của bạn. Sau đó, bạn có thể xác định IP của máy ảo Debian của mình bằng cách chạy ifconfig
. Tìm IP của bạn eth0
hoặc eth<something>
bộ chuyển đổi. Cắm cái này vào thanh địa chỉ của trình duyệt của bạn.
Sử dụng bộ chuyển đổi NAT và chuyển tiếp cổng VirtualBox . IMO điều này phức tạp hơn.
Tường lửa Debian
Đã được một thời gian kể từ khi tôi làm việc trên Debian vì vậy tôi không biết mặc định hiện tại là gì, nhưng nếu hai điều trên không hoạt động thì điều này có thể đáng để xem xét. Nếu Debian đang chạy tường lửa, bạn sẽ cần mở bất kỳ cổng nào bạn muốn truy cập từ một máy khác.
Hi vọng điêu nay co ich :)