Tôi hiện đang làm việc trên một dự án và tôi muốn thử nghiệm nó trên hai máy tính xách tay ở nhà, nơi một máy tính xách tay kết nối với localhost. Tôi đang sử dụng XAMPP. Làm thế nào để tôi làm điều này?
Tôi hiện đang làm việc trên một dự án và tôi muốn thử nghiệm nó trên hai máy tính xách tay ở nhà, nơi một máy tính xách tay kết nối với localhost. Tôi đang sử dụng XAMPP. Làm thế nào để tôi làm điều này?
Câu trả lời:
Điều đó chắc chắn là có thể. Chúng ta sẽ có một trường hợp chung với Apache ở đây.
Giả sử bạn là một người hâm mộ Symfony2 lớn và bạn muốn truy cập trang web symfony của mình tại http://symfony.local/
4 máy tính khác nhau (máy tính chính lưu trữ trang web của bạn, cũng như máy Mac, Windows và Linux được kết nối (không dây hoặc không) máy tính chính.
1 Thiết lập máy chủ ảo :
Trước tiên bạn cần thiết lập một máy chủ ảo trong httpd-vhosts.conf
tệp apache của bạn . Trên XAMP , bạn có thể tìm thấy tệp này tại đây : C:\xampp\apache\conf\extra\httpd-vhosts.conf
. Trên MAMP , bạn có thể tìm thấy tệp này ở đây : Applications/MAMP/conf/apache/extra/httpd-vhosts.conf
. Bước này chuẩn bị máy chủ Web trên máy tính của bạn để xử lý symfony.local
các yêu cầu. Bạn cần cung cấp tên của Máy chủ ảo cũng như thư mục gốc / chính của trang web của bạn. Để làm điều này, thêm dòng sau vào cuối tập tin đó. Bạn cần thay đổi DocumentRoot
bất cứ nơi nào thư mục chính của bạn. Ở đây tôi đã lấy /Applications/MAMP/htdocs/Symfony/
làm gốc của trang web của tôi.
<VirtualHost *:80>
DocumentRoot "/Applications/MAMP/htdocs/Symfony/"
ServerName symfony.local
</VirtualHost>
2 Định cấu hình tệp máy chủ của bạn :
Để máy khách (trình duyệt của bạn trong trường hợp đó) hiểu được ý symfony.local
nghĩa thực sự của nó, bạn cần chỉnh sửa tệp máy chủ trên máy tính của mình. Mỗi khi bạn nhập URL trong trình duyệt, máy tính của bạn sẽ cố gắng hiểu ý nghĩa của nó! symfony.local
không có nghĩa gì cho máy tính. Vì vậy, nó sẽ cố gắng phân giải tên symfony.local
thành một địa chỉ IP. Nó sẽ làm điều này bằng cách trước tiên nhìn vào tệp máy chủ trên máy tính của bạn để xem liệu anh ta có thể khớp địa chỉ IP với địa chỉ bạn đã nhập trong thanh địa chỉ hay không. Nếu không thể, thì nó sẽ hỏi máy chủ DNS . Mẹo ở đây là nối các phần sau vào tệp máy chủ của bạn.
/private/etc/hosts
;/etc/hosts
;\Windows\system32\private\etc\hosts
;\Windows\system32\drivers\etc\hosts
;\Windows\system32\drivers\etc\hosts
;Hosts file
##
# Host Database
# localhost is used to configure the loopback interface
##
#...
127.0.0.1 symfony.local
Từ giờ trở đi, mỗi khi bạn gõ symfony.local trên máy tính này, máy tính của bạn sẽ sử dụng giao diện loopback để kết nối với symfony.local. Nó sẽ hiểu rằng bạn muốn làm việc trên localhost (127.0.0.1).
3 Truy cập symfony.local
từ một máy tính khác :
Cuối cùng chúng tôi cũng đến câu hỏi chính của bạn đó là:
Làm thế nào bây giờ tôi có thể truy cập trang web của mình thông qua một máy tính khác?
Vâng, điều này bây giờ dễ dàng! Chúng ta chỉ cần nói với các máy tính khác làm thế nào họ có thể tìm thấy symfony.local
! Chung ta se lam như thê nao?
3a Lấy địa chỉ IP của máy tính lưu trữ trang web :
Trước tiên chúng ta cần biết địa chỉ IP trên máy tính lưu trữ trang web (địa chỉ chúng tôi đã làm việc từ khi bắt đầu). Trong nhà ga, trên MAC và LINUX loại ifconfig |grep inet
, trên WINDOWS
loại ipconfig
. Giả sử địa chỉ IP của máy tính này là 192.168.1.5 .
3b Chỉnh sửa tệp máy chủ trên máy tính mà bạn đang cố truy cập trang web từ đó. :
Một lần nữa, trên MAC , tập tin này nằm trong /private/etc/hosts
; trên LINUX , trong /etc/hosts
; và trên WINDOWS , trong \Windows\system32\private\etc\hosts
(nếu bạn đang sử dụng WINDOWS 7 , tệp này nằm trong \Windows\system32\drivers\etc\hosts
) .. Bí quyết bây giờ là sử dụng địa chỉ IP của máy tính mà chúng tôi đang cố gắng truy cập / nói chuyện với:
##
# Host Database
# localhost is used to configure the loopback interface
##
#...
192.168.1.5 symfony.local
4 Cuối cùng hãy tận hưởng kết quả trong trình duyệt của bạn
Bây giờ bạn có thể vào trình duyệt của mình và gõ http://symfony.local
để xem trang web của bạn trên các máy tính khác nhau! Lưu ý rằng bạn có thể áp dụng chiến lược tương tự nếu bạn là người dùng OSX để kiểm tra trang web của bạn trên Internet Explorer thông qua Virtual Box (nếu bạn không muốn sử dụng máy tính Windows). Điều này được giải thích rất hay trong Chế tạo môi trường thử nghiệm Windows / IE của bạn trên OSX .
Bạn có thể tự hỏi làm thế nào để truy cập trang web localhost của bạn từ một thiết bị di động. Trong một số trường hợp, bạn sẽ không thể sửa đổi tệp máy chủ (iPhone, iPad ...) trên thiết bị của mình (loại trừ bẻ khóa).
Vậy thì, giải pháp sau đó là cài đặt một máy chủ proxy trên máy chủ lưu trữ trang web và kết nối với proxy đó từ iphone của bạn. Nó thực sự được giải thích rất tốt trong các bài viết sau và không lâu để thiết lập:
Trên máy Mac, tôi khuyên bạn nên: Kiểm tra trang web Mac OS X bằng tên máy chủ cục bộ trên thiết bị di động : Sử dụng SquidMan làm proxy. Đó là một giải pháp miễn phí 100%. Một số người cũng có thể sử dụng Charles làm máy chủ proxy nhưng đó là 50 đô la.
Trên Linux, bạn có thể điều chỉnh Mac OS theo cách trên bằng cách sử dụng Squid làm máy chủ proxy.
Trên Windows, bạn có thể làm điều đó bằng cách sử dụng Fiddler . Giải pháp được mô tả trong bài sau: Giám sát lưu lượng iPhone với Fiddler
@Dre. Bất kỳ cách nào có thể để truy cập trang web từ một máy tính khác bằng cách không chỉnh sửa tệp máy chủ theo cách thủ công? giả sử tôi có 100 máy tính muốn truy cập trang web
Đây là một câu hỏi thú vị và vì nó liên quan đến câu hỏi OP, hãy để tôi giúp.
Bạn sẽ phải thực hiện một thay đổi trên mạng của mình để mọi máy đều biết trang web của bạn được lưu trữ ở đâu. Hầu hết các bộ định tuyến hàng ngày không làm điều đó vì vậy bạn sẽ phải chạy Máy chủ DNS của riêng mình trên mạng của mình.
Hãy giả vờ rằng bạn có một bộ định tuyến (192.168.1.1). Bộ định tuyến này có máy chủ DHCP và phân bổ địa chỉ IP cho 100 máy trên mạng.
Bây giờ, giả sử bạn có, giống như trên, trên cùng một mạng, một máy 192.168.1.5
có trang web của bạn. Chúng tôi sẽ gọi máy đó pompei.
$ echo $HOSTNAME
pompei
Giống như trước, mà máy pompeitại 192.168.1.5
chạy một máy chủ HTTP phục vụ trang web của bạn symfony.local
.
Đối với mọi máy để biết rằng symfony.local
được lưu trữ trên pompeichúng ta sẽ cần một Máy chủ DNS tùy chỉnh trên mạng để biết nơi symfony.local
được lưu trữ. Các thiết bị trên mạng sau đó sẽ có thể phân giải tên miền được cung cấp bởi pompeinội bộ.
Step 1: DNS Server
Thiết lập Máy chủ DNS trên mạng của bạn. Hãy pompeisử dụng để thuận tiện và sử dụng một cái gì đó như dnsmasq .
Dnsmasq cung cấp Domain Name System (DNS) forwarder , ... .
Chúng tôi muốn pompeichạy DNSmasq để xử lý các yêu cầu DNS Hey, pompei, where is symfony.local
và trả lời Hey, sure think, it is on 192.168.1.5 but don't take my word for it
.
Hãy tiếp tục cài đặt dnsmasq, tập tin cấu hình dnsmasq thường /etc/dnsmasq.conf
phụ thuộc vào môi trường của bạn.
Cá nhân tôi sử dụng no-resolv
và máy chủ google server=8.8.8.8 server=8.8.8.4
.
* Lưu ý: * LUÔN LUÔN khởi động lại DNSmasq nếu sửa đổi tập tin / etc / hosts vì không có thay đổi nào có hiệu lực.
Step 2: Firewall
Để hoạt động, pompeicần phải cho phép các gói 'miền' đến và đi, đi từ và đến cổng 53. Tất nhiên! Đây là các gói DNS và nếu pompeikhông cho phép chúng, không có cách nào để máy chủ DNS của bạn có thể truy cập được. Hãy tiếp tục và mở cổng đó 53. Trên linux, bạn sẽ sử dụng một cách cổ điển iptables
cho việc này.
Chia sẻ những gì tôi nghĩ ra nhưng rất có thể bạn sẽ phải đi sâu vào tường lửa của mình và hiểu rõ mọi thứ.
#
# 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
Nói với bộ định tuyến của bạn rằng máy chủ dns của bạn đang bật 192.168.1.5
. Hầu hết thời gian, bạn chỉ có thể đăng nhập vào bộ định tuyến của mình và thay đổi thủ công rất dễ dàng.
Vậy là xong, Khi bạn đang ở trên một máy và yêu cầu symfony.local
, nó sẽ yêu cầu bạn DNS Server nơi symfony.local
được lưu trữ, và ngay sau khi nó đã nhận được câu trả lời của nó từ máy chủ DNS, sau đó sẽ gửi đúng yêu cầu HTTP tới pompeitrên 192.168.1.5
.
Tôi cho bạn chơi với cái này và tận hưởng chuyến đi. 2 bước này là hướng dẫn chính, vì vậy bạn sẽ phải gỡ lỗi và dành vài giờ nếu đây là lần đầu tiên bạn thực hiện. Hãy nói rằng đây là một cắn mạng tiên tiến hơn, có chính máy chủ DNS, máy chủ DNS thứ cấp, vv . Chúc may mắn!
host
tệp theo cách thủ công? giả sử tôi có 100 máy tính muốn truy cập trang web
Để thử nghiệm trên cả hai máy tính xách tay trên cùng một mạng không dây và trên internet, bạn có thể sử dụng một dịch vụ như http://localhost.run/ hoặc https://ngrok.com/
Với điều kiện cả hai máy nằm trong cùng một nhóm làm việc, hãy mở cmd.exe
trên máy bạn muốn kết nối, nhập ipconfig
và ghi chú IP tại IPv4 Address
đường dây.
Sau đó, trên máy bạn muốn kết nối, sử dụng http:// + the IP of the target machine
.
Nên làm vậy.
Trên Mac OS X:
Trong thiết bị đầu cuối, hãy chạy ifconfig | grep 192.
để lấy IP bên trong của máy trên mạng hiện tại. Nó có thể là một cái gì đó như192.168.1.140
Bắt đầu một máy chủ. Ví dụ, node server.js
có thể bắt đầu một máy chủ trên một số cổng.
Trên điện thoại của bạn, hãy truy cập 192.168.1.140:3000
hoặc bất kỳ cổng nào máy chủ của bạn đang chạy.
Công cụ này đã tiết kiệm cho tôi rất nhiều, vì tôi không có quyền của Quản trị viên trên máy của mình và đã cài đặt nodejs. Vì một số lý do, cấu hình trên mạng của tôi không cho phép tôi truy cập vào các máy khác mà chỉ trỏ IP trên trình duyệt.
# 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
browser-sync start --proxy localhost:3000
trong một vỏ riêng biệt. Trên một thiết bị khác được kết nối với mạng tôi gõ: ${computerIP}:3000
nhưng tôi không thấy gì. Tôi đoán có một cái gì đó nhiều hơn tôi nên cung cấp.
có thể là tường lửa của bạn đang ngăn bạn truy cập máy chủ web của localhost.
Đặt địa chỉ IP của cả hai bảo mật chống vi-rút bảo mật internet của máy tính của bạn làm địa chỉ IP an toàn nếu được yêu cầu.
Cách tìm địa chỉ IP của PC Windows của bạn: Bắt đầu> (Chạy) nhập vào: cmd (Enter)
(Điều này sẽ mở dấu nhắc lệnh hộp đen)
nhập ipconfig (Enter)
Giả sử máy chủ web Apache hoặc IIS của bạn được cài đặt trên PC của bạn : 192.168.0.3
và bạn muốn truy cập máy chủ web bằng máy tính xách tay của mình. (IP của máy tính xách tay là 192.168.0.5)
Trên PC của bạn, bạn nhập: http: // localhost / bên trong trình duyệt Firefox hoặc Internet Eplorer để truy cập dữ liệu của bạn trên máy chủ web.
Trên máy tính xách tay của bạn, bạn nhập http://192.168.0.3/ để truy cập máy chủ web trên PC.
Để tất cả những thứ này hoạt động, bạn cần cài đặt đúng máy chủ web (ví dụ: IIS, Apache, XAMP, WAMP, v.v.).
Nếu nó không hoạt động, hãy thử ping PC từ máy tính xách tay của bạn:
Mở lệnh propmt trên máy tính xách tay của bạn: Bắt đầu> cmd (Enter)
ping 192.168.1.3 (Enter)
Nếu ping không thành công, tường lửa sẽ chặn kết nối của bạn hoặc mạng của bạn Cáp bị lỗi. Khởi động lại modem hoặc chuyển đổi mạng và máy của bạn.
Đóng các chương trình như chương trình trò chuyện đang sử dụng cổng của bạn.
Bạn cũng có thể thử số cổng khác nhau: http: 192.168.0.3: 80 hoặc http: 192.168.0.3: 81 hoặc bất kỳ số ngẫu nhiên nào ở cuối
Đây là một lưu ý phụ nếu người ta vẫn không thể truy cập localhost từ các thiết bị khác sau khi làm theo các bước trên. Điều này có thể là do các apache port.conf đã được cấu hình để phục vụ cục bộ (127.0.0.1) và không ở bên ngoài.
kiểm tra như sau, (đối với Ubuntu apache2)
$ cat /etc/apache2/ports.conf
nếu sau đây được đặt,
NameVirtualHost *:80
Listen 127.0.0.1:80
sau đó thay đổi nó trở lại giá trị mặc định
NameVirtualHost *:80
Listen 80
Nếu bạn đang ở trên Windows, hãy sử dụng ipconfig để lấy địa chỉ IPv4 cục bộ và sau đó chỉ định trong tệp cấu hình Apache của bạn: httpd.conf , như:
Listen: 10.20.30.40:80
Khởi động lại máy chủ Apache của bạn và kiểm tra nó từ máy tính khác trên mạng.