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 代表模块 httphttp包 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 上静态文件的“临时网络服务器”?的主要内容,如果未能解决你的问题,请参考以下文章

linux上的文件服务

npm-全局工具编写注意事项

Linux系统 | 介绍篇

R语言的R包及其使用

快速搭建本地HTTP服务器

django -静态文件能加载进入,但是在页面上却显示不出来