2010-09-26 34 views
38

Có một thứ như một máy chủ web nhỏ bé mà tôi có thể gọi từ dòng lệnh vừa tải các tệp từ hệ thống tệp cục bộ và phục vụ chúng qua HTTP trên cổng cụ thể không?"Ad-hoc webserver" cho các tệp tĩnh trên UNIX/MacOSX?

Tôi muốn để có thể làm điều gì đó như thế này:

$ cd ~/Sites/mysite 
$ serve . 10.0.1.1 8080 

này nên cháy lên một máy chủ web mà lắng nghe trên 10.0.1.1:8080 và phục vụ tập tin từ thư mục hiện hành ("") - không cần PHP, ASP hoặc bất kỳ thứ gì trong số đó.

Bất kỳ đề xuất nào được đánh giá cao.

Trả lời

67

Nếu bạn đã cài đặt python:

$ python -m SimpleHTTPServer 
Serving HTTP on 0.0.0.0 port 8000 ... 
+1

Tôi không chắc chắn, nhưng là python không phải là một phần của hệ thống cốt lõi, tức là luôn luôn được cài đặt (tốt, ít nhất là cho Mac OS X 10.5+ Tôi nghĩ rằng, thậm chí có thể sớm hơn)? – Archimedix

+0

Hoàn hảo! Cảm ơn rất nhiều! – philippbosch

+0

Nó không phải là, nhưng ông đã không nói nó phải là một phần của hệ thống cốt lõi. Ngoài ra, nhiều linux đi kèm với python cài đặt, nơi lệnh này sẽ làm việc. –

5

$ python -m SimpleHTTPServer [port]

sẽ bắt đầu một máy chủ web trong thư mục hiện phục vụ bất cứ tập tin được tìm thấy ở đó. Trong một vài trường hợp, thao tác này sẽ không hoạt động tốt, ví dụ máy chủ đơn luồng (do đó không tải xuống đồng thời) và không xử lý yêu cầu phạm vi byte (khách hàng mong đợi Phạm vi: hỗ trợ thường không thành công).

2

Apache HTTPD được tích hợp vào Mac OS X - chỉ cần bật 'Chia sẻ web' trong Tùy chọn chia sẻ.

Để làm cho nó cũng hoạt động trên cổng 8080, bạn cần phải thêm một số cấu hình. Xem này article on Serverfault cho điểm bắt đầu.

+0

Apache có thể nặng hơn 'hơn OP đang tìm kiếm, nhưng hoàn toàn là cách đơn giản nhất để thực hiện nó bằng cách sử dụng các công cụ tích hợp sẵn, đặc biệt nếu các tệp của bạn nằm trong đường dẫn ~/Sites. – JulesLt

+0

Xác định "đơn giản nhất".Đối với tôi, trong khi tôi đã ở trong thư mục mà tôi muốn phục vụ, việc thực hiện dòng python nói trên đơn giản hơn nhiều so với việc sử dụng System X System Preferences, Sharing,… – dmkc

+0

@dmkc Để chơi người ủng hộ ma quỷ, apache được khởi chạy bởi 'launchctl' lúc khởi động và vì vậy bạn thiết lập nó một lần và nó luôn luôn lên. Không cần lệnh hoặc cửa sổ đầu cuối bị chặn. – srquinn

2

Python3 có thể phục vụ thư mục hiện hành thông qua HTTP sử dụng http.server:

$ python3 -m http.server 

đâu

  • python3 phiên bản hiện tại của python
  • -m đứng cho module
  • http gói http
  • http.server module máy chủ (của gói http)

mỗi mặc định, http.server lắng nghe trên cổng 8000, nhưng bạn có thể chỉ định khác như thế này:

$ python3 -m http.server 8080 
Các vấn đề liên quan