因为当你真的只是想通过HTTP服务一些文件,现在!

迷你服务器是一个小型的、自成一体的跨平台 CLI 工具,允许您只需抓住二进制文件并通过 HTTP 提供一些文件。有时,这只是比正确行事更实际、更快的方法。

文件服务

简单的 HTTP 文件服务,可以把本地的文件暴露到局域网上。
https://github.com/svenstaro/miniserve/
https://github.com/nanmu42/dsf


如何使用

提供目录:

miniserve linux-distro-collection/

提供单个文件:

miniserve linux-distro.iso

需要用户名/密码:

miniserve --auth joe:123 unreleased-linux-distros/

要求用户名/密码作为哈希:

pw=$(echo -n "123" | sha256sum | cut -f 1 -d ' ')
miniserve --auth joe:sha256:$pw unreleased-linux-distros/

生成随机的 6 六角形 URL:

miniserve -i 192.168.0.1 --random-route /tmp
# Serving path /private/tmp at http://192.168.0.1/c789b6

绑定到多个接口:

miniserve -i 192.168.0.1 -i 10.13.37.10 -i ::1 /tmp/myshare

使用:curl

# in one terminal
miniserve -u .
# in another terminal
curl -F "path=@$FILE" http://localhost:8080/upload\?path\=/

(文件的路径在哪里。这使用迷你服务的默认端口 8080)$FILE

特征

  • 易于使用
  • 只是工作:正确的MIME类型处理开箱即用
  • 无需额外依赖的单二进制
  • 使用用户名和密码(以及哈希密码)进行身份验证支持
  • 超级快速和高度平行(感谢Actix)
  • 文件夹下载(在飞行中压缩为或.tar.gz.zip)
  • 文件上传
  • 漂亮的主题(与光明和黑暗的主题支持)
  • 扫描 QR 代码以快速访问
  • 壳牌完成
  • 安全和安全默认

用法

miniserve 0.14.0
Sven-Hendrik Haase <svenstaro@gmail.com>, Boastful Squirrel <boastful.squirrel@gmail.com>
For when you really just want to serve some files over HTTP right now!

USAGE:
    miniserve [FLAGS] [OPTIONS] [--] [PATH]

FLAGS:
    -D, --dirs-first
            List directories first

    -r, --enable-tar
            Enable uncompressed tar archive generation

    -g, --enable-tar-gz
            Enable gz-compressed tar archive generation

    -z, --enable-zip
            Enable zip archive generation

            WARNING: Zipping large directories can result in out-of-memory exception because zip generation is done in
            memory and cannot be sent on the fly
    -u, --upload-files
            Enable file uploading

    -h, --help
            Prints help information

    -P, --no-symlinks
            Do not follow symbolic links

    -o, --overwrite-files
            Enable overriding existing files during file upload

    -q, --qrcode
            Enable QR code display

        --random-route
            Generate a random 6-hexdigit route

    -V, --version
            Prints version information

    -v, --verbose
            Be verbose, includes emitting access logs


OPTIONS:
    -a, --auth <auth>...
            Set authentication. Currently supported formats: username:password, username:sha256:hash,
            username:sha512:hash (e.g. joe:123,
            joe:sha256:a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3)
    -c, --color-scheme <color-scheme>
            Default color scheme [default: squirrel]  [possible values: squirrel, archlinux,
            zenburn, monokai]
    -d, --color-scheme-dark <color-scheme-dark>
            Default color scheme [default: archlinux]  [possible values: squirrel, archlinux,
            zenburn, monokai]
        --header <header>...
            Set custom header for responses
        --index <index_file>
            The name of a directory index file to serve, like "index.html"

            Normally, when miniserve serves a directory, it creates a listing for that directory. However, if a
            directory contains this file, miniserve will serve that file instead.
    -i, --interfaces <interfaces>...
            Interface to listen on

    -p, --port <port>
            Port to use [default: 8080]

        --print-completions <shell>
            Generate completion file for a shell [possible values: zsh, bash, fish,
            powershell, elvish]
    -t, --title <title>
            Shown instead of host in page title and heading


ARGS:
    <PATH>
            Which path to serve

如何安装

Packaging status

在Linux上:从发布页面下载并运行miniserve-linux

chmod +x miniserve-linux
./miniserve-linux

或者,如果你是在拱门Linux,你可以做

pacman -S miniserve

在 OSX上: 从发布页面下载并运行miniserve-osx

chmod +x miniserve-osx
./miniserve-osx

或者安装与自制

brew install miniserve
miniserve

在 Windows上: 从发布页面下载并运行miniserve-win.exe

miniserve-win.exe

与货物:确保你有一个最新版本的锈。然后你可以运行

cargo install miniserve
miniserve

与码头工人:如果您喜欢使用Docker来做这件事,就跑

docker run -v /tmp:/tmp -p 8080:8080 --rm -it svenstaro/miniserve /tmp

壳牌完成

如果您想使用内置外壳完成支持,则需要运行并将完成放在壳体的正确位置。下面提供了一些具有常见路径的示例:miniserve --print-completions <your-shell>

# For bash
miniserve --print-completions bash > ~/.local/share/bash-completion/miniserve
# For zsh
miniserve --print-completions zsh > /usr/local/share/zsh/site-functions/_miniserve
# For fish
miniserve --print-completions fish > ~/.config/fish/completions/miniserve.fish

系统

可在 中找到硬化的系统兼容单元文件。您可以在这样的特定服务路径上安装此以启动并启用为"daemon":packaging/miniserve@.service/etc/systemd/system/miniserve@.serviceminiserve/my/serve/path

systemctl enable --now miniserve@-my-serve-path

请记住,您必须使用才能正确地逃避此用途的路径。systemd-escape

如果您想要自定义小型服务启动的特定标志,您可以使用

systemctl edit miniserve@-my-serve-path

并将部分设置在生成的文件中。例如:[Service]override.conf

[Service]
ExecStart=/usr/bin/miniserve --enable-tar --enable-zip --no-symlinks --verbose -i ::1 -p 1234 --title hello --color-scheme monokai --color-scheme-dark monokai -- %I

请确保将最终保留到位,否则可能会提供错误的路径。您可能还需要覆盖,如果您计划将迷你服务直接在公共界面上提供。%IIPAddressAllowIPAddressDeny

绑定行为

出于方便的原因,迷你服务将尝试在默认情况下绑定所有接口(如果未提供)。它也将这样做,如果明确提供或。在上述所有情况下,它将结合IPv4和IPv6。如果提供明确的非默认界面,则只能与该接口绑定。您可以同时提供多次绑定到多个接口。-i-i 0.0.0.0-i ::-i

为什么要将此用于替代方案?

  • 黑暗:在Windows上不容易获得,它并不像下载和去容易。
  • Python 内置网络服务器:需要安装 Python,性能低,在某些情况下也不会进行正确的 MIME 类型处理。
  • 网猫:使用和发送目录不太方便。

释放

这主要是一个说明,我如何释放这个东西:

  • 确保是最新的。CHANGELOG.md
  • cargo release --dry-run <version>
  • cargo release <version>
  • 发布将通过吉图布操作自动部署。
  • 码头图像将由码头工人中心自动构建。

点赞(0) 打赏

Comment list 共有 0 条评论

暂无评论

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部