2010-05-25 4255 views
16

Tôi đang cố truy cập máy chủ Django của mình từ một máy tính khác trên cùng một mạng. Tôi đã thiết lập máy chủ của mình và có thể xem mọi thứ chính xác bằng cách sử dụng python manage.py runserver và chuyển đến http://127.0.0.1:8000 nhưng khi tôi cố gắng sử dụng python manage.py runserver 0.0.0.0:80, tôi không thể xem trang Django của mình từ một máy tính khác. Máy tính lưu trữ máy chủ Django có mạng nội bộ IP 192.168.1.146. Trên máy tính phụ của tôi, tôi khởi động trình duyệt và thử truy cập http://192.168.1.146:80 để không có kết quả. Tôi cũng đã chuyển tiếp cổng 80 (và tôi cũng đã cố gắng 8000) cũng không có kết quả: (HELP!Django 0.0.0.0:80; không thể truy cập từ xa

Trả lời

31

Tôi có cùng một câu hỏi trên máy tính Windows và bắt đầu máy chủ Django với python manage.py runserver 192.168.1.146:80, thay vì 0.0.0.0. (Tôi đã sử dụng một địa chỉ IP khác nhau của khóa học).

Sau đó, hộp thoại Tường lửa Windows xuất hiện và hỏi xem tôi có nên mở khóa cổng (có) hay không. Các máy tính khác trong mạng LAN sau đó có thể truy cập máy chủ Django bằng cách sử dụng 192.168.1.146:80.

2

Nghe có vẻ như đó là sự cố tường lửa. Bạn có chắc chắn mở cổng 80 trên máy chủ của mình không.

+3

đây thực sự là vấn đề của tôi. Đối với người dùng Linux, bạn cần phải cho phép cổng 8000 hoặc bất kỳ cổng nào bạn đang phục vụ khi sử dụng lệnh như 'sudo ufw cho phép 8000/tcp' – oat

+0

@tao Điều đó giải quyết được vấn đề của tôi. Cảm ơn. –

+0

@tao Cảm ơn. bạn nên đăng bài đó như một câu trả lời. –

0

Từ đề cập đến cổng chuyển tiếp 80, có vẻ như máy tính thứ hai của bạn đang ở trên một mạng khác (bộ định tuyến) từ mạng đang chạy Django. Trong trường hợp đó, bạn nên duyệt đến IP của bộ định tuyến của mạng Django - địa chỉ 192.168 chỉ hiển thị từ phía sau bộ định tuyến đó và cổng chuyển tiếp sẽ đảm bảo rằng yêu cầu của bạn được chuyển đến đúng máy.

0

hệ điều hành nào bạn đang chạy trên? bạn đã thử cung cấp các đặc quyền root của lệnh chưa? (Giả sử bạn đang chạy nó trên ubuntu/linux)

thử chạy này thay vì:

sudo python manage.py runserver 0.0.0.0:80 
-3

Theo như tôi hiểu, 0.0.0.0 là một IP tuyến và không phục.

Nó sẽ chỉ hoạt động trên máy cục bộ, nếu bạn gắn một ổ cắm vào địa chỉ.

+0

Thực ra '0.0.0.0' có nghĩa là mọi IP có thể. Nó thực sự không thể định tuyến được, nhưng có ý nghĩa đặc biệt này. –

+0

0.0.0.0 có nghĩa là ràng buộc trên tất cả các giao diện. Vì vậy, tại địa phương nó sẽ liên kết với 127.0.0.1, và nó sẽ ràng buộc với bất kỳ giao diện trên bất kỳ thẻ. Nó cũng là một lựa chọn tốt nếu bạn đằng sau một NAT với các cổng chuyển tiếp NAT cho nó, như django wont nhầm lẫn về lý do tại sao nó được giải quyết với IP sai – Shayne

7

Để nó hoạt động được, tôi chạy sudo python manage.py runserver 0.0.0.0:80 trong thiết bị đầu cuối (Mac OS X 10.8.2), sau đó trong trình duyệt ipad (hoặc iphone), hãy truy cập http://[your địa chỉ IP] /. Tôi không phải làm điều này: Testing Django website on iphone

To find the IP address on a Mac

2

Khi chạy nó từ Ubuntu, nó nói cho phép từ chối khi tôi đã cố gắng để làm điều này:

python manage.py runserver 0.0.0.0:80 

Vì nó là một phép vấn đề sau đây hoạt động tốt như Ryan và gtujan nói.

sudo python manage.py runserver 0.0.0.0:80 

LƯU Ý: mà bạn đang chạy một máy chủ trên cổng 80, mà là một cổng HTTP. Vì vậy, khi nhập URL từ trình duyệt web của bạn, bạn không nhất thiết phải nhập ": 80" vào URL của mình.

http://192.168.1.146:80/ 

Sau đây là đủ. Ngay cả khi bạn gõ ": 80" thì cũng được coi là giống nhau.

http://192.168.1.146/ 

Tuy nhiên, đối với các số cổng khác như 8000, 8000, bắt buộc phải là một phần của URL.

Các vấn đề liên quan