1. 一行命令
标准库就有,不用 pip install。在要发布的目录外执行:
python3 -m http.server 8877 --directory raw_html
终端出现 Serving HTTP on ... port 8877 就成功了。浏览器打开 http://127.0.0.1:8877/。停掉服务按 Ctrl + C。
不写端口时,默认是 8000:
python3 -m http.server
这时会把当前工作目录整棵树都挂出去。
2. 指定目录
--directory(短写 -d)决定网站根。上面那条会把 raw_html/ 当成 /,所以 raw_html/index.html 对应 http://127.0.0.1:8877/index.html,不必先 cd 进去。
# 等价:先进入目录再启动
cd raw_html
python3 -m http.server 8877
目录里有 index.html 时,访问 / 会自动落到它;没有则列出文件清单。
3. 端口和绑定地址
默认只听本机。手机、另一台电脑要访问,需要绑到所有网卡:
python3 -m http.server 8877 --bind 0.0.0.0 --directory raw_html
--bind 127.0.0.1 只给本机;0.0.0.0 局域网可见。端口被占用就换一个,例如 9000。
4. 怎么访问
| 从哪打开 | 地址 |
|---|---|
| 本机浏览器 | http://127.0.0.1:8877/ 或 http://localhost:8877/ |
| 同一 Wi-Fi 的手机 | http://本机局域网IP:8877/,并加 --bind 0.0.0.0 |
本机 IP 可看 ipconfig getifaddr en0(macOS)或 hostname -I(Linux)。防火墙拦了入站,对面会连不上。
5. 几个容易踩的点
- 改了 HTML 后刷新即可,一般不用重启进程;CSS / JS 被浏览器缓存时用强制刷新。
- 路径按网站根算,不要写成
file://那套绝对盘符。 - 它会列出目录。目录里有
.env、私钥、笔记原稿,就不要把整仓当根目录,用--directory只挂发布目录。 - Python 2 对应的是
python -m SimpleHTTPServer,语法不同。现在用 Python 3。
6. 不要拿去上生产
这个服务是给本地预览用的:单线程、没有鉴权、没有压缩和缓存策略,也不适合扛并发。线上静态站用 Nginx、Caddy,或仓库里现成的 upload.sh / Pages。
要自己写接口、上传文件、上生产进程,走 Flask HTTP 服务器,不要在 http.server 上叠业务。