#actix #http #server #web-server

app thttp

使用 Rust + Actix 编写的简约静态 Web 服务器

1 个不稳定版本

0.1.1 2020 年 4 月 10 日

#173 in #actix

MIT/Apache

16KB
100

thttp

使用 Rust + Actix 编写的简约静态 Web 服务器/文件服务器

警告:不要在生产环境中使用,它仅适用于开发!

用法

thhtp 默认审计当前 (.) 目录,在 0.0.0.0:5050) 上提供服务。

USAGE:
    thttp [OPTIONS] [dir]

FLAGS:
        --help       Prints help information
    -V, --version    Prints version information

OPTIONS:
    -h, --host <host>      Server Host [env: THTTP_HOST=]  [default: 0.0.0.0]
    -i, --index <index>    FIle to use as index [env: THTTP_INDEX=]  [default: index.html]
    -p, --port <port>      Server Port [env: THTTP_PORT=]  [default: 5050]

ARGS:
    <dir>    Serving directory file [default: . ] [env: THTTP_DIR=]

可以指定环境变量或 .env 文件中的选项,用于在 dockerized 图像中使用

构建 & 运行

常规 cargo 组合

cargo build --release
cargo run

发布版本创建在 target/release/

请注意,为了将参数传递给 cargo run,您必须在 cargo runthttp 参数之间注入双横线 (--)。例如

cargo run -- -i readme.html -h 127.0.0.1 -p 7000 ./static

服务器使用 CTRL+C 停止

原理

它总是从需求开始:在这种情况下,为了将所有 dev 栈移植到 Rust。在开发 WASM 应用程序时,我发现自己总是使用 http python 模块,使用 python3 -m "http.server" "8080",以便测试应用程序的输出。这个工具是一个穷人的替代品,但它完成了它的任务。此外,如果需要,我可以扩展它。

行为

thttp 可执行文件将首先通过 listenfd 寻找一个套接字,如果不存在,它将正常监听 .

这在生产环境中很有用,当使用 cargo-watch 时。只需将其与 systemfd 结合使用即可。

systemfd --no-pid -s http::0.0.0.0:5050 -- cargo watch -x run

另请参阅关于该问题的Actix文档

待办(可能)

使用cargo-watch监控项目文件是很好的,但当不需要时,thttp缺少监控文件系统并在任何更改时自动重新加载的功能。这将是开发的一个很好的下一步。

许可证

MIT或Apache-2.0

依赖项

~30MB
~621K SLoC