UNIX/MacOS 上静态文件的“临时网络服务器”?
Posted
技术标签:
【中文标题】UNIX/MacOS 上静态文件的“临时网络服务器”?【英文标题】:"Ad-hoc webserver" for static files on UNIX/MacOSX? 【发布时间】:2011-04-17 12:58:57 【问题描述】:有没有我可以从命令行调用的小型网络服务器之类的东西,它只是从本地文件系统中获取文件并通过特定端口上的 HTTP 服务它们?
我希望能够做这样的事情:
$ cd ~/Sites/mysite
$ serve . 10.0.1.1 8080
这应该会启动一个监听 10.0.1.1:8080 并从当前目录(“.”)提供文件的网络服务器——不需要 php、ASP 或任何其他东西。
非常感谢任何建议。
【问题讨论】:
【参考方案1】:如果你安装了python:
$ python -m SimpleHTTPServer
Serving HTTP on 0.0.0.0 port 8000 ...
【讨论】:
我不确定,但 python 不是核心系统的一部分,即始终安装(好吧,至少对于 Mac OS X 10.5+ 我认为,甚至可能更早)? 不是,但他没有说它必须是核心系统的一部分。此外,许多 linux 都安装了 python,这个命令可以工作。 我刚刚又检查了一遍……显然 Mac 确实预装了 python,至少我的机器有。 注意,Python 3下名字有changed。【参考方案2】:$ python -m SimpleHTTPServer [port]
将在当前目录中启动一个网络服务器,为那里找到的任何文件提供服务。
在某些情况下,这不会很好地工作,例如服务器是单线程的(因此没有同时下载)并且不处理字节范围的请求(期望 Range: 支持的客户端经常失败)。
【讨论】:
【参考方案3】:Python3 可以使用 http.server 通过 HTTP 服务当前目录:
$ python3 -m http.server
在哪里
python3
当前python版本
-m
代表模块
http
http包
http.server
服务器模块(http 包的)
默认情况下,http.server 侦听端口 8000,但您可以像这样指定另一个:
$ python3 -m http.server 8080
【讨论】:
【参考方案4】:Apache HTTPD 内置于 Mac OS X - 只需在共享首选项中打开“网络共享”即可。
要使其在 8080 端口上也能正常工作,您需要添加一些配置。起点见article on Serverfault。
【讨论】:
Apache 可能比 OP 想要的“重”,但使用内置工具绝对是最简单的方法,尤其是当您的文件位于 ~/Sites 路径下时。 定义“最简单”。对我来说,虽然我已经在我想服务的目录中,但执行上述 python 行比进入 OS X 系统偏好设置、共享… @dmkc 为了扮演魔鬼的拥护者,apache 是由launchctl
在启动时启动的,因此您只需设置一次,它就会一直启动。不需要命令或阻塞的终端窗口。
并且“网络共享”只有在您拥有操作系统的服务器版本时才可用以上是关于UNIX/MacOS 上静态文件的“临时网络服务器”?的主要内容,如果未能解决你的问题,请参考以下文章