6个版本 (3个重大变更)
使用旧的Rust 2015
0.4.1 | 2016年8月3日 |
---|---|
0.4.0 | 2016年8月3日 |
0.3.1 | 2016年7月9日 |
0.2.0 | 2016年7月7日 |
0.1.0 | 2016年7月7日 |
#367 in #web-server
55 每月下载次数
2.5MB
623 行
包含 (ELF exe/lib, 3.5MB) wesers
wesers - 用Rust编写的简单HTTP/HTTPS服务器
// 127.0.0.1 - - [03/Aug/2016 12:15:30] "GET /favicon.ico HTTP/1.1" 404 -
需要请求时间和HTTP版本
目录
安装
(您需要使用nightly编译,现在)
如果您想从源代码构建,请确保您正在使用nightly工具链!
不支持HTTPS
使用以下方法安装
cargo install --git https://github.com/wdv4758h/wesers
或
cargo install --git https://github.com/wdv4758h/wesers --tag v0.4.1
如果您想下载预构建的二进制文件,可以访问GitHub的发布页面
支持HTTPS
使用以下方法安装
cargo install --git https://github.com/wdv4758h/wesers --features https
或
cargo install --git https://github.com/wdv4758h/wesers --tag v0.4.1 --features https
用法
$ wesers --help wesers 0.4.1 Chiu-Hsiang Hsu <[email protected]> a simple HTTP/HTTPS server in Rust USAGE: wesers [FLAGS] [OPTIONS] FLAGS: -h, --help Prints help information --https use HTTPS instead of HTTP -V, --version Prints version information OPTIONS: --cert <cert> SSL certificate file (needed for HTTPS) --index <index> auto detect index.html [default: true] --ip <ip> binding IP [default: 127.0.0.1] --key <key> SSL key file (needed for HTTPS) --port <port> binding port [default: 8000] --root <root> root directory [default: .] --template <template> HTML template path
运行
$ wesers Simple HTTP Server running on http://127.0.0.1:8000/ 127.0.0.1:54400 GET http://127.0.0.1:8000/ -> 200 OK (0.268528 ms)
使用自定义地址和HTML模板运行
$ wesers --ip 127.0.0.1 --port 8080 --template ./custom.mustache Simple HTTP Server running on http://127.0.0.1:8080/
以HTTPS运行
$ wesers --https --cert mycert.pem --key mykey.pem Simple HTTP Server running on https://127.0.0.1:8000/
二进制大小
x86_64 Linux
文件名 | 版本 | 剥离? | 大小(字节) | 大小(MB) |
wesers | v0.4.1 | 否 | 3573904 | 3.5M |
wesers | v0.4.1 | 是 | 2769832 | 2.7M |
基准测试
这是一个通过Herd(只是一个简单的测试,并不能说明很多)进行的简单负载测试
# Running both herd and wesers on Intel Core i5-2400 with 4GB RAM $ ./target/release/herd -t 4 -r 1000 http://127.0.0.1:8000 ... Spawning virtual user 1 ... Spawning virtual user 3 ... I made a total of 4000 requests, the mean response time was: 0.00042591915919911117 seconds.
变更日志
尚未实现(计划)
- 更多文件信息(类型、大小、最后修改时间)
- 更多文档
- 二维码支持
- 可选用户目录
- 支持限制请求次数
- 文件和目录的RESTful API
- 可以作为CGI服务器运行
- 模板实时刷新
- 处理POST上传文件
- Android支持
- 更多模板引擎支持
- 修复所有由linter(例如clippy)发现的错误
- 代码重构以提高性能
- 减少二进制大小
- Unicode URL支持(问题https://github.com/iron/staticfile/issues/76)
- HTTP2支持
v0.4.1 (2016-08-03)
修复
- HTTPS构建
v0.4.0 (2016-08-03)
特性
- 记录客户端IP
- 更新所有依赖项
v0.3.1 (2016-07-09)
修复
- 使HTTPS可选(因为OpenSSL的依赖关系)
v0.3.0 (2016-07-08)
特性
- 支持自定义HTML模板(使用mustache)
- 支持自定义根目录
- 支持HTTPS(使用OpenSSL)
v0.2.0 (2016-07-08)
特性
- 使用clap的Bash完成
- 可选的index.html检测
- 更好地处理404错误
v0.1.0 (2016-07-07)
特性
- 提供静态文件服务
- 列出目录中的文件
注意
我仅在x86_64 Linux上进行了测试。其他平台由CI构建。如果它们不能正常工作,请告诉我。
开发
发布制作
- 在src/arguments.yml
- 在Cargo.toml
- 在Cargo.lock
- 添加git标签
共享库依赖
x86_64, Linux, 不使用HTTPS
$ ldd ./target/release/wesers linux-vdso.so.1 (0x00007fff05f4c000) libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f1531e71000) libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f1531c54000) libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f1531a3e000) libc.so.6 => /usr/lib/libc.so.6 (0x00007f153169d000) /lib64/ld-linux-x86-64.so.2 (0x00007f1532075000)
x86_64, Linux, 使用HTTPS
$ ldd ./target/release/wesers linux-vdso.so.1 (0x00007fffdbe85000) libssl.so.1.0.0 => /usr/lib/libssl.so.1.0.0 (0x00007f168b810000) libcrypto.so.1.0.0 => /usr/lib/libcrypto.so.1.0.0 (0x00007f168b399000) libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f168b195000) libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f168af78000) libgcc_s.so.1 => /usr/lib/libgcc_s.so.1 (0x00007f168ad62000) libc.so.6 => /usr/lib/libc.so.6 (0x00007f168a9c1000) /lib64/ld-linux-x86-64.so.2 (0x00007f168ba81000)
x86_64, Linux, musl, 不使用HTTPS
$ ldd ./target/x86_64-unknown-linux-musl/release/wesers not a dynamic executable
x86_64, Linux, musl, 使用HTTPS
$ ldd ./target/x86_64-unknown-linux-musl/release/wesers linux-vdso.so.1 (0x00007ffc55496000) libssl.so.1.0.0 => /usr/lib/libssl.so.1.0.0 (0x00007f69cb9c8000) libcrypto.so.1.0.0 => /usr/lib/libcrypto.so.1.0.0 (0x00007f69cb551000) libc.so.6 => /usr/lib/libc.so.6 (0x00007f69cb1b0000) libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f69cafac000) /lib/ld64.so.1 (0x00007f69cbc39000)
特别感谢
- rust-everywhere 用于CI集成
- clap-rs 用于参数解析
- iron 用于Rust Web框架
- mustache 用于HTML模板
- Rust团队
- 以及我使用的每个项目
许可
wesers遵循AGPL许可协议 - 详细信息请参阅LICENSE文件
依赖
~5.5–7.5MB
~165K SLoC