【问题标题】:"Ad-hoc webserver" for static files on UNIX/MacOSX?UNIX/MacOS 上静态文件的“临时网络服务器”?
【发布时间】:2011-04-17 12:58:57
【问题描述】:

有没有我可以从命令行调用的小型网络服务器之类的东西,它只是从本地文件系统中获取文件并通过特定端口上的 HTTP 服务它们?

我希望能够做这样的事情:

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

这应该会启动一个监听 10.0.1.1:8080 并从当前目录(“.”)提供文件的网络服务器——不需要 PHP、ASP 或任何其他东西。

非常感谢任何建议。

【问题讨论】:

    标签: macos http unix webserver localhost


    【解决方案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 在启动时启动的,因此您只需设置一次,它就会一直启动。不需要命令或阻塞的终端窗口。
        • 并且“网络共享”只有在您拥有操作系统的服务器版本时才可用
        猜你喜欢
        • 2011-08-21
        • 1970-01-01
        • 1970-01-01
        • 2021-01-21
        • 1970-01-01
        • 2014-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多