如果想建立一個簡單靜態檔案或目錄伺服器,通常可以用 Python 實現,而且非常簡單
# Python 2
python -m SimpleHTTPServer <port>
# Python 3
python3 -m http.server <port>
一般情況下,這就夠用了,但如果這樣的伺服器在瀏覽器提供的介面有些簡陋,而且不提供認證服務。更復雜
的實現方法是使用 Nginx,但 Nginx 的配置相對繁瑣,這裡推薦一個使用 Rust 基於 Actix
框架實現靜態檔案或資料夾伺服器 miniserve,demo如下
除了更加漂亮的介面和基本使用者認證外 miniserve 還支援如下功能
- 將當前資料夾壓縮後下載
- 介面上傳檔案(可配置)
- 支援監聽多網路卡
- 自動更改 MIME
- 超級快(powered by Rust and Actix)
下載
在發行版介面找到作業系統對應的版本,檔案很小,最大的 osx 也僅有 3.2MB。
Linux
sudo curl -L https://github.com/svenstaro/miniserve/releases/download/v0.4.1/miniserve-linux-x86_64 -o /usr/local/bin/miniserve
sudo chmod +x /usr/local/bin/miniserve
OSX
sudo curl -L https://github.com/svenstaro/miniserve/releases/download/v0.4.1/miniserve-osx-x86_64 -o /usr/local/bin/miniserve
sudo chmod +x /usr/local/bin/miniserve
Windows
windows 下載好 exe 檔案可直接執行
Cargo
如果電腦上安裝了 Rust 和 Cargo,也可以通過 Cargo 安裝,但由於 miniserve
僅支援 nightly channel,所以你得先切換到 nightly channel
rustup add toolchain nightly
rustup default nightly
cargo install miniserve
Docker
miniserve 在 docker hub 上的映象名為 svenstaro/miniserve
docker pull svenstaro/miniserve
使用
全部引數如下
miniserve --help
miniserve 0.4.1
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:
-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
--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 (username:password)
-c, --color-scheme <color_scheme> Default color scheme [default: Squirrel] [possible values:
Archlinux, Zenburn, Monokai, Squirrel]
-i, --if <interfaces>... Interface to listen on
-p, --port <port> Port to use [default: 8080]
ARGS:
<PATH> Which path to serve
服務某個資料夾
miniserve some_dir
服務單個檔案
miniserve file
啟用使用者認證
--auth user:passwd
可以提供簡單使用者認證服務
miniserve --auth joe:123 some_dir
在根目錄後新增隨機6位URL
miniserve -i 192.168.0.1 --random-route some_dir
# 伺服器URL為 http://192.168.0.1/c78b6
繫結多張網路卡
miniserve -i 192.168.0.1 -i 10.13.37.10 -i ::1 some_dir
使用容器
# 後臺執行
docker run -d --name miniserve -p 8080:8080 --rm svenstaro/miniserve some_dir
# 前臺執行
docker run --it --name miniserve -p 8080:8080 --rm svenstaro/miniserve some_dir
知乎專欄:miniserve 簡單美觀的檔案伺服器 - PrivateRookie的文章 - 知乎
Github 部落格:miniserve 簡單美觀的檔案伺服器